分布式数据库设计中关键几点
简述 CAP 原理
CAP定理(CAP theorem)又被称为布鲁尔定理(Brewer's theorem),是加州大学伯克利分校计算机科学家克.布鲁尔(Eric Brewer)在2000年的ACM PODC上提出的一个猜想。2002年,麻省理工的两个科学家发布了布鲁尔猜想的证明,使之称为分布式计算领域公认的一个定理。
CAP指的是在一个共享数据的分布式系统中,下面三者最多同时保证二者,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。 三者描述:
Consistency(一致性)
定义:读操作得到最近一次写入的数据,体现了系统对统一数据提供的读写操作是线性化的。
理解:为了保证可用性,一个分布式系统由多个节点组成。各节点维护一份数据,但不管用户访问到哪个节点,原则上应该读取到相同的数据。为了达到这个效果,一个节点收到写入请求,需将数据同步到其他节点。
Availability(可用性)
定义:请求在限定时间内从非失败的节点得到非失败的响应,体现了系统能持续提供服务的能力。
理解:分布式系统的两大初衷:横向扩展(scalability)和高可用(availability)。横向扩展为了解决单点瓶颈,保证高并发下可用性, 高可用为了单点故障问题,保证部分节点故障的可用性。分布式的核心诉求是可用性,可在合理的时间内得到合理的响应。
Partition Tolerance(分区容忍性)
定义:系统允许节点间网络消息的丢失或延迟,体现了系统是否能接纳基于数据的网络分区。
理解:分布式系统中,节点间的数据同步时基于网络的。由于网络本身固有的不可靠属性,极端情况下会出现网络不可用的情况,进而将网络两端的节点孤立开来。就是所谓的“网络分区”。理论上是无法避免的,虽然发生的概率低,时长短。
在讨论CAP定理是, P分区容忍性是必选项,任何时间都可能出现网络故障而发生分区,因此就是从CP和AP中选择合适的那一个。需特别说明的是,在系统正常运行是,网络分区没有出现,是有可能同时满足一致性和可用性两者的。具体分析三种模型:
CA模型
同时满足CA, 牺牲掉分区容忍性系统也是有的,比如单点系统,多节点但之间没有数据共享和数据交换的系统,但不是CAP讨论的范围。
CP模型
舍弃可用性,一定会读到最新数据。一旦发生网络分区,会影响用户的体验和业务可用性。典型应用:Etcd, HBase。
相关理论:ACID,CAP的酸,追求一致性。是关系型数据库的重要特性。通过事务的支持来实现强一致性,包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
AP模型
舍弃了一致性,实现服务的高可用。用户访问系统时,都能得到响应数据,不会出现错误响应,但会读到旧数据。典型应用Cassandra,DynamoDB。
相关理论:BASE,CAP的碱,追求可用性。是NoSQL数据库的重要特性。基于CAP衍生而来,对于其牺牲强一致性和保证可用性的经验总结。包含:基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventually Consistent)
描述分布式数据库 临时失效的处理过程,使用Doris的UML时序图
(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)
版权声明: 本文为 InfoQ 作者【dony.zhang】的原创文章。
原文链接:【http://xie.infoq.cn/article/296a65db2122d7daf3efb9c03】。文章转载请联系作者。
评论