分布式数据库如何平衡一致性和读写延迟.docx
《分布式数据库如何平衡一致性和读写延迟.docx》由会员分享,可在线阅读,更多相关《分布式数据库如何平衡一致性和读写延迟.docx(12页珍藏版)》请在第一文库网上搜索。
1、分布式数据库如何平衡一致性和读写延迟?为了提供高可用能力、避免数据丢失,在分布式数据库或存储系统中需要设立数据副本机制,而副本的引入,可以说是分布式存储中的万恶之源。多副本之间应该满足强一致吗?强一致会导致请求延迟增加多少?强一致约束下能提供哪些可用性?诸如此类,种种问题,不一而足。此外,分布式系统中的CAP原理可以被表述为:在网络分区存在的情况下,强一致与可用性是不可兼得的。由此发展出符合BASE标准的NoSQL数据库,在这类数据库中,以最终一致性取代强一致性。那么,我们所说的强一致和最终一致究竟是指什么呢?强一致意味着多副本数据间的绝对一致吗?显然,在分布式系统中,由于网络通信延迟的存在,
2、多副本的严格一致是不可能的。那是代表返回写入请求时多副本已经达到完全一致了吗?熟悉Raft的朋友会立即指出,不一定,Raft就只需要在quorum中(超过半数)副本达成一致即可返回写入成功。抑或是只需要quorum的一致即可吗?这决于具体的算法,如果我们不限定读取操作只被leader处理,那么,达成quorum 一致之后仍然可能读取到旧数据。而在实际系统中,一致性问题的解法可能更加复杂,需要在一致性、读写延迟中做出权衡。以时序数据库TDengine为例,我们为元数据的读写提供强一致性;时序数据在部分场景中则需要降低读写延迟、提高吞吐,仅需满足最终一致即可;而在另一些场景中,时序数据又需要有强一
3、致保证。为了更好地探讨一致性的相关问题,我们首先需要为不同的一致性级别下一个定义。从并发模型中的一致性到分布式多副本一致性一致性模型(consistency model )最早是定义在并发模型上的lo常用的一致性级别定义包括以下5种:严格一致性(strict consistency )线性一致性(linearizability ,又译可线性化)顺序一致性(sequential consistency )因果一致性(casual consistency )FIFO 一致性(FIFO consistency,又称 PRAM consistency, pipelinedRAM concsistenc
4、y ) o之所以能够从并发模型直接推广到分布式多副本系统,是因为它们都可以建立在抽象的多读者、多写者寄存器(MWMR register, multiple writermultiple reader register)模型之上2o值得注意的是,这里的寄存器是抽象的概念,并不是硬件寄存器。它泛指定义了读、写操作的一系列值的存储对象。在并发系统中,读操作与写操作可能是多线程并发地在不同CPU上执行;在分布式系统中,它们可能是多进程被分布在不同的物理节点上执行。但相同的是,这两类系统中的读操作与写操作都有一定的延迟,不是瞬间完成的。为了便于理解,我们不会照搬形式化的定义,而是提供一些更符合直觉,但不
5、失准确的描述。线性一致性:假设在分布式系统中存在绝对的物理时钟(真实时间),进程与进程之间不存在时间的漂移。那么,我们将读写操作的开始与结束的真实时间记录下来,为每个操作从开始到结束的持续时间段中选择一个时刻点,视该操作为在此时刻瞬间完成。如此,所有操作都可以被等效为一个进程在真实时间轴上瞬时完成的读写操作。若所有的读操作得到的都是上一次写操作的结果,那么,该系统满足线性一致性。PlA read) t 1足read。t 2图1可以看到,进程p3的写操作R.write(3)开始和结束都分别晚于进程p2的写操作R.write(2)的开始与结束,但由于它们时间有交的,R.write(3)的线性化点(
6、操作的等效时刻)可以先于R.write(2)o因此,图1系统满足线性一致性。顺序一致性:但是在实际的分布式系统中,并不存在绝对的真实时间3o因此,在外部的观察者看来,任意单个进程的操作顺序是确定的,但考虑所有操作的某种全序关系时,一个进程的读写操作可以被插入到其他进程的任意两个操作之间。不同的插入方式,会生成不同的全序关系,只要能保证存在一个合法的全序关系,则满足顺序一致性。所谓的合法是指:1.全序化后读操作必须读到上一个写操作的值;2.单个进程内的操作先后顺序与在全序关系中的操作先后顺序一致。Init x:=0Read x= 0Read x= 2pl1Init x := 0Write x :
7、= 2P2Init x:=0Write x := 2Total order 11Init x:=0Read x= 0Total order 21Read x= 0Read x= 2Read x= 2Write x := 2Init x:=0Read x= 0Write x := 2Read x= 2Total order 3图2Init x := 0Read x= 1Read x= 2pl11kInit x = 0一Write x:=2Write x := 1P2 11k图3由于不存在绝对时间,我们不再要求画出读写操作的起止时刻,而将其视为瞬间完成的操作。在图2中,全序1、2、3中,只有3是一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 数据库 如何 平衡 一致性 读写 延迟
