分布式理论二:BASE理论
分布式理论二:BASE理论
1.概述
BASE是指Basic Avaliable(基本可用) Soft State(中间软状态) Eventualy Consistent(最终一致)。
BASE其实就是就是对于一致性和可用性的权衡,个人理解也就是对CAP的补充吧。
2.CAP的3选2
CAP中为了分区容错性,会在一致性和可用性中选择一个,BASE则强调的是分区可以有,但是我们又要有A又要有C,看能不能这样?我们自己探测分区,分区的时候禁止某些操作,同时启动恢复流程,将分区过程中产生的不一致给它同步下搞到最终一致就行?
即我尽可能的CAP全都要,我知道分区不可避免,那我在分区后作出一些定义或限制,启动恢复流程,最终搞一致(最终一致)就行了。
既然这样那势必会有中间状态是不一致的,这个就叫Soft State软状态了。
3.BASE具体指什么?
Basic Avaliable(基本可用)
基本可用是指系统出现故障,网络或节点故障,仍然可用。相比于正常系统会有响应速度上的损失或功能上的损失。
Soft Sate(软状态)
软状态是指允许存在数据的中间状态,也就是不同节点之间数据的暂时不一致。
Eventually Consistent(最终一致)
软状态必须要有个时间限制,在时间限制之后,各个节点之间的数据副本同步一致,达到最终一致性。
实际工程中的一致性:
-
因果一致性(Causal consistency)
节点A在更新完数据之后通知了节点B,那么节点B之后对该数据的访问和修改都是基于A更新之后的值进行修改。
-
读己之所写(Read your writes) 节点A更新一个数据后,自身访问总是可以获得最新的值。
也就是说,我发一条微博,而你并不一定能立马看到,但是你最终会看到。
-
会话一致性(Session consistency) 在一个会话中,自己写入的数据能够及时的读取出来。
-
单调读一致性(Monotonic read consistency) 某个节点从系统中读取某个数据的值后,再次访问不会出现旧的值。
-
因果一致性(Monotonic write consistency) 来自同一个节点的写操作能够顺序的写入。
4.总结
总体来讲,BASE其实是一种抗网络分区的而带来系统数据不一致性的一种解决方案,或者说是一种妥协和降级。