CAP
一、概述
分区容错性:
理解:分布式系统集群中,一个机器坏掉不应该影响其他机器
可用性:
意思就是收到用户的请求,服务器必须给出回应
比如说有G1和G2两台服务器
用户无论是对G1还是G2请求,都能立即获得响应
一致性:
写操作之后,读操作,必须返回该值。
G1和G2两台服务器,用户对G1里面的数据进行了更改,但是去G2服务器发起了读取,但是由于G1和G2之间要进行同步,那么用户无法立即获得回应,必须等同步完了以后获得回应。也就是说G1修改了后,会向G2发送消息,要求G2也修改。
为什么一致性和可用性不能同时成立
因为可恶出现分区容错,通信发生错误。
比如保证G2一致性的时候,G1必须在写操作时,锁定G2的读操作和写操作。只有数据同步后,才重新开放读写。锁定期间,G2不能读写,这样就没有了可用性。
如果保证可用性,那么就不能锁定G2,那么一致性就不成立。
所以有了BASE理论
BASE理论:
基本可用、软状态、最终一致性
基本可用:允许服务降级或者允许响应时间收到一定损失。性能和响应时间上肯定会损失一些
软状态:允许同步数据的时候出现一定时间延迟。
最终一致性:经过一段时间的同步数据后,最终能够达到一个一致的状态。