分布式系统之 数据复制

2022-09-11  本文已影响0人  wayyyy

复制的主要好处有:

  1. 增强数据的可用性和安全性,复制实现了数据的备份。
  2. 减少往返时间,复制技术可以把数据存储到各个数据中心,可以将用户的请求定向到最近的用户中心。
  3. 增加吞吐量,一台服务器能够处理的请求存在物理上限,通过复制可以提供更多处理读写请求的机器,系统的处理性能能够成倍增长。
单主复制

单主复制也叫做主从复制或主从同步,指定系统中的一个副本为主节点,客户端的写请求必须发送到主节点,其余的副本称为从节点,从节点只能处理读请求,并从主节点同步最新的数据。

主节点收到写请求时,除了将数据写入本地存储之外,还要负责将这次数据变更同步到所有从节点,以确保所有的副本数据保持一致。

数据变更同步具体是同步操作日志还是转发请求,不同的系统有着不同的实现。

根据系统以何种方式同步数据,又可将单主复制分为三类:同步复制,半同步复制,异步复制。

总的说来单主复制,主要优点有:

主要缺点有:

单主复制是最常见,且最为广泛使用的一种复制方式。

多主复制

单主复制由于主节点只有1个,在写性能,可扩展性方面存在局限性。对于写请求负载要求严格的系统,一个自然的想法是增加多个主节点来分担写请求的负载,这种由多个节点充当主节点的数据复制方式就是多主复制。

多主复制.png

多主复制和单主复制的显著区别是:由于多主复制不止一个节点处理写请求,且网络存在延迟,这就意味着节点可能会对某些请求的正确顺序产生分歧。

冲突场景.png

其实数据冲突在单主复制中也会出现,只不过单主复制的数据冲突通常直接以主节点的数据作为最终数据。

为了解决这一问题,最先考虑的是有没有办法能够避免产生冲突:

如果冲突无法避免,那只有解决冲突了,按照系统特性,解决冲突的方法有:

总的说来多主复制,主要优点有:

主要缺点有:

多主复制带来的复杂性远程它的好处,因此一般很少在单个数据中心使用多主复制,多主复制一般用于多个数据中心的存储系统。

无主复制

无主复制指的是完全没有主节点,尽管无主技术在几十年前就出现了,但直到亚马逊发布了 Dynamo 架构的论文,并在其中使用了无主复制,才让该技术重新引起广泛关注。

无主复制的基本思想是,客户端不仅向一个节点发送写请求,而是将请求发送多个节点,在某些情况下甚至会发送给所有节点。一旦得到其中一些节点的确认响应,就认为这次写成功了,然后继续发送下一个请求。

无主复制.png

但是,在无主复制下,一个绕不开的问题,数据冲突,写请求在节点1和节点3成功,但在节点2上失败了。


image.png

那么怎么在无主复制下解决数据冲突呢?

和写请求一样,客户端不止会从一个节点读取数据,读请求也会同时发送给多个节点,然后获取节点上的数据和数据版本号,客户端可以根据所有响应中的版本号决定应该使用哪个值,应该丢失哪个值。

虽然这种情况下,客户端可以识别出旧的数据,但我们仍然需要修复旧的数据,不能放任旧的数据一直在那。因此需要以某种方式将其与其他节点的数据保持一致,毕竟,复制技术的目的,是让多个节点存储相同的数据。

  1. 读修复
    读修复就是让客户端从多个节点读取到数据后,可以检测到其中哪些节点数据是旧的,然后将最新的数据发送到这些旧数据所在的节点上,以此更新节点数据。

  2. 反熵
    反熵过程会新建一个后台进程来修复数据,该进程找出错误的数据,并从存储最新的数据的节点中将数据复制到错误的节点。

总的说来,无主复制优点有:

缺点有:


参考资料
1、《深入理解分布式系统》

上一篇 下一篇

猜你喜欢

热点阅读