浅聊分布式系统数据复制

浅聊分布式系统数据复制

为什么要使用分布式架构呢?

首先是硬件层面,摩尔定律失效,单机性能提升出现瓶颈,或者说单机性能达到一定高度后,继续提升性能的成本是巨大的,是承受不起的。

当前网络速度变快,机器之间信息传输变快,这就给分布式带来了可能。

现在对应用的可用性要求越来越高,分布式架构中如果某一台机器出现故障,不一定会影响整体可用。

分布式应用扩展方便。

数据复制

对于分布式系统来说,不同节点的数据需要进行复制备份,以满足数据一致性的要求。

接下来讲解三种复制模式:单主复制,多主复制,无主复制。

单主复制

单住复制又称为主从复制。如下图,由一个主节点以及几个从节点组成。其中所有的写请求都将发送向主节点,所有的读请求都发送到从节点。

在这里插入图片描述

优势

主从复制搭建简单

数据又冗余,更加安全

扩展性好

负载均衡

缺点

如果主节点出现故障,需要重新选举从节点,此时可能会出现数据不一致。如,当写请求发送到了主节点,主节点尚未将数据同步到从节点,此时主节点宕机,新的从节点将损失数据。

如果主节点没有宕机,但是部分从节点因为网络问题判定为主节点宕机,选举了新的主节点,这时候同时出现多个主节点。这种现象被称为“脑裂”。

所有的写请求都发送向主节点,主节点可能会成为集群的瓶颈。

多主复制

在单主复制的基础上,增加了主节点个数。可以在任意主节点写入,由该主节点同步到其它节点。

优势

解决了分担了主节点写请求的压力。

避免了主节点故障的选举过程。

缺点

假如主节点A与主节点B先后收到了对某个数据的修改,此时A将对C,D,E进行同步,当A修改完C的值后,出现了网络拥塞,此时B开始同步,当B把C,D,E修改完之后,A不在拥塞继续同步,将DE覆盖。此时,CDE三个从节点中的数据不一样,C保存的B同步的信息,DE保存的A同步的信息。此时就会出现数据不一致的。

无主复制

没有主节点从节点之分,每次写请求同时对多个节点进行写入,如果写入成功的节点数达到一定数量代表写入成功。读取的时候也是同时读取多个节点。

假设有ABCDEFG七个节点,每次写入4个节点,读取的时候读4个节点。举个例子,第一次写入ABCD节点,第二次BCDE,此时读的时候,每次读4个节点,肯定能读到至少一个新节点,然后就可以读到数据。

写请求读请求个数设置

假设一共有n个节点,读的时候读r个节点,写的时候写w个节点。要求r+w>n,w>n/2。

r+w>n是为了使每次读的时候至少读取到一个保存有新数据的节点。w>n/2为了保证避免两次写的时候出现冲突。

读修复

当读取的时候,获取到有新数据的节点,但是如果读取的节点中有旧节点,这时候将旧节点更新为新数据。

反嫡过程

会新建一个后台进程来修复数据,该进程找出错误的数据’并从存储最新的数据的节点中将数据复制到错误的节点。反熵过程保证最终结果,不保证写入顺序。

进行反熵过程用哈希树对比。

优势

相比单主复制避免了写请求压力,也避免出现脑裂的情况出现(它都没有脑)。相比多住复制大大减少了数据不一致的可能。

劣势

每次读的时候需要读好多,会有一定的资源浪费。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值