一种实现分布式数据库操作一致性的方法及装置制造方法及图纸

技术编号:14547933 阅读:115 留言:0更新日期:2017-02-04 19:26
本申请提供了一种实现分布式数据库操作一致性的方法及装置,包括:leader节点接收客户端发送的DML操作指令;leader节点将DML操作指令追加到本地日志log中,并将包括DML操作指令的日志同步复制至follower节点;follower节点将leader节点发送的DML操作指令追加到本地日志log中,所述leader节点和所述follower节点的本地状态机分别从各自的本地log中依次读取DML操作指令并放到数据库中执行。采用本申请提供的方案可以避免角色混乱现象出现,确保数据一致性,且客户端需要同步等待的开销大大降低,从而提高了整个系统正常运行的吞吐量。

【技术实现步骤摘要】

本申请涉及计算机存储
,尤其涉及一种实现分布式数据库操作一致性的方法及装置
技术介绍
分布式数据库系统中,数据量较小的维度表一般以全复制的方式分布在系统的各个数据存储节点上,这样可以大大提升分布表与维度表之间的关联操作的效率,所有的关联算子均可以在本地完成后再在上层合并。对于复制表数据的更改,即DML操作(数据操作语言,DataManipulationLanguage)需要保证其在所有节点上执行的一致性,如insert,delete和update等操作。在分布式系统下,由于多台数据库服务器组成的集群,某一台节点出现故障的概率相对比较高,所以为了保证系统的可用性,通常牺牲数据强一致性来达到最终一致性。在分布式数据库领域,解决数据一致性的传统方法一般是借助于两阶段提交协议(Two-PhaseCommitProtocol),主要包括如下两个阶段:1)请求阶段(commit-requestphase):主要是协调者将请求通知所有参与者,参与者将同意(执行成功)或者取消(执行失败)返回给协调者;2)提交阶段(commitphase):协调者根据所有参与者的结果进行决策,所有均成功则通知各参与者提交事务,否则通知所有参与者取消事务;参与者在收到消息后执行相应操作。但上述方法中两个阶段均需要参与者全部返回消息,虽然有超时机制,但对于客户端而言,一次请求需要同步等待的代价依然较大,实际执行效率较低。现有技术不足在于:借助两阶段提交协议解决数据一致性的方式执行效率较低。
技术实现思路
本申请实施例提出了一种实现分布式数据库操作一致性的方法及装置,以解决现有技术中借助两阶段提交协议解决数据一致性的方式执行效率较低的技术问题。本申请实施例提供了一种实现分布式数据库操作一致性的方法,包括如下步骤:领导者leader节点接收客户端发送的数据操作语言DML操作指令;所述leader节点将所述DML操作指令追加到本地日志log中,并将包括所述DML操作指令的日志同步复制至跟随者follower节点;所述follower节点将所述leader节点发送的DML操作指令追加到本地日志log中;所述leader节点和所述follower节点的本地状态机分别从各自的本地log中依次读取所述DML操作指令并放到数据库中执行。本申请实施例提供了一种实现分布式数据库操作一致性的装置,包括:第一接收模块,用于领导者leader节点接收客户端发送的数据操作语言DML操作指令;第一处理模块,用于所述leader节点将所述DML操作指令追加到本地日志log中;发送模块,用于所述leader节点将包括所述DML操作指令的日志发送至跟随者follower节点;第二接收模块,用于所述follower节点接收所述leader节点发送的包括所述DML操作指令的日志;第二处理模块,用于所述follower节点将所述DML操作指令追加到本地日志log中;执行模块,用于所述leader节点和所述follower节点的本地状态机分别从各自的本地log中依次读取所述DML操作指令并放到数据库中执行。有益效果如下:由于本申请实施例由leader节点作为客户端接口和内部通信的发起者,避免了分布式系统中因为故障导致的角色混乱等现象出现,由leader节点统一复制日志到其他follower节点,确保数据一致性;并且,由于leader节点复制日志到其他follower节点与节点上本地状态机执行操作可以为后台异步操作,客户端需要同步等待的开销大大降低,从而提高了整个系统正常运行的吞吐量。附图说明下面将参照附图描述本申请的具体实施例,其中:图1示出了本申请实施例中实现分布式数据库操作一致性的方法实施的流程示意图;图2示出了本申请实施例中复制状态机的结构示意图;图3示出了本申请实施例中节点选举的过程示意图;图4示出了本申请实施例中日志结构及复制过程的示意图;图5示出了本申请实施例中客户端与server端交互的过程示意图;图6示出了本申请实施例中实现分布式数据库操作一致性的装置的结构示意图。具体实施方式为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。专利技术人在专利技术过程中注意到:分布式系统一致性理论一直是业界研究的重点,过去的一段时间里,Paxos一直是分布式协议的标准,Google大数据三驾马车(MapReduce,BigTable,GFS)中的ChubbyLock服务使用Paxos作为其一致性算法。开源系统ApacheHadoop中对应Chubby的开源组件Zookeeper也实现了维护系统元数据、状态一致性的组件,广泛用于Hdfs,HBase和MapReduce中。Paxos算法的理论阐述比较复杂、难以理解,所以在工业上完整的实现并不常见。Chubby目前只在Google内部系统中使用,而Zookeeper也只是模仿Chubby实现了FastPaxos的部分功能,目前只是在分布式NoSQL系统中使用较为广泛。针对现有技术的不足,本申请实施例提出了一种实现分布式数据库操作一致性的方法及装置,将Raft协议的核心算法应用到实际的分布式数据库系统中,高效、高可用的保证分布式数据库数据一致性,下面进行说明。图1示出了本申请实施例实现分布式数据库操作一致性的方法实施的流程示意图,如图所示,所述实现分布式数据库操作一致性的方法可以包括如下步骤:步骤101、领导者leader节点接收客户端发送的数据操作语言DML操作指令;步骤102、所述leader节点将所述DML操作指令追加到本地日志log中,并将包括所述DML操作指令的日志同步复制至跟随者follower节点;步骤103、所述follower节点将所述leader节点发送的DML操作指令追加到本地日志log中;步骤104、所述leader节点和所述follower节点的本地状态机分别从各自的本地log中依次读取所述DML操作指令并放到数据库中执行。本申请实施例所提供的实现分布式数据库操作一致性的方法及装置,leader节点接收到客户端发送的数据操作语言DML操作指令后,将所述本文档来自技高网
...

【技术保护点】
一种实现分布式数据库操作一致性的方法,其特征在于,包括如下步骤:领导者leader节点接收客户端发送的数据操作语言DML操作指令;所述leader节点将所述DML操作指令追加到本地日志log中,并将包括所述DML操作指令的日志同步复制至跟随者follower节点;所述follower节点将所述leader节点发送的DML操作指令追加到本地日志log中;所述leader节点和所述follower节点的本地状态机分别从各自的本地log中依次读取所述DML操作指令并放到数据库中执行。

【技术特征摘要】
1.一种实现分布式数据库操作一致性的方法,其特征在于,包括如下步骤:
领导者leader节点接收客户端发送的数据操作语言DML操作指令;
所述leader节点将所述DML操作指令追加到本地日志log中,并将包括
所述DML操作指令的日志同步复制至跟随者follower节点;
所述follower节点将所述leader节点发送的DML操作指令追加到本地日
志log中;
所述leader节点和所述follower节点的本地状态机分别从各自的本地log
中依次读取所述DML操作指令并放到数据库中执行。
2.如权利要求1所述的方法,其特征在于,在所述领导者leader节点接收
客户端发送的数据操作语言DML操作指令之后、所述leader节点将所述DML
操作指令追加到本地日志log之前,进一步包括:
所述leader节点执行所述DML操作指令到本地数据库,确定所述DML
操作指令为可执行后执行回滚rollback操作。
3.如权利要求1所述的方法,其特征在于,在所述领导者leader节点接收
客户端发送的数据操作语言DML操作指令之前,进一步包括:
如果节点在预设时间内没有收到leader节点的心跳Heartbeat,发起选举,
并增加自身的当前时间戳currentTerm标识id;
当所述节点获得超过半数的其他节点的投票时,所述节点作为leader节点
广播其heartbeat。
4.如权利要求3所述的方法,其特征在于,所述其他节点具体是根据所述
节点的时间戳Termid与本地currentTermid的大小关系进行投票的。
5.如权利要求1所述的方法,其特征在于,所述数据库具体为键值
key-value数据库,所述日志的时间戳Term与索引index作为键key,所述DML
操作指令作为值value。
6.如权利要求1所述的方法,其特征在于,所述leader节点将包括所述

\tDML操作指令的日志同步复制至跟随者follower节点,具体为:
所述leader节点通过追加项AppendEntries远程过程调用RPC将包括所述
DML操作指令的日志同步复制至所述follower节点。
7.如权利要求1所述的方法,其特征在于,所述leader节点将包括所述
DML操作指令的日志同步复制至跟随者follower节点,具体为:
所述leader节点根据预先存储的跟随者follower节点的下一索引nextIndex
值,确定所述follower节点与所述leader节点日志一致的索引地址;
将所述follower节点的所述索引地址之后的日志条目删除;
将所述DML操作指令执行成功的日志中所述索引地址之后的日志条目发
送至跟随者follower节点。
8.一种实现分布式数据库操作一致性的装置,其特征在于,包括:
第一接收模...

【专利技术属性】
技术研发人员:黄小川
申请(专利权)人:曙光信息产业北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1