知识卡片
多主复制的三大适用场景本质都是容忍长时间断连
内容
单个数据中心内部用多主复制很少划算,因为好处压不住复杂度代价,但有三类场景值得 用多主换取容忍”长时间断连”的能力。运维多个数据中心:单主配置下所有写入都要跨网络 打到主库所在的数据中心,多主配置下每个数据中心有自己的主库、写入本地处理、异地 数据中心间异步复制——性能上,数据中心间的网络延迟对用户变得透明;容灾上,某个 数据中心故障时其他数据中心能独立继续运行、故障恢复后自动追上;抗网络问题上, 数据中心间的公网连接天然不如内部网络可靠,异步复制的多主配置比单主同步链路更能 扛住临时网络中断。需要离线操作的客户端:比如多设备日历应用,每个设备本身就是一个 “数据中心”,充当本地领导者接受写入,设备之间用异步多主复制同步,复制延迟可能是 几小时甚至几天,取决于何时能联网——这和多数据中心场景在架构上本质相同,只是”数据 中心”换成了”设备”,网络连接更不可靠。协同编辑:多人同时编辑同一文档,如果要求先 拿锁才能编辑,本质等价于在领导者上做事务的单主复制;但为了加速协作、把改动粒度 做到按键级别并避免锁,就带来了多主复制的所有挑战,包括冲突解决。三类场景的共性是: 写入节点之间的连接天然是间歇性、不可靠的,用单主同步复制会让整个系统的可用性绑定 在这条脆弱的连接上,而多主复制允许每个节点在断连期间依然独立可用。
参考来源
- 位置:《数据密集型应用系统设计》第五章《复制》"多主复制的应用场景"(源文件:
_epub-src/ch5_split_003.html)
- 结论依据:原文分别说明运维多个数据中心场景下多主配置的性能/容灾/抗网络问题
优势、需要离线操作的客户端场景下每个设备作为本地领导者的多主复制、以及协同
编辑场景下加速协作带来的多主复制挑战,直接支撑本卡片对三类场景共性的归纳。
- 原始内容:在多活配置中,每个写操作都可以在本地数据中心进行处理……每个设备都
有一个充当领导者的本地数据库……复制延迟可能是几小时甚至几天……这种方法允许
多个用户同时进行编辑,但同时也带来了多领导者复制的所有挑战。