CN104504130A - 应用于分布式数据库的解决2pc模型单点故障问题的方法 - Google Patents
应用于分布式数据库的解决2pc模型单点故障问题的方法 Download PDFInfo
- Publication number
- CN104504130A CN104504130A CN201410854727.6A CN201410854727A CN104504130A CN 104504130 A CN104504130 A CN 104504130A CN 201410854727 A CN201410854727 A CN 201410854727A CN 104504130 A CN104504130 A CN 104504130A
- Authority
- CN
- China
- Prior art keywords
- coordinator
- participant
- single point
- queue
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种应用于分布式数据库的解决2PC模型单点故障问题的方法,包含:建立一列从协调者队列,存入多个站点作为从协调者,其中每个从协调者的功能和协调者是相同的;协调者与多个参与者之间按照两阶段提交协议通过数据包进行通信;同时,协调者和所有从协调者之间每隔一时间段进行一次通信;若从协调者在这个时间段后没有收到协调者发送的消息,则认为协调者发生阻塞,系统立即根据一定算法从协调者队列中选择一从协调者作为新的协调者与多个参与者进行通信。本发明具有的优点和积极效果是:对于参与者来说,协调者永远不会阻塞,解决了单点故障问题;同时,也能够保障工作中有高性能的协调者。
Description
技术领域
本发明属于分布式数据库技术领域,尤其是涉及一种应用于分布式数据库的解决2PC模型单点故障问题的方法。
背景技术
分布式数据库(distributed database,DDB)是指分布在计算机网络上的一组逻辑相关的多个数据库的组合,网络中的每个站点逻辑上由单个计算机组合,因此,对于分布式数据库需考虑两种事务:局部事务和全局事务。局部事务是指访问和更新一个站点的事务,局部事务的操作与集中式数据库中的事务操作一样;全局事务是访问和更新多个局部站点的事务,为了保证全局事务的原子性,则需要所有站点的局部事务的执行保持一致,即所有站点要么全部执行事务,要么全部撤销事务。
现有技术中,应用最为广泛的原子提交协议有:两阶段提交协议2PC和三阶段提交协议3PC。两阶段提交协议2PC是把本地事务的处理扩展到分布式事务中,解决了分布式事务提交原子性的问题,同时两阶段提交协议的实现比较简单且可靠。但是,两阶段提交协议仍然存在一些固有的缺陷:即当系统中某个站点因本身问题或者通信线路的不畅而长时间没有响应时,会导致整个事务不能正常提交,这样会使整个系统陷入阻塞状态;协调者本身超时,即在参与者长时间没有等待协调者发送的命令,则认为协调者超时。两阶段提交协议的这个缺陷严重影响了分布式数据库系统的性能,及其系统资源的利用率。
发明内容
针对上述问题,本发明的目的是提供一种应用于分布式数据库的解决2PC模型单点故障问题的方法,尤其适合于分布式数据库在不同节点上访问同一资源的一致性保证。
为了解决上述技术问题,本发明采用的设计思想是:以传统2PC协议模型为基础,使用心跳通知技术,冗余思想,TTL生命时间参考值,信号统计参考值建立优化的协调者,和协调者选择机制保证一致性。
为解决上述技术问题,本发明采用的技术方案是:
一种应用于分布式数据库的解决2PC模型单点故障问题的方法,包含:
建立一列从协调者队列,存入多个站点作为从协调者,其中每个从协调者的功能和协调者是相同的;
协调者与多个参与者之间按照两阶段提交协议通过数据包进行通信;同时,协调者和所有从协调者之间每隔一时间段进行一次通信,此时间段小于系统设置的超时的时间段长度;
若从协调者在这个时间段后没有收到协调者发送的消息,则认为协调者发生阻塞,系统立即根据一定算法从从协调者队列中选择一最优从协调者作为新的协调者与多个参与者进行通信。
优选的,所述协调者与参与者之间进行通信的数据包包括一个报头和数据本身,所述报头的结构中有一个TTL字段,该字段表示一个IP数据报最多能够经过多少路由器;数据包在网络中传递时每经过一个路由器,其TTL值就自动减1,当数据包到达一个路由器时,该路由器发现此数据包的TTL值为0,则将丢弃该数据包,表示协调者没有收到参与者发送的消息,或是参与者没有收到协调者的命令。
优选的,所述从协调者队列内的各站点在入队时,按编号从小到大入队,且编号小的站点优先级比较高。
优选的,所述系统立即根据一定算法从从协调者队列中选择一最优从协调者作为新的协调者与多个参与者进行通信,具体是,
通过统计各个从协调者接收的数据数目,在一天24小时的不同时段的数目变化来判断哪个从协调者,在某个时段性能最好;
通过统计各从协调者在不同任务环境下接收数据的数目,来决定不同环境下在最优从协调者;
通过统计从协调者接收数据数目的方法来判断各从协调者的性能;
根据上述三个方面统计各从协调的在不同环境下的表现,接收数据数目越多越稳定的协调者就是更优的协调者。
优选的,所有的从协调者接收来自协调者的状态同步数据,不对协调者回复任何消息,不发送任何消息给参与者;每个从协调者成功接收数据后会更新成功接收数据的次数。
优选的,所述协调者发生阻塞后,新的协调者可以根据各参与者发送的最后一个消息来确定各个参与者的事务处理状态,而不必再发送消息来确定。
优选的,所述从协调者队列中的各站点之间会通信,以确定对方的存在。
本发明具有的优点和积极效果是:
对于参与者来说,协调者永远不会阻塞,解决了单点故障问题;同时,也能够保障工作中有高性能的协调者。
附图说明
图1是本发明原路结构示意图;
图2是本发明分布式数据库协作过程示意图。
具体实施方式
下面结合附图对本发明的具体实施例做详细说明。
本发明一种应用于分布式数据库的解决2PC模型单点故障问题的方法,包含如下:
建立一列从协调者队列,存入多个站点作为从协调者,其中每个从协调者的功能和协调者是相同的;以传统的2PC协议为基础,建立的从协调者队列中的从协调者数远远小于参与者数;
协调者与多个参与者之间按照两阶段提交协议通过数据包进行通信;同时,协调者和所有从协调者之间每隔一时间段进行一次通信,此时间段小于系统设置的超时的时间段长度;
若从协调者在这个时间段后没有收到协调者发送的消息,则认为协调者发生阻塞,系统立即根据一定算法从从协调者队列中选择一最优从协调者作为新的协调者与多个参与者进行通信。
为了便于管理从协调者队列,所述从协调者队列内的各站点在入队时,按编号从小到大入队,且编号小的站点优先级比较高。
分布式事务管理器开始工作后,所有的从协调者接收来自协调者的状态同步数据,不对协调者回复任何消息,不发送任何消息给参与者。每个从协调者成功接收数据后会更新成功接收数据的次数;由于网络不稳定,所以可能有次数大的从协调者,性能不好的情况发生。所以,这里就要对不同时段,不同任务环境,不同网络使用情况下的局部更新情况作权衡比较,从而找出在最频繁情境下性能最优的从协调者,并根据需要可以在特殊情况下,选择适合特定情境的从协调者。最终,系统根据上述算法从从协调者队列中选择一最合适从协调者作为新的协调者,避免发生新选出的协调者,立即又出问题,又要从新选择从协调者的情况发生。具体实现时,可以通过统计各个从协调者接收的数据数目,在一天24小时,不同时段的数目变化来判断哪个从协调者,在某个时段性能最好;同样,也可通过统计各从协调者接收数据的数目,判断在不同任务环境,如不同并发压力下的性能,来决定不同环境下在最优从协调者,例如网络在用网高峰期,与其他时间,不同的从协调者也可能表现不同;同样根据统计从协调者接收数据数目的方法来判断各从协调者的性能。以上三个方面的表现可能也受各从协调者硬件质量等物理因素的影响,总之我们从以上三个方面统计各从协调的在不同环境下的表现,来判断性能最好的从协调者。接收数据数目越多越稳定的协调者就是更优的协调者。在不同网络环境,时段和任务环境下最优从协调者不是固定的,这就要求我们根据统计的历史数据在相应特定环境下,指定相应的最优从协调者。
所述协调者发生阻塞后,新的协调者可以根据各参与者发送的最后一个消息来确定各个参与者的事务处理状态,而不必再发送消息来确定,这样可更好更快的接管原来协调者的工作。
所述从协调者队列中的各站点之间会通信,以确定对方的存在。
所述协调者与参与者之间进行通信的数据包包括一个报头(header)和数据本身,所述报头包括了数据的目的地址及其他数据之间的关系,报头的结构中还有一个TTL字段(“生存时间”,Time To Live,TTL),该字段表示一个IP数据报最多能够经过多少路由器;其中TTL字段的初始值是由IP数据包发送端设置的,数据包在网络中传递时每经过一个路由器,其TTL值就自动减1,当数据包到达一个路由器时,该路由器发现此数据包的TTL值为0,则将丢弃该数据包,表示协调者没有收到参与者发送的消息,或是参与者没有收到协调者的命令;因此,TTL字段的目的就是为了防止数据包在网络总无限的传递。
本发明实现在正常情况下:
当事务开始时,系统中只有一个协调者负责协调所有参与者的事务执行活动,其功能和传统的2PC中的协调者一样;同时,对于参与者来说,从协调者队列相当于候选的协调者,其功能和协调者是相同的,但是不发送任何消息给参与者;但是对于协调者来说,这一从协调者队列相当于参与者队列的一部分,但不对协调者回复任何消息。如果系统认为协调者发生阻塞,系统立即根据相应算法,选择新的协调者。所以,在任意时刻,对于参与者来说,相信协调者不会阻塞。因此,无论是对于参与者还是对于协调者,从协调者队列都是透明的,不能被感知。虽然本发明对于2PC协议的改进是基于冗余的,但是不同于一般意义的冗余,从协调者队列不是作为主协调者的副本而存在的,它们作为一个独立的队列存在。协调者与从协调者之间通讯时间要小于系统规定的超时时间,若从协调者在规定的时间内没有收到协调者发送的消息,则认为协调者阻塞,此时,系统立即根据相应的新协调者选择算法,在从协调者队列中选择出效率高的从协调者站点接替原来协调者的工作。因为协调者与从协调者队列间的通讯时间比小,而协调者和从协调者相对参与者又是透明的,所以对于参与者来说,协调者永远不会阻塞。
本发明提供的TTL选择算法,当路由器的路由表配置错误或网络设备接线错误,可能会导致网络环路,在这种情况下,路由器可能根据其路由表将该数据报一直循环转发下去,这样会使数据包一直在网络中发送。因此,就需要一种机制来给这些网络上传递的数据报上加上一个生存上限,以保证数据报不会无休止的发送,而TTL字段正是用于实现这种机制的一种手段。当路由器发现此数据包的TTL值为0,则将丢弃该数据包,这在协议中表现为:协调者没有收到参与者发送的消息,或是参与者没有收到协调者没有收到命令。TTL字段对分析网络故障起到很大的作用,可以根据取出的数据包TTL字段值来判断该数据报经过了多少路由设备。TTL选择算法就是利用了数据包的这个字段特点提出的,就算法来说,数据包经过的路由器越少越好,数据包的网络延迟时间越短,即TTL字段值越大经过的路由器越少,网络延迟时间越短。
以上对本发明的实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。
Claims (7)
1.一种应用于分布式数据库的解决2PC模型单点故障问题的方法,其特征在于包含:
建立一列从协调者队列,存入多个站点作为从协调者,其中每个从协调者的功能和协调者是相同的;
协调者与多个参与者之间按照两阶段提交协议通过数据包进行通信;同时,协调者和所有从协调者之间每隔一时间段进行一次通信,此时间段小于系统设置的超时的时间段长度;
若从协调者在这个时间段后没有收到协调者发送的消息,则认为协调者发生阻塞,系统立即根据一定算法从从协调者队列中选择一最优从协调者作为新的协调者与多个参与者进行通信。
2.根据权利要求1所述的应用于分布式数据库的解决2PC模型单点故障问题的方法,其特征在于:所述协调者与参与者之间进行通信的数据包包括一个报头和数据本身,所述报头的结构中有一个TTL字段,该字段表示一个IP数据报最多能够经过多少路由器;数据包在网络中传递时每经过一个路由器,其TTL值就自动减1,当数据包到达一个路由器时,该路由器发现此数据包的TTL值为0,则将丢弃该数据包,表示协调者没有收到参与者发送的消息,或是参与者没有收到协调者的命令。
3.根据权利要求1所述的应用于分布式数据库的解决2PC模型单点故障问题的方法,其特征在于:所述从协调者队列内的各站点在入队时,按编号从小到大入队,且编号小的站点优先级比较高。
4.根据权利要求1所述的应用于分布式数据库的解决2PC模型单点故障问题的方法,其特征在于:所述系统立即根据一定算法从从协调者队列中选择一最优从协调者作为新的协调者与多个参与者进行通信,具体是,
通过统计各个从协调者接收的数据数目,在一天24小时的不同时段的数目变化来判断哪个从协调者,在某个时段性能最好;
通过统计各从协调者在不同任务环境下接收数据的数目,来决定不同环境下在最优从协调者;
通过统计从协调者接收数据数目的方法来判断各从协调者的性能;
根据上述三个方面统计各从协调的在不同环境下的表现,接收数据数目越多越稳定的协调者就是更优的协调者。
5.根据权利要求1所述的应用于分布式数据库的解决2PC模型单点故障问题的方法,其特征在于:所有的从协调者接收来自协调者的状态同步数据,不对协调者回复任何消息,不发送任何消息给参与者;每个从协调者成功接收数据后会更新成功接收数据的次数。
6.根据权利要求1所述的应用于分布式数据库的解决2PC模型单点故障问题的方法,其特征在于:所述协调者发生阻塞后,新的协调者可以根据各参与者发送的最后一个消息来确定各个参与者的事务处理状态,而不必再发送消息来确定。
7.根据权利要求1所述的应用于分布式数据库的解决2PC模型单点故障问题的方法,其特征在于:所述从协调者队列中的各站点之间会通信,以确定对方的存在。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410854727.6A CN104504130A (zh) | 2014-12-31 | 2014-12-31 | 应用于分布式数据库的解决2pc模型单点故障问题的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410854727.6A CN104504130A (zh) | 2014-12-31 | 2014-12-31 | 应用于分布式数据库的解决2pc模型单点故障问题的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104504130A true CN104504130A (zh) | 2015-04-08 |
Family
ID=52945527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410854727.6A Pending CN104504130A (zh) | 2014-12-31 | 2014-12-31 | 应用于分布式数据库的解决2pc模型单点故障问题的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104504130A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017063520A1 (zh) * | 2015-10-15 | 2017-04-20 | 中兴通讯股份有限公司 | 数据库的操作方法及装置 |
CN107153660A (zh) * | 2016-03-04 | 2017-09-12 | 福建天晴数码有限公司 | 分布式数据库系统的故障检测处理方法及其系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090300022A1 (en) * | 2008-05-28 | 2009-12-03 | Mark Cameron Little | Recording distributed transactions using probabalistic data structures |
CN103425645A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 数据库集群单点故障的监控系统及方法 |
CN103473318A (zh) * | 2013-09-12 | 2013-12-25 | 中国科学院软件研究所 | 一种面向内存数据网格的分布式事务保障方法 |
CN103731465A (zh) * | 2012-10-10 | 2014-04-16 | 株式会社特博睿 | 分布式系统及其事务处理方法 |
-
2014
- 2014-12-31 CN CN201410854727.6A patent/CN104504130A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090300022A1 (en) * | 2008-05-28 | 2009-12-03 | Mark Cameron Little | Recording distributed transactions using probabalistic data structures |
CN103425645A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 数据库集群单点故障的监控系统及方法 |
CN103731465A (zh) * | 2012-10-10 | 2014-04-16 | 株式会社特博睿 | 分布式系统及其事务处理方法 |
CN103473318A (zh) * | 2013-09-12 | 2013-12-25 | 中国科学院软件研究所 | 一种面向内存数据网格的分布式事务保障方法 |
Non-Patent Citations (2)
Title |
---|
全玉燕: "基于冗余的3PC协调者替代算法的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
刘冉 等: "分布式数据库两阶段提交协议研究与改进", 《电脑知识与技术》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017063520A1 (zh) * | 2015-10-15 | 2017-04-20 | 中兴通讯股份有限公司 | 数据库的操作方法及装置 |
CN107153660A (zh) * | 2016-03-04 | 2017-09-12 | 福建天晴数码有限公司 | 分布式数据库系统的故障检测处理方法及其系统 |
CN107153660B (zh) * | 2016-03-04 | 2020-03-17 | 福建天晴数码有限公司 | 分布式数据库系统的故障检测处理方法及其系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8438307B2 (en) | Method and device of load-sharing in IRF stack | |
CN105024855B (zh) | 分布式集群管理系统和方法 | |
CN102404390B (zh) | 高速实时数据库的智能化动态负载均衡方法 | |
US20150003296A1 (en) | System and method for providing p2p based reconfigurable computing and structured data distribution | |
CN104104570A (zh) | Irf系统中的聚合处理方法及装置 | |
US9288075B2 (en) | Method and system for auto-configuration, and network node | |
CN104301417B (zh) | 一种负载均衡方法及装置 | |
CN105359469A (zh) | 基于分层规则的路由系统 | |
CN101984573A (zh) | 分布式实现lacp标准状态机的方法及系统 | |
CN105577430A (zh) | 一种高端容错服务器的节点管理方法 | |
CN110366276A (zh) | 服务化架构基站 | |
WO2022062662A1 (zh) | 数据传输方法、系统、网络设备和存储介质 | |
CN103119400A (zh) | 跨ip网络连接的串行数据链路会话的状态同步 | |
CN109495526A (zh) | 一种报文发送方法、装置、系统、电子设备及存储介质 | |
CN104753707A (zh) | 一种系统维护方法及网络交换设备 | |
WO2021254466A1 (zh) | 一种配置边缘侧设备的方法、装置及系统 | |
CN102761608B (zh) | Udp会话复用的方法和负载均衡设备 | |
CN104504130A (zh) | 应用于分布式数据库的解决2pc模型单点故障问题的方法 | |
CN102427474B (zh) | 云存储中的数据传输系统 | |
CN101667910B (zh) | 一种快速网络数据同步方法及其系统 | |
CN109151910A (zh) | 一种无线资源管理方法及装置 | |
CN114564340B (zh) | 航天地面系统分布式软件高可用方法 | |
CN115701040A (zh) | Dbng-cp的备份方法及装置 | |
KR20120074528A (ko) | 클러스터 노드 제어 방법 및 그를 위한 전화 시스템 | |
CN106658520B (zh) | 构建任务处理路径的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150408 |
|
RJ01 | Rejection of invention patent application after publication |