简单说一下CAP理论和Base理论
CAP理论
什么是CAP
一致性
可用性
分区容错性:系统如果不能再时限内达成数据一致性,就说明发生了分区的情况
然后当前操作在C和A之间做出选择
例如我的网络出现问题了,但是我们的系统不能因为网络问题就直接崩溃
只要我们的分布式系统没有崩溃,我们就能容忍这种问题
我们是不能同时满足CAP三种属性的,只能同时满足其中两种
理解CAP理论中的C
为了保证P,我们有可能舍去A或者舍去C
也就是为了保证我们的这个分布式系统是可用的,我们要不舍去A要不舍去C
理解为啥一致性(C)和可用性(A)不能同时存在
一写的情况保证我们的可用性
三写的情况保证我们的一致性
分布式情况下P是一定存在的
一旦出现了网络分区,那么一致性和可用性我们就要抛弃一个
这就意味着我们的系统一般是一个AP系统或者是一个CP系统
一般来说NOSQL数据库是一个AP系统
分布式关系型数据库一般是CP系统(虽然达不到100%的可用性,但一般支持高可用性)
什么是RPO和RTO
RPO:数据库发生灾害后会丢失多长时间
RTO:数据库在灾难发生后整个系统恢复正常所需要的时间
辩证看待CAP理论
不是说选了A就必须抛弃C
而是选了一个,然后对另一个进行降级
总结
因为P在分布式系统中是肯定存在的
而CAP三者在理论中是不能100%满足的
所以我们要在A和C之间选一个进行降级处理
Base理论
BASE 理论本质上是对 CAP 的延伸和补充
更具体地说,是对 CAP 中 AP 方案的一个补充
为什么这样说呢?
CAP 理论我们也说过:
如果系统没有发生 “分区” 的话,节点间的网络连接通信正常的话,也就不存在 P 了。这个时候,我们就可以同时保证 C 和 A 了。因此,如果系统发生 “分区”,我们要考虑选择 CP 还是 AP。
如果系统没有发生 “分区” 的话,我们要思考如何保证 CA。
因此,AP 方案只是在系统发生分区的时候放弃一致性,而不是永远放弃一致性
在分区故障恢复后,系统应该达到最终一致性。这一点其实就是 BASE 理论延伸的地方
我们只是牺牲部分一致性,而不是永远放弃一致性
Base理论是
基本可用
软状态
最终一致性
牺牲一致性,仍然保证系统整体的“主要可用”
Base理论是对CAP中的一致性C和可用性A权衡的结果
即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性