DDIA 读书分享会,会逐章进行分享,结合我在工业界分布式存储和数据库的一些经验,补充一些细节。每两周左右分享一次,欢迎加入,网站在这里[1]。我们有个对应的分布式&数据库讨论群,每次分享前会在群里通知。如想加入,可以加我的微信号:qtmuniao,简单自我介绍下,并注明:分布式系统群。
复制滞后问题
如前所述,使用多副本的好处有:
-
可用性:容忍部分节点故障
-
可伸缩性:增加读副本处理更多读请求
-
低延迟:让用户选择一个就近的副本访问
引出
对于读多写少的场景,想象中,可以通过使劲增加读副本来均摊流量。但有个隐含的条件是,多副本建的同步得做成异步的,否则,读副本一多,某些副本就很容易出故障,进而阻塞写入。
但若是异步复制,就会引入不一致问题:某些副本进度落后于主副本。
如果此时不再有写入,经过一段时间后,多副本最终会达到一致:最终一致性。
在实际中,网络通常比较快,**副本滞后(replication lag)**不太久,也即这个_最终_通常不会太久,比如 ms 级别,最多 s 级别