CAP 理论:Consistency(一致性)、Avabilability(可用性)and Partition Tolerance(分区容忍性)
CAP原则简介
选项 | 描述 |
---|---|
Consistency(一致性) | 指数据在多个副本之间能够保持一致的特性(严格的一致性) |
Availability(可用性) | 指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据) |
Partition tolerance(分区容忍性) | 分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障 |
什么是分区?
在分布式系统中,不同的节点分布在不同的子网络中,由于一些特殊的原因,这些子节点之间出现了网络不通的状态,但他们的内部子网络是正常的。从而导致了整个系统的环境被切分成了若干个孤立的区域,这就是分区。
那我们如何通俗易懂的理解CAP理论
我们用生活中的场景来举个例子:
而我们这里的可用性(Availability),就是不管我们 什么时候去店里面定订蛋糕,总会有人给我们提供服务,不管是服务员A,还是服务员B,都是处于营业状态。
不管任何一位客户购买蛋糕时和蛋糕店进行交流时都会有一位员工和客户进行交流,可能在某个时刻她们两存在客户预定信息不一致的情况,服务员A太忙了没有将预定记录及时记录在本子上。
分区容错性(Partition tolerance):是指 客户A订的蛋糕,到了第二天昨天记录要做客户A的蛋糕师A生病了要去医院,第二天蛋糕师B 看了蛋糕师A做的记录把蛋糕做完了,并继续提供做蛋糕服务。
一致性(Consistency): 由于当时 客户比较多,服务员A 询问蛋糕师制作这个蛋糕材料是否充足做完之后,为此答应了客户A的定做蛋糕的请求,但是并及时记录在本子上。等空闲的时间记录在册。
而第二次客户修改了自己的预定,说我改了尺寸和取蛋糕的时间 由于服务员B 查看到了这条数据,并进行了记录,并且更新了用户之前的记录 或者 服务员A太忙了并没有记录此时服务员B将这条数据记录在本子上,并通知了蛋糕师 更改方案,这样就保证了数据的最终是一致的。
第二天客户A 9点钟过来取蛋糕的时候能够准点取走自己预定的蛋糕付了钱。整个分布式任务就结束了。
而CAP理论中 CA 理论:
放弃了分区容忍性,就是顾客A 预定 的蛋糕我 就指定让 蛋糕师A做,如果他有事情做不了,那我就不要了。而且在一致性要求下,客户A的数据必须立即记录在本子上,不能记录在服务员A的脑袋中,等服务员B看到数据时数据一定是当时记录的数据,不需要取询问已休假服务员A。这样就和分布式有些出入,而传统的数据库就是这种模式。