CAP总结

C   :一致性(consistency)其实就是数据库中的ACID数据库

A   :可用性(availability)   对一个系统而言,全部的请求都应该在一段时间内‘成功’而且收到’返回’,其实就是不丢报文,老是能响应,可能有延迟。强调下,可用性是系统中每一个没有问题的节点在接受请求的时候,可以正确响应。举个例子:ca集群下,若是出现分区,全部节点都没法运转,按照常规的“可用性”看的话,咱们认为这种状况是缺少“可用性的”,这里的“可用性”跟cap中的a是有区别的。a是有前提的,即针对于正常运转的节点网络

P   :分区容错(partiion-tolerance)所指就是分布式系统的容错性。节点crash或者网络分片都不该该致使一个分布式系统中止服务,放弃Partition-tolerance意味着把全部的机器搬到一台机器内部。也就是单点跟多节点的问题,多节点具备容错性,单点没有分布式

假设两个节点集{G1, G2},因为网络分片致使G1和G2之间全部的通信都断开了,若是在G1中写,在G2中读刚写的数据, G2中返回的值不可能G1中的写值。因为A的要求,G2必定要返回此次读请求,因为P的存在,也便是多节点状况下,其中一个节点的数据不是最新的,致使C必定是不可知足的。事务

·放弃P:若是想避免分区容错性问题的发生,一种作法是将全部的数据(与事务相关的)都放到一台机器上。虽然没法100%地保证系统不会出错,但不会碰到由分区带来的负面效果。固然,这个选择会严重影响系统的扩展性。单节点的典型表明就是关系型数据库,支持CAit

·放弃A:相对于放弃“分区容错性”来讲,其反面就是放弃可用性。一旦遇到分区容错故障,那么受到影响的服务须要等待数据一致,所以在等待期间系统就没法对外提供服务,也就是CP。若是不须要数据的强一致性,能够当即进行响应,会致使数据的不一致,也就是APio

·放弃C:这里所说的放弃一致性,并非彻底放弃数据的一致性,而是放弃数据的强一致性,而保留数据的最终一致性。在分布式环境中,放弃强一致性,能够当即进行响应,虽然数据会形成不一致。集群

base原则其实放弃c,实现最终一致性的AP扩展

相关文章
相关标签/搜索