定义
BASE和CAP一样,都是Brewer提出的概念,但是定义的非常不精确,网上能搜到的中文Blog也差不多都是错的(和原始论文中的概念不一样)。
按照这里的说法,这概念是97年的论文里被提出来了,有参考网络协议里的Soft state概念,论文里有关BASE的概念是:
大家都追求服务能对外做出ACID保证,追求数据强一致、持久化,但是有些服务的数据不需要强一致、持久化,这些服务更看重高可用,我们可以牺牲数据的一致性来满足系统的高可用性,那我相对ACID(酸)特性就提出个BASE(碱)特性吧。
Basically Available:没有给定义,网上翻译都写着“基本上可用,运行xxx时间只故障xxx小时”,这不是论文原意,文中侧重于牺牲数据的一致性来满足系统的高可用性,所以Basically翻译成“主要”、“首要”比较合适。
![](https://img.haomeiwen.com/i8926363/f3e197dbb8810dc3.png)
Soft state:相对于ACID的D,状态数据不用持久化,丢了就丢了能重新算出来,因此不用做commit写磁盘、crash recovery策略、不用做状态复制,提高性能。如图:
![](https://img.haomeiwen.com/i8926363/b0a9df1cfb8f1d5b.png)
![](https://img.haomeiwen.com/i8926363/fd5f6977e3418d41.png)
![](https://img.haomeiwen.com/i8926363/188bb1d003153861.png)
Eventual Consistency.最终一致,抄烂的概念就不细说了,没记错的话《design data intensive applications》有很多对它的吐槽。
评论
1.好像工程领域很多概念都是没有精确定义的BuzzWord,造概念的人造着爽,学的人是真的学不动了,而且学了感觉还没啥太大意义:没有精确定义,没有形式化证明,你这玩意咋指导实践?
- ebay的架构师写了文章讲与其追求ACID,我们可以按BASE的思想做高吞吐的分布式事务,原理就是把跨越多数据库的事务改造成单机事务+幂等性重试。
3.《Reactive Design Patterns》讲的蛮好,BASE不精确,现在有人提出了新概念ACID2.0
![](https://img.haomeiwen.com/i8926363/4cc62ec28a876f4d.png)
![](https://img.haomeiwen.com/i8926363/d805bb6e8c439480.png)
https://stackoverflow.com/questions/3342497/explanation-of-base-terminology
网友评论