为了账号安全,请及时绑定邮箱和手机立即绑定

分布式副本一致性问题

标签:
大数据

当我们开发大数据应用时, 通常会接触到数据一致性,通常为了提高数据的高可用性,防止单点数据故障,我们会提供数据副本, 这时候冗余副本的数据库一致性问题就是需要考虑的问题。在此处整理了三种方式, 并展现了HDFS 与 ES使用的副本数据一致性的架构方案。

1 首先我们这里提供一个比较简单粗暴的方式

将请求分发到多个节点,每个节点进行数据的写入, 写完进行回复, 当有指定个节点写入成功后即算一次写入成功。

webp

image.png

这种情况下的优缺点:
优点: 写入时间取决于最慢的那个节点的写入时间
缺点: 网络IO大, 客户端要向每个节点发送数据。

2 HDFS 副本写入一致性

HDFS副本写入一致性使用的是一种链式pipeline的形式。


webp

image.png


这个流程是先写入第一个datanode中,然后读取namenode中其他datanode的位置,通过datanode类似pipeline形式一级一级往下写,然后一级一级向上返回,最终返回给客户端。
优点: 能保证数据的强一致性
缺点: 需要所有副本正常插入数据,才能算写成功, 效率不够高

3 ES 副本写入一致性


webp


这个写入流程是先通过写主节点, 当主节点写入成功后, 将数据请求同时向所有的副本节点发送, 副本节点进行处理然后应答主节点, 当主节点收到所有副本节点的应答之后就开始向客户端返回本次写入成功。
优点: 性能较好, 写入时间取决于主节点写入时间+max(副本节点写入时间)
缺点: 依赖主节点, 数据量大的时候网络IO有压力。



作者:kason_zhang
链接:https://www.jianshu.com/p/87682e2f5d88


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消