编目节点和数据节点在存储数据时,共包含两大年夜部分,一个真实的数据文件,另一个是事务日记文件。
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!
分布式数据库的数据一致性治理是其最重要的内核技巧之一,也是包管分布式数据库知够数据库最根本的ACID特点中的 “一致性”(Consistency)的保障。在分布式技巧成长下,数据一致性的解决办法和技巧也在赓续的演进,本文就以作者实际研发的分布式数据库作为案例,介绍分布式数据库数据一致性的道理以及实际实现。
1.数据一致性
1.1数据一致性是什么
大年夜部份应用传统关系型数据库的DBA在看到“数据一致性”时,第一反竽暌功可能都是数据在跨表事务中的数据一致性场景。然则本文介绍的“数据一致性”,指的是“数据在多份副本中存储时,若何保障数据的一致性”场景。
Leader的日记完全性,则当Candidate从新选举Leader时,新的Leader必须要包含先前已经commit的LOG;
媒介
因为在大年夜数据范畴,数据的安然不再由硬件来包管,而是经由过程软件手段,经由过程同时将数据写入到多个副本中,来确保数据的安然。数据库在同时向多个副本写入记录时,若何确保每个副本数据一致,称为“数据一致性”。
1.2关系型数据库若何保障数据一致性
传统的关系型数据库对于运行情况–硬件请求都比较高,例如Oracle会建议用户应用小型机+共享存储作为数据库的运行情况,DB2 DPF也同样建议用户采取更好的办事器+高端存储来搭建数据库的运行情况。所以在数据存储安然的技巧请求下,传统关系型数据库更多是依附硬件的技巧来保障数据的安然性。
因为关系型数据库的数据安然是基于硬件来保障,并且数据也不会经由过程同时存储多份来保障数据的安然,所以关系型数据库的用户默认认为数据存储是一致的。
1.3分布式存储若何保障数据一致性
本文在评论辩论分布式存储时,重要指的是大年夜数据产品中的分布式文件体系和分布式数据库,例如:SequoiaDB和HDFS。
当Leader被选举出来后,所有的事务操作都必须要经由Leader处理。这些事务操作成功后,将会被按次序写入到LOG中,每个LOG都包含一个index编号。
用户在搞明白分布式存储的数据一致性道理时,必须要先明白为什么他们就须要数据一致性,和分布式存储的数据存储与关系型数据库的数据存储又有什么差别。
大年夜数据技巧的核心思惟就是分布式,将一个大年夜的工作义务分化成多个小义务,然后经由过程分布式并发操作的方法将其完成,大年夜而进步全部体系的枷⒚效力或者是存储才能。而在分布式情况下,因为硬件的请求降低,必定须要大年夜数据产品供给别的一个重要的功能–数据安然。
大年夜数据产品在解决数据安然的方法上,都比较接近,简单来说,就是让一份数据经由过程异步或者同步的方法保存在多台机械上,大年夜而保障数据的安然。
分布式存储在解决数据安然的技巧可贵后,又惹人了一个新的技巧问题,就是若何保障多个副本中的数据一致性。今朝SequoiaDB是应用Raft算法来包管数据在多个副本一一致性。
2.Raft算法
2.1Raft算法背景
在分布式情况下,最有名的一致性算法应当是Paxos算法,然则因为它实袈溱过于晦涩难解,并且实现起来极端艰苦,所以在2013年,Diego >
2.3.2 Terms
在分布式情况下,“时光同步”一向都是老大年夜难的技巧难题。Raft为懂得决这个问题,将时光划分为一个一个的Term(可以懂得为“逻辑时光”)来处理在不应时光段里的数据一致性。
Terms有以下原则
- 每个Term中,至多存在一个Leader
- 某些Term中,有可能存在因为选举掉败,没有Leader的情况
- 每个节点本身保护本地的currentTerm
- 每个Term都是一个持续递增的编号
- 如不雅Follower的Term编号比其余Follower Term编号小时,该Follower Term编号将更新Term编号,以保持与其他Follower Term编号一致
2.3.3 选举
Raft的选举由准时器触发,每个节点的触发时光都不雷同。
所有的节点在开端时状况都为Follower,当准时器触发选举后Term编号递增,该节点的状况由Follower转为Candidate,并且向其他节点提议RequestVote RPC请求,这时选举有3种情况可能产生:
SequoiaDB的节点事务日记,默认情况下由20个64MB(总大年夜小为1.25GB)的文件构成。节点的事务日记重要包含一个index编号和数据操作内容,index编号保持永远递增状况。
提议RequestVote的节点收到n/2+1(过折半)个节点的投票,该节点将大年夜Candidate状况变为Leader状况,开端向其他节点发送HeartBeat以保持Leader的┞俘常状况
如不雅收到投票请求后,该节点发明提议投票的节点Term大年夜于本身,则该节点状况大年夜Candidate转为Follower,不然保持Candidate状况,并且拒绝该投票请求
选举时代产生了超时,则Term编号递增,从新提议选举
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 苹不雅在活动协处理器中集成了异常小的语音辨认装配,这个装配一向保持运行,并等待用户说出“嘿 Siri>>>详细阅读
本文标题:分布式数据库数据一致性原理说明与实现
地址:http://www.17bianji.com/lsqh/38048.html
1/2 1