知识卡片
强一致性数据无法承受跨城异地多活
内容
跨城异地要真正防灾,两机房必须离得足够远,但距离一远,网络延迟可能从几十毫秒飙升到几秒,数据同步必然出现不一致窗口。对余额这类强一致数据,一旦多点写入,网络分区期间用户可能利用不同步窗口重复操作造成资金损失。因此强一致数据只能停留在同城异区,无法做跨城异地多活;能容忍短暂不一致(登录状态、新闻)的数据才适合跨城。发散:这印证[[CAP决策粒度是数据而非系统]]——是否做异地多活也该按数据类型决策。
参考来源
- 位置:《从0开始学架构》第32章《28|业务高可用的保障:异地多活架构》"跨城异地"一节(源文件:_epub-src/OEBPS/Text/part0031_split_002.html)
- 结论依据:原文用完整案例说明:用户A余额10000元,广州机房转账5000元给B后广州侧余额变5000元,但网络中断未同步到北京,用户A在北京又转账10000元给C,再回广州转5000元给D,"最终,本来余额10000元的用户A,却转了20000元出去给其他用户",并总结"支付宝等金融相关的系统,对余额这类数据,一般不会做跨城异地的多活架构,而只能采用同城异区这种架构"。
- 原始内容:最终,本来余额10000元的用户A,却转了20000元出去给其他用户……正因为如此,支付宝等金融相关的系统,对余额这类数据,一般不会做跨城异地的多活架构,而只能采用同城异区这种架构。