《互联网产品的客户端架构·规模化与架构演进》12.3 迁移的退出条件与回滚
迁移的终点不是新路径上线,而是旧路径被安全删除。本节给出流量、错误、数据一致与观察期四类退出判据,把回滚资产检查、宣布结束、宽限期与旧路径删除写成状态机函数,并说明每条判据的边界与反例:指标刚好达标算不算过,回滚资产存在但过期算不算就绪,以及删除后无法回滚的代价。
tag
迁移的终点不是新路径上线,而是旧路径被安全删除。本节给出流量、错误、数据一致与观察期四类退出判据,把回滚资产检查、宣布结束、宽限期与旧路径删除写成状态机函数,并说明每条判据的边界与反例:指标刚好达标算不算过,回滚资产存在但过期算不算就绪,以及删除后无法回滚的代价。
双写不是把同一份数据写两遍就结束,真正决定成败的是写入顺序、次写失败后的降级、双读比对口径,以及兼容窗口何时关闭。本节把顺序、差异率、窗口状态与到期决策写成纯函数,用可复现的样本回答两个问题:数据到底差多少,旧路径什么时候可以删,以及删除之前还需要哪些证据。
绞杀者替换的关键不是一次删掉旧代码,而是让新旧路径同时存在,并按用户、端与功能分桶逐步放量。本节把路由比例、白名单与 holdback、确定性哈希、接管进度和回退写成可测试的纯函数,让每一次请求都能解释自己为什么走新路径或旧路径,也说明如何判断迁移是否真正完成。