w6 总结:不完美的分布式系统
当一个应用系统的用户和业务规模达到一定的量之后,数据库往往是最先成为瓶颈一个部分。在横向切分与纵向切分数据之后还是无法达到数据库需要的访问性能,一个分布式的数据库成为了改进数据库访问性能的可选项。
CAP,分布式系统的“测不准原理”
分布式数据库与其他的分布式应用系统一样,存在着许多方面的限制。CAP原则总结了一个分布式应用系统的基本限制。即在分布式应用系统中,无法同时满足一致性,可用性与分区容错性的统一。比如:如果最前分区容错+可用性(P+A), 那么就无法满足系统的一致性(C); 对其他的P+C 无法与A统一,A+C无法与P统一。 虽然CAP原则的存在,系统也是可用降级处理使得一个分布式应用系统更健壮。比如,在一致性下去方面,将概念上的一致放松到最终一致,这样在追求A+P的时候,虽然过程中会出现一段时间数据不一致,但可以自动或者手动恢复到一致的状态。
ACID模型与BASE模型
ACID描述在分布式系统中事务要求,分别是:事务的原子性(A), 事务的一致性(C), 事务的隔离性(I),事务的持久性(D)
原子性保证事务的不可分割,不能成功,一部分失败,不能中间插入其他的事务;
一致性保证数据被修改前后都是一致的。
隔离性是在并发环境中,不同的事务不能被干扰。
持久性要求事务一旦别确认成功,就是永久的,保证了事务的有效性。
note: 所以我们上面所讲的最终一致,是满足一致性要求的。
ACID的要求非常严格,以致于系统难以实现或者实现成本太高,所以提出了BASE模型。
BASE = Basically Available,Soft-state,Eventually Consistent。
由eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是降低一致性要求,保证高可用,高可靠。
note: Doris 是基于BASE的思想来设计的。
一致性协议
为了解决分布式系统中的一致性的问题,提出了一些分布式系统中的一致性协议。常见的一致性协议有:
paxos: 基于Proposer, Acceptor, Leaner三个角色的一致性协议。
raft:基于复制状态机(Repilcated State Machine RSM) 实现的一致性协议。
其他:Gossip(elastic search的一致性协议) , POW(区块链的账本), ZAB(zookeeper), 2PC(传统数据库两阶段提交)。
总结:分布式应用系统中,完美是不太可能的,要懂得取舍。
评论