CAP拾遗

Posted yeni

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAP拾遗相关的知识,希望对你有一定的参考价值。

概念

在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性、可用性、分区容错性三者中的两个,另外一个必须被牺牲

  • Consistency
    对某个指定的客户端来说,读操作保证能够返回最新的写操作结果
  • Availaility
    非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)
  • Partition Tolerance
    当出现网络分区后,系统能够继续“履行职责”
    网络分区是指因为网络故障导致网络不连通,不同节点分布在不同的子网络,各个子网络内网正常

选择

在分布式系统中,网络分区不可避免,因此分区容错性P必须满足。

  • CP
    为保证一致性,当发生分区现象后,N1节点的数据更新到y,但由于N1、N2之间的复制通道中断,N2无法同步最新的数据,当客户访问N2时,N2需要返回Error。
    技术图片

  • AP
    为保证可用性,当发生分区现象后,N1和N2的数据并不同步,当客户C访问N2时,将旧数据返回了。注意:这里N2节点返回x,虽然不是一个“正确”的结果,但是一个“合理”的结果。
    技术图片

技术图片

拾遗

  • CAP关注的粒度是数据,而不是整个系统
    每个系统不可能只有一种数据类型,有的数据必须选择CP,有的数据必须选择AP,如果只从整个系统的角度去考虑,只会出现顾此失彼的问题

  • 正常运行情况下,不存在CP和AP的,可以同时满足CA
    既要考虑分区发生时选择CP还是AP,也要考虑分区没有发生时如何保证CA

  • 牺牲并不等于什么都不做,需要为分区恢复后做准备

以上是关于CAP拾遗的主要内容,如果未能解决你的问题,请参考以下文章

9str类型和byte类型转换列表拾遗元组拾遗字典拾遗

c#特性详解含常用过滤器实例

CTMediator源码拾遗

[iOS]拾遗补阙

unixLike命令拾遗

python 元组拾遗