CAP:
一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。
一致性:从不同数据副本,读到的数据一致。
强一致性:读到的数据一致。
弱一致性:读到的数据可能一致。
最终一致性:一段时间后,读到的数据一致。
可用性:操作是否能完成。如:发出请求后,是否能得到正常的响应。
分区容错性:分区故障,系统仍能支撑运行。分布式中,想满足一致性,那么必须等待数据同步,在数据同步期间不满足可用;想满足可用性,就不能等待数据同步完成,不能满足一致性。
分布式中,一致性和可用性无法同时满足,所以最多只能满足CP或者AP。如果满足了CA,不满足P,就不是分布式了。
强一致性模型:
Strict Consistency(严格一致):关系数据库
Linearizable Consistency(线性一致)
Sequential Consistency(连续一致)
弱一致性模型:
Causal Consistency(因果一致):如:微信朋友圈回复。
Eventual Consistency(最终一致):如:Mysql异步复制。https://www.cnblogs.com/hzmark/p/consistency_model.html
http://loopjump.com/distributed_consistency_model/
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)。
基本可用:损失部分可用性。
如:
响应延迟:在线搜索的结果返回从0.5秒延迟到1到2秒。
服务降级:购物高峰,点击购买,部分消费者被引导到一个降级页面:服务器繁忙,请稍后重试。
软状态:允许数据同步延迟。
ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。
ACID和BASE代表了两种截然相反的设计哲学。
在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。
本文地址:https://blog.csdn.net/haoranhaoshi/article/details/109646162