知识卡片
异地多活的数据同步只能追求最终一致性
内容
异地多活的本质是靠数据冗余换可用性,但”所有数据都实时同步”因光速和网络延迟物理上无法达成。可行策略有三种可组合使用:缩短机房物理距离;只同步核心数据,可重建的数据(如登录 session)不同步;采用最终一致性而非强一致性,不同数据按重要性接受不同的同步时延。发散:这体现了物理约束定义了设计问题的解空间边界,架构设计不是突破约束,而是在约束内做工程取舍。
参考来源
- 位置:《从0开始学架构》第34章《29|异地多活设计4大技巧》"技巧2:保证核心数据最终一致性"一节(源文件:_epub-src/OEBPS/Text/part0033_split_003.html)
- 结论依据:原文明确三种策略——"尽量减少数据同步,只同步核心业务相关的数据……用户登录所产生的token或者session信息……并不需要同步到其他业务中心,因为这些数据丢失后重新登录就可以再次获取了";"保证最终一致性,不保证实时一致性……正常情况下要求5分钟同步到所有机房即可,异常情况下甚至可以允许1小时或者1天后能够一致"。
- 原始内容:尽量减少数据同步,只同步核心业务相关的数据……用户登录所产生的token或者session信息,数据量很大,但其实并不需要同步到其他业务中心……保证最终一致性,不保证实时一致性……正常情况下要求5分钟同步到所有机房即可,异常情况下甚至可以允许1小时或者1天后能够一致。