美文网首页
分布式cap理论

分布式cap理论

作者: Reykjavik_8ce1 | 来源:发表于2019-03-26 09:26 被阅读0次

    cap理论

    对于一个分布式计算系统,不可能同时满足一致性,可用性,分区容错性三个设计约束;

    在一个分布式系统中,当涉及读写操作时,只能保证一致性,可用性,分区域容错性三者中的两个,另一个必须牺牲;

    一致性

    对于某个指定的客户端来说,读操作保证返回最新的操作结果;

    可用性

    非故障节点在河里的时间内返回河里的响应(不是错误和超时的响应)

    分区容忍性

    当出现网络分区后,系统能够继续陆行职责

    一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。

    当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。

    提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。

    然而,要把数据复制到多个节点,就会带来一致性的问题,就是多个节点上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题。

    总的来说就是,数据存在的节点越多,分区容忍性越高,但要复制更新的数据就越多,一致性就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性就会降低。

    这段话引用自知乎     作者:邬江

    cap应用

    在分布式环境下,p(分区容忍)必须选择,因为网络无法做到100%可靠,可能出现故障,所以分区必然选择

    如果选择CA放弃P,当发生系统分区后,为了保证C,系统需要禁止写入,系统返回error,这又和A冲突了,因为A要求系统返回no error和no timeout,因此分布式系统理论上不能选择ca架构,只能选择CP或者Ap

    CP

    为了保证一致性,当发生分区现象后,N1节点上的数据已经更新数据到y,但由于网络分区,N1和N2中间的复制通道中断,数据y无法同步到N2,N2节点的数据还是x,这时客户端访问N2时,需要返回error,这种处理方式违反了可用性,因此CAP三者满足CP;

    AP

    客户端访问N2,N2把自己的数据x返回给客户端,但实际上最新数据已经是y了,这就不满足一致性要求,因此CAP中满足了AP,这里N2返回的数据虽然不是一个正确的数据,但是是一个合理的结果,x是旧数据,并不是错乱的值,只不过不是最新而已;

    CAP关健细节

    C与A之间的取舍可以在同一系统内衣非常细小的粒度反复发生,而每一次的决策可能以为具体的操作,乃至因为牵涉到特定的数据或用户而有所不同;

    每个系统中都有多种数据,有的数据必须选择CP,有的数据必须选择AP,要减小选择的粒度,比如用户账号数据通常选择CP,而用户信息数据通常选择AP;

    每年系统发生不可用的时间累积可能有几十分钟,我们不是永久放弃C或者A,要在分区发生时做一些操作,让分区故障恢复后,系统能恢复CA状态,最典型的方法就是分区故障后,系统根据日志进行恢复,重新达到CA,

    相关文章

      网友评论

          本文标题:分布式cap理论

          本文链接:https://www.haomeiwen.com/subject/vmewvqtx.html