vlambda博客
学习文章列表

分布式理论二: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其实是一种抗网络分区的而带来系统数据不一致性的一种解决方案,或者说是一种妥协和降级。