同步复制与异步复制

文章探讨了数据库复制中的同步和异步策略,同步复制确保数据在主从节点间的一致性但可能因节点故障导致阻塞,而异步复制允许更高的系统性能但可能丢失数据。半同步复制是两者之间的折衷方案。
摘要由CSDN通过智能技术生成

引言

       复制非常重要的一个设计选项是同步复制还是异步复制。对于关系数据库系统,同步或异步通常是一个可配置的选项;而其他系统则可能是硬性指定或者只能二选一。

同步复制

       主节点需等待直到从节点确认完成写入,然后才会向用户报告完成,并且将最新的写入对其他客户端可见。

        同步复制的优点是,一旦向用户确认,从节点可以明确保证完成了与主节点的更新同步,数据已经处于最新版本。万一主节点发生故障,总是可以在从节点继续访问最新数据。

缺点则是如果同步的从节点无法完成确认(例如从节点发生崩溃,或者网络故障,或其他原因),写入就不能视为成功。主节点会阻塞其后所有的写操作,直到同步副本确认完成。

       因此把所有从节点都配置为同步复制有些不太实际。因为这样的话,任何一个同步的节点的中断都会导致整个系统更新停滞不前。

半同步

实践中,如果数据库起用了同步复制,通常意味着其中某一个从节点是同步的,而其他节点则是异步模式。万一同步的从节点变得不可用或者性能下降,则将另一个异步的从节点提升为同步模式。这样就可以保证之前有两个节点(即一个主节点和一个同步从节点)拥有最新的数据副本。这种配置有时也被称为半同步。

异步复制

         主从复制还经常会被配置成为全异步模式。此时如果主节点发生失败且不可恢复,则所有尚未复制的从节点的写请求都会丢失。这意味着即使向客户端确认了写操作,却无法保证数据的持久化。但是全异步配置的优点是,不管从节点上数据多么滞后,主节点总是可以持续响应写请求,系统的吞吐性能更好。

        异步模式这种弱化的持久性听起来是一个非常不靠谱的折中设计,但是异步复制还是被广泛使用,特别是那些从节点数量巨大或者分布于广域地理环境。

       主节点发生故障时异步复制系统了可能会丢失数据,这是一个非常严重的问题,因此在保证数据不丢失的前提下,研究人员尝试了各种办法来提高复制性能与系统可用性。例如,链式复制是同步复制的一种变体,已经在一些系统中得以实现。

多副本一致性与共识之间有着密切的联系(即让多个节点对数据状态达成一致)

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值