《互联网产品的客户端架构·规模化与架构演进》3.3 动态配置与热更新的停止条件
热更新的难点不是把配置推下去,而是知道什么时候必须停下来。本节从一次凌晨配置推送引发的崩溃出发,给出默认、环境、实验三层配置的覆盖规则,确定性的灰度分桶,以及基于崩溃率、错误率与延迟的批次停止条件,并用可运行的 TypeScript 模块把停止判定写成代码。
tag
热更新的难点不是把配置推下去,而是知道什么时候必须停下来。本节从一次凌晨配置推送引发的崩溃出发,给出默认、环境、实验三层配置的覆盖规则,确定性的灰度分桶,以及基于崩溃率、错误率与延迟的批次停止条件,并用可运行的 TypeScript 模块把停止判定写成代码。
插件沙箱的目标不是让插件跑不起来,而是让它在越权时被拒绝、在崩溃时被隔离。本节从一次插件读取全盘文件、拖垮首页的事故出发,给出权限、作用域与配额的三层模型,用可运行的 TypeScript 模块实现最小授权审计、失败隔离与熔断,并说明每个阈值为什么必须按插件配置。
插件化不是把代码拆出去,而是先定义宿主与插件的契约边界。本节从三个宿主版本同时在线、插件清单失控的现场出发,给出插件 id、版本、宿主 API 区间与能力声明的校验模型,用可运行的 TypeScript 模块完成协议校验、兼容判定与责任划分,并说明哪些关注点必须留在宿主。