分布式存储系统学习笔记(一)—什么是分布式系统(3)—复制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kevin_zhao_zl/article/details/79197991

同一数据的多个副本中有一个称为主副本,其他称为备副本,由主副本将数据复制到备副本上。复制协议有两种,包括强同步复制和异步复制。二者的区别在于用户的写请求是否需要同步到备副本才返回成功。

1. 强同步复制中,客户端发送写请求给主副本,主副本记录在操作日志后将其同步到其他备副本,备副本回放操作日志,完成后通知主副本。当所有备副本都完成后,主副本返回写成功。

2. 异步复制中,当主副本写成功后即返回客户端写成功,主副本通过异步机制比如其他线程将写操作推送到其他副本。

3. 两个复制协议都是基于主副本的复制协议(primary-basedprotocol),协议要求任何时候都只有一个主副本,主副本失效需要通过Paxos协议选举新的主副本。

主副本之间的复制一般通过操作日志来完成。将客户端的写操作顺序写入磁盘,系统会积攒一定的操作日志再批量写入磁盘(成组提交)。当服务器故障后,需要回放操作日志恢复数据,效率之低令人难以忍受,这时候checkpoint技术应运而生,每次回放只需要回放检查点之后的操作日志。

除了基于主副本的复制协议,还有一种协议称之为NWR复制协议【副本数,写操作数,读操作数】。W+R>N即可保证读到的副本至少有一个是最新的。然而不同副本的操作顺序可能不一致。从多个副本读取时可能出现冲突。这种方式实际系统很少用。

【引申:Oracle数据库数据复制组件dataguard有三种模式—最大保护模式,最大性能模式,最大可用性模式】

猜你喜欢

转载自blog.csdn.net/kevin_zhao_zl/article/details/79197991