分布式数据库设计中关键几点

发布于: 2020 年 07 月 15 日
分布式数据库设计中关键几点

简述 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时序图

(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)

发布于: 2020 年 07 月 15 日 阅读数: 7
用户头像

dony.zhang

关注

还未添加个人签名 2018.07.06 加入

还未添加个人简介

评论

发布
暂无评论
分布式数据库设计中关键几点