知识卡片

异地多活无法做到100%可用,只能忍受小概率损失

普通读书笔记卡 · 1680.c

内容

异地多活受光速、网络延迟等物理规律限制,不可能做到100%可用——为最后0.01%用户设计完美方案,往往让方案复杂到连99.99%的用户都保障不了。强一致性业务(如银行转账)甚至只能牺牲更多可用性换正确性,可用”记录申请、后台异步执行、失败可重试”模式变相支持多活。剩下无法覆盖的损失,靠公告、补偿、体验优化安抚,而非继续加码技术复杂度。发散:承认边界比死磕边界更专业,这是”没有免费午餐”的体现。

参考来源

- 位置:《从0开始学架构》第34章《29|异地多活设计4大技巧》"技巧4"一节(源文件:_epub-src/OEBPS/Text/part0033_split_006.html) - 结论依据:原文明确"异地多活也无法保证100%的业务可用……本来想为了保证最后的0.01%的用户的可用性,做一个完美方案,结果却发现99.99%的用户都保证不了了",并以银行转账为例说明强一致性业务"可以通过特殊的业务手段……即小明在上海业务中心提交转账请求……记录这个转账请求,然后后台异步发起真正的转账操作"。 - 原始内容:异地多活也无法保证100%的业务可用……本来想为了保证最后的0.01%的用户的可用性,做一个完美方案,结果却发现99.99%的用户都保证不了了……转账业务除了"实时转账"外,还提供"转账申请"业务……记录这个转账请求,然后后台异步发起真正的转账操作。