前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一致性(Consistency),可用性(Avilable),分区容错性(Tolerance of network Partition)

一致性(Consistency),可用性(Avilable),分区容错性(Tolerance of network Partition)

作者头像
全栈程序员站长
发布2022-09-15 12:37:18
5610
发布2022-09-15 12:37:18
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

网络摘抄理解: 一致性:读操作总是能读取到之前完成的写操作结果,满足这个条件的系统称为强一致系统,这里的“之前”一般对同一个客户端而言; 可用性:读写操作在单台机器发生故障的情况下仍然能够正常执行,而不需要等待发生故障的机器重启或者其上的服务迁移到其他机器; 分区可容忍性:机器故障、网络故障、机房停电等异常情况下仍然能够满足一致性和可用性。

自己的理解: 一致性: 如下图1中所示,Client A负责更新数据,为了保证Server 1和Server 2上的数据是一致的,Client A会将X=1的写操作同时发给Server 1和Server 2,但是当Client A和Server 2之间发生网络分区(网络无法连接)时,此时如果让write X=1的写操作在Server 1上成功,那Client B和Client C将从Server 1和Server 2上读取到不一致的X值;此时如果要保持X值的一致性,那么write X=1的写操作在Server 1和Server 2上都必须失败,这就是著名的CAP理论:在容忍网络分区的前提下,要么牺牲数据的一致性,要么牺牲写操作的可用性。

这里写图片描述
这里写图片描述

解决这个问题你可能会想到让Client C同时读取Server 1和Server 2上的X值和版本信息,然后取Server 1和Server 2最新版本的X值, 如下图2所示。但Client C和Server 1之间也可能发生网络分区,这本质上是牺牲读可用性换取写可用性,并没有突破CAP理论。

这里写图片描述
这里写图片描述

可用性:读写操作在单台服务器出问题后,在其他服务器上依然能够完成读写操作 重点在于:某个读写操作在出问题的机器上不能读写了,但是在其他机器可以完成

分区容错性:单台服务器,或多台服务器出问题(主要是网络问题)后,正常服务的服务器依然能正常提供服务,并且满足设计好的一致性和可用性 重点在于:部分服务器因网络问题,业务依然能够继续运行

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

附录:书名《从Paxos到Zookeeper》

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164321.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档