CN109388481A - 一种事务信息的传输方法、系统、装置、计算设备和介质 - Google Patents
一种事务信息的传输方法、系统、装置、计算设备和介质 Download PDFInfo
- Publication number
- CN109388481A CN109388481A CN201811108155.1A CN201811108155A CN109388481A CN 109388481 A CN109388481 A CN 109388481A CN 201811108155 A CN201811108155 A CN 201811108155A CN 109388481 A CN109388481 A CN 109388481A
- Authority
- CN
- China
- Prior art keywords
- transaction
- transaction information
- node
- message
- information segment
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 102
- 230000005540 biological transmission Effects 0.000 title claims abstract description 80
- 239000012634 fragment Substances 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000001514 detection method Methods 0.000 claims description 47
- 230000008569 process Effects 0.000 claims description 31
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 abstract description 7
- 230000007812 deficiency Effects 0.000 abstract 1
- 101100425275 Dictyostelium discoideum trxC gene Proteins 0.000 description 11
- 101100101240 Schizosaccharomyces pombe (strain 972 / ATCC 24843) txl1 gene Proteins 0.000 description 11
- 108060008226 thioredoxin Proteins 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 101000801880 Dictyostelium discoideum Thioredoxin-3 Proteins 0.000 description 6
- 230000007547 defect Effects 0.000 description 5
- 101100153085 Dictyostelium discoideum trxA gene Proteins 0.000 description 4
- 101100153095 Dictyostelium discoideum trxB gene Proteins 0.000 description 4
- 101150102071 TRX1 gene Proteins 0.000 description 4
- 101150037769 TRX2 gene Proteins 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 101710168651 Thioredoxin 1 Proteins 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 101100154863 Mus musculus Txndc2 gene Proteins 0.000 description 2
- 101710168624 Thioredoxin 2 Proteins 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 101100425276 Dictyostelium discoideum trxD gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明的实施方式提供了一种事务信息的传输方法、系统、装置、介质和计算设备。该方法包括:判断事务信息的增量是否超过设定阈值,增量用于指示事务执行过程中事务对应的事务信息的变化量;若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点。本发明通过在事务执行过程中将事务信息片段预先传输至数据库集群的接收节点,实现了事务信息的分段传输,避免了现有技术中因事务提交消息的数据量过大而导致的技术缺陷,缩短了处理事务的响应时间,提高了事务信息的传输稳定性和传输效率,增强了数据库集群的稳定性,提升了用户体验。
Description
技术领域
本发明的实施方式涉及软件技术领域,更具体地,本发明的实施方式涉及一种事务信息的传输方法、系统、装置、计算设备和介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
MySQL数据库是一种应用广泛的开源数据库。而MySQL Group Replication(MGR)是一种采用分布式一致性协议构建的数据库集群,MGR在运维复杂性、服务可用性、数据可靠性等方面均有较大的优势,因而MGR能够为用户提供金融级的数据保证。MGR中事务执行节点在提交事务时,会向该MGR中的各个MGR节点广播该事务对应的事务信息,该事务信息用于记录事务执行节点对事务进行的操作。各个MGR节点接收事务信息后对事务进行认证,各个MGR节点认证通过后触发复制线程(sql thread)完成事务提交的后续流程。其中,MGR节点产生的事务信息例如可以是Binlog(log events),通常MGR节点会将事务信息打包成一个事务提交消息(或事务提交请求),然后通过消息传递一致性协议的方式对该事务提交消息进行广播。
目前,若事务提交消息的数据量过大,则可能会导致以下几个技术问题:第一,MGR节点处理该事务提交消息时出现异常,包括内存分配异常、代码执行异常等,从而影响MGR节点的稳定性;第二,该事务提交消息会占用较大的网络带宽,甚至会阻塞各个MGR节点之间的必要通信,比如节点心跳,进而导致MGR节点之间的网络分区,致使整个MGR集群失去响应,MGR节点无法自动恢复,影响网络稳定性;第三,该事务提交消息传输期间若网络抖动则会传输失败,造成事务回滚,从而导致数据传输容错性差,尤其是跨城域网场景下的MGR集群;第四,该事务提交消息的传输时间长,导致事务执行完后需要较长的反馈时间,从而造成事务执行性能变差。此外,由于仅能在事务提交时才能对事务进行冲突检测,冲突检测效率不高,可能会导致事务冲突后仍执行无用的SQL,浪费服务器资源,使得用户体验下降。
综上,现有的MGR节点事务信息的传输方案无法解决由于事务信息的数据量过大所导致的上述问题。
发明内容
本发明实施例提供了一种事务信息的传输方法、装置、系统、计算设备和介质,用以解决现有技术中由于事务信息的数据量过大所导致的技术问题。
本发明实施例是通过以下技术方案实现的:
第一方面,本发明实施例提供一种事务信息的传输方法,该传输方法可以应用于数据库集群中,包括:判断事务信息的增量是否超过设定阈值,增量用于指示事务执行过程中事务对应的事务信息的变化量;若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点。
在本发明的一个实施例中,在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点,包括:获取事务信息片段;基于事务信息片段创建预发布消息,预发布消息包括事务信息片段以及事务信息片段所属的事务标识;将预发布消息传输至接收节点。
在本发明的一个实施例中,将预发布消息传输至接收节点,包括:若事务的数量为多个,则设置多个事务对应的多个预发布消息的优先级;将多个预发布消息缓存至消息发送队列中;根据优先级从高到低将消息发送队列中缓存的多个预发布消息依次发送至接收节点,其中,优先级越高,发送顺序越靠前。
在本发明的一个实施例中,消息发送队列还缓存有事务提交消息,事务提交消息的优先级高于预发布消息的优先级。
在本发明的一个实施例中,将多个预发布消息缓存至消息发送队列中之后,还包括:若消息发送队列中存在与事务提交消息对应同一事务的至少一个预发布消息,则将该至少一个预发布消息的优先级调整为最高优先级。
在本发明的一个实施例中,预发布消息还包括以下之一或组合:事务信息片段的偏移信息,事务执行节点的标识,预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
在本发明的一个实施例中,基于事务信息片段创建预发布消息,包括:将事务信息片段处于事务信息中的位置作为偏移信息;基于偏移信息、事务信息片段以及事务信息片段所属的事务标识生成预发布消息。
在本发明的一个实施例中,判断事务信息的增量是否超过设定阈值,包括:判断事务信息对象中当前存储的事务信息的增量是否超过设定阈值,事务信息对象用于存储对事务进行的至少一个操作对应的事务信息片段。
在本发明的一个实施例中,在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点之后,还包括:如果事务执行过程出现异常,则向接收节点发送用于指示删除事务信息片段的通知消息。
结合本发明实施方式的第一方面,在本发明实施方式的第二方面中提供了一种事务信息的传输方法,应用于数据库集群中,包括:缓存来自于数据库集群的事务执行节点的事务信息片段;若接收到来自于事务执行节点的事务提交消息,则基于事务提交消息和事务信息片段构成事务的事务信息。
在本发明的一个实施例中,缓存来自于数据库集群的事务执行节点的事务信息片段,包括:接收来自于事务执行节点的预发布消息;从预发布消息中获取事务信息片段以及事务信息片段所属的事务标识;根据事务标识对事务信息片段进行存储。
在本发明的一个实施例中,基于事务提交消息和事务信息片段构成事务的事务信息,具体包括:若预发布消息的数量为多个,并且多个预发布消息中获取的事务标识为同一事务标识,则判断多个预发布消息携带的节点全局序号是否存在缺失;若多个预发布消息携带的节点全局序号不存在缺失,则判断多个预发布消息携带的多个偏移信息是否连续;若多个预发布消息携带的多个偏移信息连续,则根据多个偏移信息将多个事务信息片段与从事务提交消息中获取的事务信息片段进行汇总得到事务信息。
在本发明的一个实施例中,该传输方法还包括:若多个预发布消息的节点全局序号存在缺失,则确定对事务执行节点进行调整。
在本发明的一个实施例中,该传输方法还包括:若多个预发布消息携带的多个偏移信息不连续,则确定对事务执行节点进行调整。
在本发明的一个实施例中,预发布消息还包括以下之一或组合:事务信息片段的偏移信息,事务执行节点的标识,预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
在本发明的一个实施例中,预发布消息还包括主键信息和数据快照版本。基于事务提交消息和事务信息片段构成事务的事务信息之前,还包括:从预发布消息中获取主键信息和数据快照版本;根据主键信息和数据快照版本对从预发布消息中获取的事务信息片段进行冲突检测;将数据快照版本和经过冲突检测后的事务信息片段,更新至数据库集群的接收节点维护的冲突检测数据库。
在本发明的一个实施例中,基于事务提交消息和事务信息片段构成事务的事务信息,包括:将经过冲突检测后的事务信息片段以及从事务提交消息中获取的事务信息片段构成事务信息。
在本发明的一个实施例中,缓存来自于数据库集群的事务执行节点的事务信息片段之后,若满足以下条件之一则删除事务信息片段,还包括:接收到用于指示删除事务信息片段的通知消息;接收到用于指示删除指定偏移位置对应的事务信息片段的指示消息;监测到事务执行节点不属于接收节点所属的数据库集群;基于事务提交消息和事务信息片段生成出事务信息。
在本发明实施方式的第三方面中,提供了一种事务信息的传输系统,应用于数据库集群,该传输系统包括事务执行节点和接收节点,其中
事务执行节点,用于判断事务信息的增量是否超过设定阈值,增量用于指示事务执行过程中事务对应的事务信息的变化量;若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点;
接收节点,用于缓存来自于事务执行节点的事务信息片段;若接收到来自于事务执行节点的事务提交消息,则基于事务提交消息和事务信息片段构成事务的事务信息。
在本发明实施方式的第四方面中,提供了一种事务执行节点,应用于数据库集群中,该事务执行节点包括判断单元和传输单元,其中:
判断单元,用于判断事务信息的增量是否超过设定阈值,增量用于指示事务执行过程中事务对应的事务信息的变化量;
传输单元,用于若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点。
在本发明的一个实施例中,传输单元具体用于:获取事务信息片段;基于事务信息片段创建预发布消息,预发布消息包括事务信息片段以及事务信息片段所属的事务标识;将预发布消息传输至接收节点。
在本发明的一个实施例中,传输单元具体在将预发布消息传输至接收节点时,具体用于:若事务的数量为多个,则设置多个事务对应的多个预发布消息的优先级;将多个预发布消息缓存至消息发送队列中;根据优先级从高到低将消息发送队列中缓存的多个预发布消息依次发送至接收节点,其中,优先级越高,发送顺序越靠前。
在本发明的一个实施例中,消息发送队列还缓存有事务提交消息,事务提交消息的优先级高于预发布消息的优先级。
在本发明的一个实施例中,还包括调整单元用于:在传输单元将多个预发布消息缓存至消息发送队列中之后,若消息发送队列中存在与事务提交消息对应同一事务的至少一个预发布消息,则将该至少一个预发布消息的优先级调整为最高优先级。
在本发明的一个实施例中,预发布消息还包括以下之一或组合:事务信息片段的偏移信息,事务执行节点的标识,预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
在本发明的一个实施例中,传输单元基于事务信息片段创建预发布消息时,具体用于:将事务信息片段处于事务信息中的位置作为偏移信息;基于偏移信息、事务信息片段以及事务信息片段所属的事务标识生成预发布消息。
在本发明的一个实施例中,判断单元具体用于:判断事务信息对象中当前存储的事务信息的增量是否超过设定阈值,事务信息对象用于存储对事务进行的至少一个操作对应的事务信息片段。
在本发明的一个实施例中,还包括通知单元用于:在事务提交之前传输单元预先将增量对应的事务信息片段传输至数据库集群的接收节点之后,如果事务执行过程出现异常,则向接收节点发送用于指示删除事务信息片段的通知消息。
在本发明实施方式的第五方面中,提供了一种接收节点,应用于数据库集群中,包括:
缓存单元,用于缓存来自于数据库集群的事务执行节点的事务信息片段;以及接收来自于事务执行节点的事务提交消息;
生成单元,用于若接收单元接收到来自于事务执行节点的事务提交消息,则基于事务提交消息和事务信息片段构成事务的事务信息。
在本发明的一个实施例中,缓存单元缓存来自于数据库集群的事务执行节点的事务信息片段时,具体用于:接收来自于事务执行节点的预发布消息;从预发布消息中获取事务信息片段以及事务信息片段所属的事务标识;根据事务标识对事务信息片段进行存储。
在本发明的一个实施例中,生成单元具体用于:若预发布消息的数量为多个,并且多个预发布消息中获取的事务标识为同一事务标识,则判断多个预发布消息携带的节点全局序号是否存在缺失。若多个预发布消息携带的节点全局序号不存在缺失,则判断多个预发布消息携带的多个偏移信息是否连续。若多个预发布消息携带的多个偏移信息连续,则根据多个偏移信息将多个事务信息片段与从事务提交消息中获取的事务信息片段进行汇总得到事务信息。
在本发明的一个实施例中,还包括确定单元用于:若多个预发布消息的节点全局序号存在缺失,则确定对事务执行节点进行调整。
在本发明的一个实施例中,还包括确定单元用于:若多个预发布消息携带的多个偏移信息不连续,则确定对事务执行节点进行调整。
在本发明的一个实施例中,预发布消息还包括以下之一或组合:事务信息片段的偏移信息,事务执行节点的标识,预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
在本发明的一个实施例中,预发布消息还包括主键信息和数据快照版本。接收节点还包括冲突检测单元用于:在生成单元基于事务提交消息和事务信息片段构成事务的事务信息之前,从预发布消息中获取主键信息和数据快照版本;根据主键信息和数据快照版本对从预发布消息中获取的事务信息片段进行冲突检测;将数据快照版本和经过冲突检测后的事务信息片段,更新至数据库集群的接收节点维护的冲突检测数据库。
在本发明的一个实施例中,生成单元具体用于:将经过冲突检测后的事务信息片段以及从事务提交消息中获取的事务信息片段构成事务信息。
在本发明的一个实施例中,还包括删除单元用于:在缓存单元缓存来自于数据库集群的事务执行节点的事务信息片段之后,若满足以下条件之一则删除事务信息片段:接收到用于指示删除事务信息片段的通知消息;接收到用于指示删除指定偏移位置对应的事务信息片段的指示消息;监测到事务执行节点不属于接收节点所属的数据库集群;基于事务提交消息和事务信息片段生成出事务信息。
在本发明实施方式的第六方面中,提供了一种介质,该介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行第一方面中事务执行节点侧任一实施例的方法,或者该计算机可执行指令用于使计算机执行第二方面中接收节点侧任一实施例的方法。
在本发明实施方式的第七方面中,提供了一种计算设备,包括处理单元、存储器以及输入/输出(In/Out,I/O)接口;存储器,用于存储处理单元执行的程序或指令;处理单元,用于根据存储器存储的程序或指令,执行第一方面中事务执行节点侧任一实施例的方法,或者执行第二方面中接收节点侧任一实施例的方法;I/O接口,用于在处理单元的控制下接收或发送数据。
本发明的实施方式提供的技术方案,通过在事务执行过程中将事务信息片段预先传输至数据库集群的接收节点,实现了事务信息的分段传输,避免了现有技术中因事务提交消息的数据量过大而导致的技术缺陷,缩短了处理事务的响应时间,提高了事务信息的传输稳定性和传输效率,增强了数据库集群的稳定性,提升了用户体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出本发明实施例涉及的一种事务信息的传输系统的结构示意图;
图2示意性地示出本发明实施例涉及的一种事务信息的传输方法的流程示意图;
图3示意性地示出本发明实施例涉及的另一种事务信息的传输方法的流程示意图;
图4A和图4B示意性地示出了本发明实施例涉及的一种调整预发布消息的优先级的场景示意图;
图5示意性地示出本发明实施例涉及的一种对事务进行回滚操作的场景示意图;
图6示意性地示出本发明实施例涉及的一种事务信息的传输方法的场景示意图;
图7示意性地示出本发明实施例涉及的一种事务执行节点的结构示意图;
图8示意性地示出本发明实施例涉及的一种接收节点的结构示意图;
图9示意性地示出本发明实施例涉及的一种介质的结构示意图;
图10示意性地示出本发明实施例涉及的一种计算设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种事务信息的传输方法、系统、介质、装置和计算设备。
在本文中,需要理解的是,所涉及的几个概念的含义如下:
数据库集群技术,是将多台服务器联合起来组成集群来实现综合性能优于单个大型服务器的技术,这种技术不但能满足应用的需要,而且大幅度的节约了投资成本。数据库集群具有以下优势:可扩展性,即数据库集群的性能不限于单一的节点或特定节点,数据库集群中可以动态加入新的节点从而增强数据库集群的性能;高可用性,即数据库集群通过节点冗余使得在一台节点发生故障或无法使用时,还可以将故障节点上所运行的应用程序转移至其他节点接管,消除了单点故障,增强了数据可用性、可达性以及可靠性;负载均衡,均衡数据库集群的计算资源和网络资源,有助于提高数据吞吐量。数据库集群的节点包括但不限于事务执行节点和接收节点,需要说明的是,针对一个或多个的事务执行节点也可以作为其他事务的接收节点,本发明实施例中并不限定。
数据库事务(Database Transaction),即事务信息,是指作为单个逻辑工作单元执行的操作。逻辑工作单元满足原子性、一致性、隔离性和持久性等属性即可称为事务,事务是数据库运行中的逻辑工作单位。
分布式一致性协议是一种基于消息传递的一致性协议,例如Paxos协议。Paxos协议是一个解决分布式系统中,多个节点之间就提交值达成一致(决议)的通信协议。
MySQL数据库,简称MySQL,是一种关系型数据库,MySQL有助于增加数据处理速度,提高数据处理的灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MGR(MySQL group replication)是基于分布式一致性协议构建的高可用高可靠的MySQL集群,能够提供金融级的数据保证。MGR采用传统的存储和计算结合的方式,即ShardNothing。MGR支持多主模式和单主模式。
保存点(savepoint)是事务执行过程中该事务所定义的逻辑点。save point机制中,当事务执行过程结束时会自动删除该事务中所定义的所有保存点,通过对该事务执行回滚操作(rollback)可以将事务执行过程回退到指定的保护点。可选的,本发明实施例涉及的数据库集群支持savepoint机制。
以上概念均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,由于事务提交消息的数据量过大导致现有技术存在以下几个缺陷:第一,MGR节点处理该事务提交消息时出现异常而导致的MGR节点的稳定性差;第二,该事务提交消息占用较大的网络带宽而造成的网络稳定性差;第三,数据传输容错性差,尤其是跨城域网场景下的MGR集群的容错性差;第四,事务提交消息的传输时间长而导致的事务执行性能变差。
为了克服技术存在的问题,本发明中提出了一种事务信息的传输方法、系统、装置、介质和计算设备。该方法包括:判断事务信息的增量是否超过设定阈值,该增量用于指示事务执行过程中事务对应的事务信息的变化量,若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点。该方法通过在事务执行过程中将事务信息片段预先传输至数据库集群的接收节点,实现了事务信息的分段传输,避免了因事务提交消息的数据量过大而导致的现有技术存在的上述几个缺陷,缩短了处理事务的响应时间,提高了事务信息的传输稳定性和传输效率,增强了数据库集群的稳定性,提升了用户体验。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
本发明实施例可以应用于节点信息的传输场景,尤其是应用于数据库集群中事务信息的传输场景。本发明实施例涉及的事务信息用于记录事务执行节点对事务进行的操作,事务信息包括但不限于二进制文件(Binlog),通常事务信息按照消息传递一致性协议的方式进行打包。本发明实施例涉及的节点信息的传输场景中,对于事务执行节点记录的事务信息的传输过程,事务执行节点作为事务信息的发送端,接收节点作为事务信息的接收端;对于非本事务执行节点记录的其他事务信息的传输过程,事务执行节点也可以作为事务信息的接收端,接收节点也可以作为事务信息的发送端。本发明实施例中也不限定事务执行节点和接收节点的数量。本发明实施例涉及的事务信息的数量可以为一个或多个,当事务信息的数量为多个时,这多个事务信息可以来自于同一事务执行节点,也可以来自于不同事务执行节点,本发明实施例中并不限定。
本发明实施例所提供的技术方案适用于事务信息的传输系统,该传输系统的架构如图1所示,可选的该传输系统可以应用于数据库集群。该传输系统包括但不限于事务执行节点101和接收节点102,其中事务执行节点101作为该传输系统的发送端设备,接收节点102作为该传输系统的接收端设备。事务执行节点101与接收节点102的工作原理如下:事务执行节点101判断事务信息的增量是否超过设定阈值,其中该增量用于指示事务执行过程中事务对应的事务信息的变化量;若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点102。接收节点102缓存来自于事务执行节点101的事务信息片段,若接收节点102接收到来自于事务执行节点101的事务提交消息,则接收节点102基于事务提交消息和事务信息片段构成事务的事务信息。综上,图1示出的事务信息传输系统,通过在事务执行过程中将事务信息片段预先传输至数据库集群的接收节点,实现了事务信息的分段传输,避免了现有技术中因事务提交消息的数据量过大而导致的技术缺陷,缩短了处理事务的响应时间,提高了事务信息的传输稳定性和传输效率,增强了数据库集群的稳定性,提升了用户体验。
示例性的,图1示出的传输系统可以是数据库集群的传输系统,该数据库集群的传输系统采用的传输协议包括但不限于分布式一致性协议,例如paxos协议。需要说明的是,本发明实施例适用的传输系统并不限定于数据库集群的传输系统,本发明实施例还适用于其他系统。
示例性方法
下面结合上文所示的应用场景,参考图1来描述根据本发明示例性实施方式的用于事务信息的传输方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
基于本发明实施例提供的传输系统,本发明实施例提供了一种事务信息的传输方法,如图2所示,该传输方法中事务执行节点与接收节点之间的交互过程如下:
S201、判断事务信息的增量是否超过设定阈值,该增量用于指示事务执行过程中事务对应的事务信息的变化量。
S201的一种可能的实现方式是:在事务执行过程中,对事务信息对象中存储的事务信息进行监测,判断该事务信息对象中当前存储的事务信息对应的增量是否超过设定阈值,其中,该事务信息对象用于存储对事务进行的至少一个操作对应的事务信息片段。
当事务类型为数据操纵语言(Data Manipulation Language,DML)时,事务信息对象可以是binlog_trx_cache_data,可选的DML事务的事务信息缓存于IO_CACHE子对象中。在Row格式的Binlog模式下,事务执行节点执行DML事务操作时会生成Binlog日志(Binlog日志也可称为log_event)。具体的,事务执行节点每执行一条DML事务操作,就会将本条DML事务操作记录为相应类型的log_event。其中,DML事务操作包括但不限于insert、update、delete,事务执行节点记录log_event时所调用的函数包括但不限于handler->ha_write_row函数、handler->ha_update_row函数、handler->ha_delete_row函数。在DML事务执行过程中,S201中事务执行节点会通过调用binlog_cache_data->write_event函数将log_event存储于cache_log中,判断该cache_log中存储的log_event的增量,此处的增量可以理解为相对于上一次提交该DML事务时该DML事务对应的log_event,cache_log中当前存储的该DML事务对应的log_event的变化量。需要说明的是,此处仅列举了事务信息对象和事务信息可能采用的一种实现方式,本发明实施例并不限定事务信息对象和事务信息可能采用的其他实现方式。
S202、若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点。
S202的一种实现方式中,当监测到事务信息的增量超出设定阈值时,在事务提交之前可以预先在数据库集群中广播用于承载该增量对应的事务信息片段的预发布消息,从而数据库集群中各接收节点从接收到的预发布消息中获取该增量对应的事务信息片段。需要说明的是,S202中广播预发布消息的方法与现有技术中广播事务发布消息的方法类似,此处不再赘述。
S202的另一种实现方式中,当监测到事务信息的增量超出设定阈值时,在事务提交之前预先生成用于承载该增量对应的事务信息片段的预发布消息,并将该预发布消息通过分布式一致性协议传输至数据库集群的接收节点。如图3所示,该实现方式包括以下步骤:
步骤301:获取事务信息片段。
当事务执行节点监测到事务信息的增量超出设定阈值时,获取在事务信息对象中存储的该增量对应的事务信息片段。可选的,为了便于后续基于事务信息片段还原事务信息,步骤301中事务执行节点还需从事务信息对象中获取事务信息片段的偏移位置,该事务信息片段的偏移位置用于指示该事务信息片段在事务信息对象存储的全量数据中的相对位置。例如,当事务执行节点监测到DML事务信息的增量超出设定阈值时,在该DML事务提交之前,事务执行节点获取cache_log中存储的该增量对应的事务信息片段以及该事务信息片段的偏移位置。
步骤302:基于事务信息片段创建预发布消息。
本发明实施例中,预发布消息包括但不限于事务信息片段以及该事务信息片段所属的事务标识,例如事务标识可以是该事物在MySQL中的标识(例如MRG中的trx_id)。可选的,预发布消息还包括以下之一或组合:事务信息片段的偏移信息,事务执行节点的标识(例如MRG中的nodeid),预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
其中,预发布消息的节点全局序号是指预发布消息对应的事务执行节点中为该预发布消息分配的唯一序号,需理解的是,预发布消息的节点全局序号相对于数据库集群中除本事务执行节点之外的其他节点并不唯一。可选的,预发布消息的节点全局序号与该预发布消息对应的事务执行节点的节点标识构成该预发布消息在数据库集群中的唯一序号。预发布消息的节点全局序号例如MySQL的事务执行节点中基于该事务执行节点的全局64位原子变量分配的序号presend_msg_id;事务信息片段的偏移信息例如可以是事务信息片段在该事务中的偏移序号(比如MySQL中的msg_trx_index),或者事务信息片段在cache_log中的起止偏移位置(比如MySQL中的data_start_offset和data_stop_offset);事务信息片段的数据快照版本例如可以是MySQL中的gtid_executed;事务信息片段的主键信息例如可以是MySQL中log_event group所修改的记录主键信息,该主键信息可以存储于事务的write_sets(也即write_sets列表)中。可选的,预发布消息还可以包括该预发布消息的优先级,例如MySQL中的prority,通常prority的取值默认为0。若已触发事务提交流程,那么该事务对应的未传输的预发布消息的优先级将会提高。需要说明的是,本发明实施例中列举的预发布消息包括的上述信息均可以由事务执行节点维护更新,也可以由数据库集群中的节点共同维护更新,还可以由其他设备维护更新,本发明实施例中并不限定。除了上述信息之外本发明实施例中并不限定预发布消息还包括其他信息,预发布消息包括的其他信息可以与现有技术中事务提交消息包括的信息类似,此处不再赘述。
步骤302中,可以将事务信息片段处于该事务信息中的位置作为偏移信息,基于该偏移信息、事务信息片段以及事务信息片段所属的事务标识生成预发布消息。需要说明的是,步骤302中创建预发布消息的实现方式有多种,此处仅为其中一种实现方式,本发明实施例中并不限定其他的实现方式。
为了解决现有技术中数据库集群在多主(multi-master)场景下存在冲突检测的实时性较差、效率较低的问题,可选的,预发布消息还携带有事务信息片段所涉及的主键信息和数据快照版本(gtid_executed)。示例性的,主键信息的一种可能获取方式为:调用binlog_log_row函数逻辑获取主键信息。具体实施方式可以是:在binlog_log_row函数中调用add_pke将DML事务产生的log_event中的主键信息提取并存储至该DML事务的write_sets中,当log_event存储到cache_log对象时log_event同时会将该主键信息通过binlog_cache_data::write_event函数存储到cache_log对象中。可选的,数据库集群的接收节点可以创建维护write_sets列表,该write_sets列表用于缓存该节点在接收到预发布消息后所修改的所有主键信息,这样事务提交消息中无需携带write_sets列表的全量数据,有助于进一步减少事务提交消息的数据量,提高事务信息的传输效率。
步骤303:将预发布消息传输至接收节点。
步骤303中,在数据库集群中通过Paxos协议将向接收节点传输步骤302生成的预发布消息,以便数据库集群中的接收节点从接收到的预发布消息中获取事务信息片段。
本发明实施例并不限定于通过上述两种实现方式来实现S202,还可以通过其他方式来实现S202,此处不再赘述。
本发明实施例中,可选的,若事务的数量为多个,则设置多个事务对应的多个预发布消息的优先级,将多个预发布消息缓存至消息发送队列中,根据优先级从高到低将消息发送队列中缓存的多个预发布消息依次发送至接收节点。其中,优先级越高,发送顺序越靠前。
示例性的,假设数据库集群为MGR集群,则在该MGR集群中每个节点设置有用于缓存未发送的预发布消息的消息发送队列trx_presend_input_queue,这些节点既可以作为事务执行节点也可以作为接收节点,预发布消息可以是CT_TRX_PRESEND_MESSAGE。同时,还在该MGR集群中每个节点增加一个后台线程trx_presend_thread(即Async msg Sender),该trx_presend_thread用于从trx_presend_input_queue中获取CT_TRX_PRESEND_MESSAGE消息并将该消息广播至数据库集群中的接收节点。一种实现方式中,根据CT_TRX_PRESEND_MESSAGE消息的生成顺序从先至后存储到trx_presend_input_queue中,即在该trx_presend_input_queue中最先生成的CT_TRX_PRESEND_MESSAGE消息被存储在trx_presend_input_queue队列头部,trx_presend_thread从trx_presend_input_queue队列头部获取CT_TRX_PRESEND_MESSAGE消息进行发送。
可选的,消息发送队列还缓存有事务提交消息。为了保证事务提交流程的响应速度,避免预发布消息占用传输资源导致事务提交消息响应不及时的问题,事务提交消息的优先级高于预发布消息的优先级。
相应地,预发布消息在消息发送队列中的状态包括但不限于未发送、已发送还是发送中。在事务提交之前,事务执行节点需轮询消息发送队列中该事务的预发布消息的状态,判断该事务的预发布消息的状态是否均为已发送;如果在消息发送队列中存在处于发送中或未发送状态下该事务的预发布消息,则该事务的事务提交消息需要继续等待直到该事务的预发布消息全部处于已发送状态下。一种实现方式中,事务执行节点在将事务提交消息缓存至消息发送队列中之后,若监测到该消息发送队列中存在与该事务提交消息对应同一事务的至少一个预发布消息,并且该至少一个预发布消息处于未发送状态,则调高该至少一个预发布消息的优先级直到该至少一个预发布消息处于发送中或已发送状态,从而保证该事务提交消息对应的事务能够及时提交。
仍以数据库集群是MGR集群为例,如果在消息发送队列中存在未发送状态下该事务的预发布消息,则需要递增该预发布消息的优先级,并将该预发布消息向trx_presend_input_queue队列头部移动。具体而言,事务执行节点对全局变量cur_commit_trx_no和事务对应的prority进行监控,其中cur_commit_trx_no用于指示当前进入事务提交流程的事务的数量,事务对应的prority用于指示该事务的事务提交消息的发送等待时长。若监测到cur_commit_trx_no大于0且prority小于设定门限,则trx_presend_thread需要等待cur_commit_trx_no变为0才能够预发布消息发送;若监测到prority大于设定门限,则说明该prority对应的事务的事务提交消息的等待时间过长,trx_presend_thread会直接传输该事务的预发布消息完成消息,并将该事务的预发布消息设置为已发送。
图4A和图4B示出了在消息发送队列中调整预发布消息的优先级的可能过程。假设事务执行节点Node1正在处理trx1、trx2、trx3这三个事务,trx1和trx3的事务信息增量均大于设定阈值,trx2的事务信息增量小于设定阈值,此时trx2的事务发布消息T2处于发送中的状态,消息发送队列中缓存有trx1的预发布消息T1以及trx3的预发布消息T3和T4,这三个预发布消息按照生成时间顺序从先至后排列为T1、T3、T4,这三个预发布消息的优先级均为p0,如图4A所示。当监测到trx3的事务提交消息T5时,将trx3的预发布消息T3和T4的优先级调高为p1,并将T3和T4移动至消息发送队列头部,如图4B所示。预先设置T5的等待周期为1秒,则T5每等待1秒,就将预发布消息T3和T4的优先级调高一个等级;预发布消息T3和T4的优先级调高后,若监测到预发布消息T3和T4的当前优先级超过预设门限,则忽略发送事务发布消息T2,即先发送预发布消息T3和T4。
在事务提交之前,且在S202中预先将增量对应的事务信息片段传输至数据库集群中的接收节点之后,如果事务执行过程出现异常,则事务执行节点向数据库集群中的接收节点发送用于指示删除事务信息片段的通知消息。
S203、接收节点缓存来自于数据库集群的事务执行节点的事务信息片段。
S203中接收节点缓存来自于数据库集群的事务执行节点的事务信息片段的实现方法有多种。其中一种可能的实现方式为,接收节点通过分布式一致性协议接收预发布消息,从该预发布消息中获取该预发布消息所承载的事务信息片段以及该事务信息片段所属的事务标识,基于事务标识对事务信息片段进行缓存和分类管理。如图3所示,该实现方式包括以下步骤:
步骤304:接收节点接收来自于事务执行节点的预发布消息。
步骤305:接收节点从预发布消息中获取事务信息片段以及事务信息片段所属的事务标识。
可选的,接收节点还可以从预发布消息中获取以下信息之一或组合:事务信息片段的偏移信息,事务执行节点的标识,预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
步骤306:接收节点根据事务标识对事务信息片段进行存储。
需要说明的是,步骤304至步骤306中的预发布消息和上文中的预发布消息类似,相似之处参见上文中步骤302的相关描述,此处不再赘述。
可选的,在S203之后若满足以下几个条件之一则接收节点删除事务信息片段,即:接收节点接收到用于指示删除事务信息片段的通知消息;接收节点接收到用于指示删除指定偏移位置对应的事务信息片段的指示消息;接收节点监测到事务执行节点不属于接收节点所属的数据库集群;接收节点基于事务提交消息和事务信息片段生成出事务信息。接收节点通过删除自身缓存的事务信息片段,有助于降低数据库集群的节点信息维护难度,提升数据库集群中的节点的性能。
S204、若接收节点接收到来自于事务执行节点的事务提交消息,则基于事务提交消息和事务信息片段构成事务的事务信息。
S204中,若预发布消息的数量为多个,并且多个预发布消息中获取的事务标识为同一事务标识,则说明这多个预发布消息承载有同一事务对应的事务信息片段,此情况下需判断多个预发布消息携带的节点全局序号是否存在缺失。若多个预发布消息的节点全局序号存在缺失,则说明这多个预发布消息对应的事务执行节点存在异常,此情况下需要对该事务执行节点进行调整;若多个预发布消息携带的节点全局序号不存在缺失,则此情况下再进一步判断多个预发布消息携带的多个偏移信息是否连续。若多个预发布消息携带的多个偏移信息不连续,则说明这多个预发布消息对应的事务执行节点存在异常,此情况下也需要对该事务执行节点进行调整;若多个预发布消息携带的多个偏移信息连续,则此情况下可以根据多个偏移信息将多个事务信息片段与从事务提交消息中获取的事务信息片段进行汇总得到事务信息。
示例性的,接收节点接收多个CT_TRANSACTION_MESSAGE消息后,解析这多个CT_TRANSACTION_MESSAGE消息获取对应的node_id、事务标识id以及节点全局序号presend_msg_id。若node_id、id以及presend_msg_id存在缺失,则确定这多个CT_TRANSACTION_MESSAGE消息存在逻辑问题,这种情况下可以报错并对事务执行节点进行调整。若node_id、id以及presend_msg_id完整,则进一步验证这多个预发布消息中的起止偏移信息是否连续。若这多个预发布消息中的起止偏移信息不连续,则也需要报错并对事务执行节点进行调整。若这多个预发布消息中的起止偏移信息连续,则从这多个预发布消息中获取事务信息片段与从事务提交消息中的事务信息片段进行汇总得到该事务的事务信息,该事务的事务信息用于进行事务冲突检测,删除这多个预发布消息。
可选的,在S204中基于事务提交消息和事务信息片段构成事务的事务信息之前,接收节点从预发布消息中获取主键信息和数据快照版本,根据主键信息和数据快照版本对从预发布消息中获取的事务信息片段进行冲突检测,将数据快照版本和经过冲突检测后的事务信息片段更新至该接收节点维护的冲突检测数据库。进一步的,接收节点还可以将接收到的事务信息片段与除该事务信息片段之外的其他事务信息片段进行冲突检测。S204中,接收节点将经过冲突检测后的事务信息片段以及从事务提交消息中获取的事务信息片段构成事务信息。这样,有助于实现对事物信息的实时冲突检测,从而避免事务信息过大造成的冲突检测耗时长,提高了冲突检测的效率。
需要说明的是,本发明实施例涉及的冲突检测方法与现有技术类似,可参见现有技术中对事务提交消息中的事务信息进行冲突检测的方法,此处不再赘述。
具体而言,一种可能的冲突检测过程如下:接收节点获取通过Paxos协议传输的事务信息片段、增量对应的主键信息以及事务执行时的第一数据库快照版本,根据增量对应的主键信息在冲突检测数据库中查找该主键信息对应的第二数据库快照版本。若查找到的第二数据库快照版本与事务执行时的第一数据库快照版本不一致,且第一数据库快照版本的更新时间晚于第二数据库快照版本的更新时间,则停止冲突检测流程,回滚事务;若查找到的第二数据库快照版本与事务执行时的第一数据库快照版本不一致,且第二数据库快照版本晚于第一数据库快照版本,则将事务执行时的第一数据库快照版本更新到冲突检测数据库中。
可选的,接收节点向事务执行节点发送冲突检测结果。在S202之后,事务执行节点获取接收节点反馈的冲突检测结果,当冲突检测结果指示该事务信息片段未通过冲突检测时,事务执行节点基于该冲突检测结果对该事务信息片段对应的事务进行回滚;当冲突检测结果指示事务信息片段通过冲突检测时,事务执行节点基于该冲突检测结果继续执行该事务信息片段对应的事务。通过上述方法有助于避免事务执行节点继续执行存在冲突的事务,避免事务执行节点的节点资源浪费。
示例性的,事务执行节点Node1采用trx_presend_thread向MGR的接收节点Node2传输携带有事务trx3的事务信息片段以及该事务信息片段对应的write_sets(即主键信息)和gtid_executed(即数据快照版本)的预发布消息T3后,Node1接收到Node2对T3的冲突检测结果,该冲突检测结果指示Node2先于Node1对trx3执行操作导致trx3的事务信息片段未通过冲突检测,Node1基于该冲突检测结果触发对trx3回滚操作,并删除消息发送队列中trx3未发送的预发布消息T4,如图5所示。
在数据库集群中事务异常触发回滚操作(rollback)的情况下或者事务执行节点宕机等情况下,事务执行节点均不会广播事务提交消息。对事务异常且事务执行节点未宕机的情况,数据库集群的节点通过Paxos协议广播自身维护的当前事务视图(mysql view)来通知其他节点对无效的预发布消息进行清理。对于事务执行节点未宕机的情况,处理视图(mgrview)变更时,即数据库集群的节点发生变化,数据库集群中的其他节点将发生变化的节点对应的预发布消息进行清理,其中节点发生的变化包括但不限于节点退出数据库集群、节点失联等。
本发明实施例中,回滚操作的一种可能的具体实施方式为,在数据库集群的服务(server)层中,通过MySQL的binlog_savepoint_set接口记录每个savepoint创建时cache_log的偏移位置,即此时cache_log中log_event的大小;当触发回滚操作时,通过MySQL的binlog_savepoint_rollback接口将cache_log中存储的事务信息截断(truncate)至指定的savepoint对应的偏移位置。由于cache_log中存储的事务信息回滚至指定的savepoint,进一步的,对新生成的该事务的事务信息片段的偏移位置进行重新编号。可选的,数据库集群的各个节点缓存的预发布消息进行回滚操作后对处理事务提交消息中承载的事务信息片段以及该事务信息片段的偏移位置进行更新。需要说明的是,本发明实施例中并不限定采用其他具体实施方式实现回滚操作,此处不再赘述。
可选的,新节点加入数据库集群后,从该数据库集群的其他节点的数据缓存中将全量的事务信息片段拷贝到该新节点中进行存储,从而实现数据库集群对新节点的适配。
下面将结合图6举例说明本发明实施例中事务信息的传输方法。假设数据库集群包括三个节点Node1、Node2、Node3,对于事务trx1、trx2、trx3、trx4,Node1为事务执行节点,Node2和Node3为接收节点。如图6所示,Node1最先开始执行trx1,并在T1和T7两个时刻分别发送了trx1的预发布消息Trx1-group1和Trx1-group2,Node1未提交trx1。而trx2、trx3以及trx4都在执行事务提交流程(commit),Node1在T2时刻发送了trx2事务提交消息Trx2-group1,Node1在T5时刻发送了trx3事务提交消息Trx3-group3,Node1在T6时刻发送了trx4事务提交消息Trx4-group1。
以trx3的事务信息片段的传输过程为例,Node1将trx3的事务信息的增量分为3个事务信息片段,这3个事务信息片段采用预发布消息Trx3-group1、预发布消息Trx3-group2以及事务提交消息Trx3-group3进行承载,预发布消息Trx3-group1和Trx3-group2分别在T3时刻和T4时刻放入消息发送队列通过Async msg Sender接口采用Paxos协议在数据库集群内进行广播,事务提交消息Trx3-group3通过Sync msg Sender接口采用Paxos协议在数据库集群内进行广播。Node2接收到T4时刻以及该时刻T4之前广播的预发布消息后,Node2缓存预发布消息Trx1-group1、Trx3-group1以及Trx3-group2。Node3接收到T7时刻以及该时刻T7之前广播的预发布消息后,Node3缓存3个预发布消息Trx1-group1和Trx1-group2,同时由于Node3接收到T5时刻广播的trx3的事务提交消息Trx3-group3,Node3将缓存的Trx3-group1和Trx3-group2合并到Trx3-group3中继续执行后续trx3的事务提交流程,并删除缓存中的Trx3-group1和Trx3-group2。
本发明实施例提供的事务信息的传输方法,通过在事务执行过程中将事务信息片段预先传输至数据库集群的接收节点,实现了事务信息的分段传输,避免了现有技术中因事务提交消息的数据量过大而导致的技术缺陷,缩短了处理事务的响应时间,提高了事务信息的传输稳定性和传输效率,增强了数据库集群的稳定性,提升了用户体验。
示例性装置
在介绍了本发明示例性实施方式的方法之后,接下来,介绍本发明提供了示例性实施的装置。本发明提供的事务执行节点可以实现图2对应的实施例中事务执行节点侧提供的方法。参见图7,该事务执行节点700应用于数据库集群中,该事务执行节点700至少包括判断单元701和传输单元702;其中,
判断单元701,用于判断事务信息的增量是否超过设定阈值,增量用于指示事务执行过程中事务对应的事务信息的变化量;
传输单元702,用于若增量超过设定阈值,则在事务提交之前预先将增量对应的事务信息片段传输至数据库集群的接收节点。
可选的,传输单元702具体用于:获取事务信息片段;基于事务信息片段创建预发布消息,预发布消息包括事务信息片段以及事务信息片段所属的事务标识;将预发布消息传输至接收节点。
可选的,传输单元702具体在将预发布消息传输至接收节点时,具体用于:若事务的数量为多个,则设置多个事务对应的多个预发布消息的优先级;将多个预发布消息缓存至消息发送队列中;根据优先级从高到低将消息发送队列中缓存的多个预发布消息依次发送至接收节点,其中,优先级越高,发送顺序越靠前。
可选的,消息发送队列还缓存有事务提交消息,事务提交消息的优先级高于预发布消息的优先级。
可选的,还包括调整单元703用于:在传输单元702将多个预发布消息缓存至消息发送队列中之后,若消息发送队列中存在与事务提交消息对应同一事务的至少一个预发布消息,则将该至少一个预发布消息的优先级调整为最高优先级。
可选的,预发布消息还包括以下之一或组合:事务信息片段的偏移信息,事务执行节点的标识,预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
可选的,传输单元702基于事务信息片段创建预发布消息时,具体用于:将事务信息片段处于事务信息中的位置作为偏移信息;基于偏移信息、事务信息片段以及事务信息片段所属的事务标识生成预发布消息。
可选的,判断单元701具体用于:判断事务信息对象中当前存储的事务信息的增量是否超过设定阈值,事务信息对象用于存储对事务进行的至少一个操作对应的事务信息片段。
可选的,还包括通知单元704用于:在事务提交之前传输单元702预先将增量对应的事务信息片段传输至数据库集群的接收节点之后,如果事务执行过程出现异常,则向接收节点发送用于指示删除事务信息片段的通知消息。
对应于图7所示的实施例中的事务执行节点700,本发明还提供了一种接收节点,该接收节点可以实现图2对应的实施例中接收节点侧提供的方法。参见图8,该接收节点800应用于数据库集群中,该接收节点800至少包括缓存单元801和生成单元802;其中,
缓存单元801,用于缓存来自于数据库集群的事务执行节点的事务信息片段;以及接收来自于事务执行节点的事务提交消息;
生成单元802,用于若接收单元接收到来自于事务执行节点的事务提交消息,则基于事务提交消息和事务信息片段构成事务的事务信息。
可选的,缓存单元801缓存来自于数据库集群的事务执行节点的事务信息片段时,具体用于:接收来自于事务执行节点的预发布消息;从预发布消息中获取事务信息片段以及事务信息片段所属的事务标识;根据事务标识对事务信息片段进行存储。
可选的,生成单元802具体用于:若预发布消息的数量为多个,并且多个预发布消息中获取的事务标识为同一事务标识,则判断多个预发布消息携带的节点全局序号是否存在缺失。若多个预发布消息携带的节点全局序号不存在缺失,则判断多个预发布消息携带的多个偏移信息是否连续。若多个预发布消息携带的多个偏移信息连续,则根据多个偏移信息将多个事务信息片段与从事务提交消息中获取的事务信息片段进行汇总得到事务信息。
可选的,还包括确定单元803用于:若多个预发布消息的节点全局序号存在缺失,则确定对事务执行节点进行调整。
可选的,还包括确定单元803用于:若多个预发布消息携带的多个偏移信息不连续,则确定对事务执行节点进行调整。
可选的,预发布消息还包括以下之一或组合:事务信息片段的偏移信息,事务执行节点的标识,预发布消息的节点全局序号,事务信息片段的主键信息,事务信息片段的数据快照版本。
可选的,预发布消息还包括主键信息和数据快照版本。接收节点800还包括冲突检测单元用于:在生成单元802基于事务提交消息和事务信息片段构成事务的事务信息之前,从预发布消息中获取主键信息和数据快照版本;根据主键信息和数据快照版本对从预发布消息中获取的事务信息片段进行冲突检测;将数据快照版本和经过冲突检测后的事务信息片段,更新至数据库集群的接收节点维护的冲突检测数据库。
可选的,生成单元802具体用于:将经过冲突检测后的事务信息片段以及从事务提交消息中获取的事务信息片段构成事务信息。
可选的,还包括删除单元804用于:在缓存单元801缓存来自于数据库集群的事务执行节点的事务信息片段之后,若满足以下条件之一则删除事务信息片段:接收到用于指示删除事务信息片段的通知消息;接收到用于指示删除指定偏移位置对应的事务信息片段的指示消息;监测到事务执行节点不属于接收节点所属的数据库集群;基于事务提交消息和事务信息片段生成出事务信息。
示例性介质
在介绍了本发明示例性实施方式的方法和装置之后,接下来,参考图9,本发明提供了一种示例性介质,该介质存储有计算机可执行指令,该计算机可执行指令可用于使所述计算机执行图2对应的本发明示例性实施方式中事务执行节点侧任一项所述的方法,或者该计算机可执行指令可用于使所述计算机执行图2对应的本发明示例性实施方式中接收节点侧任一项所述的方法。
示例性计算设备
在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图10,介绍本发明提供的一种示例性计算设备10,该计算设备10包括处理单元1001、存储器1002、总线1003、外部设备1004、I/O接口1005以及网络适配器1006,该存储器1002包括随机存取存储器(random access memory,RAM)10021、高速缓存存储器10022、只读存储器(Read-OnlyMemory,ROM)10023以及至少一片存储单元10024构成的存储单元阵列10025。其中该存储器1002,用于存储处理单元1001执行的程序或指令;该处理单元1001,用于根据该存储器1002存储的程序或指令,执行图2对应的本发明示例性实施方式中事务执行节点侧任一项所述的方法,或者执行图2对应的本发明示例性实施方式中接收节点侧任一项所述的方法;该I/O接口1005,用于在该处理单元1001的控制下接收或发送数据。
应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种事务信息的传输方法,应用于数据库集群中,其特征在于,包括:
判断事务信息的增量是否超过设定阈值,所述增量用于指示事务执行过程中所述事务对应的事务信息的变化量;
若所述增量超过所述设定阈值,则在所述事务提交之前预先将所述增量对应的事务信息片段传输至所述数据库集群的接收节点。
2.根据权利要求1所述的传输方法,其特征在于,所述在所述事务提交之前预先将所述增量对应的事务信息片段传输至所述数据库集群的接收节点,包括:
获取所述事务信息片段;
基于所述事务信息片段创建预发布消息,所述预发布消息包括所述事务信息片段以及所述事务信息片段所属的事务标识;
将所述预发布消息传输至所述接收节点。
3.根据权利要求2所述的传输方法,其特征在于,所述预发布消息还包括以下之一或组合:
所述事务信息片段的偏移信息,事务执行节点的标识,所述预发布消息的节点全局序号,所述事务信息片段的主键信息,所述事务信息片段的数据快照版本。
4.根据权利要求1至3任一所述的传输方法,其特征在于,所述在所述事务提交之前预先将所述增量对应的事务信息片段传输至所述数据库集群的接收节点之后,还包括:
如果所述事务执行过程出现异常,则向所述接收节点发送用于指示删除所述事务信息片段的通知消息。
5.一种事务信息的传输方法,应用于数据库集群中,其特征在于,包括:
缓存来自于所述数据库集群的事务执行节点的事务信息片段;
若接收到来自于所述事务执行节点的事务提交消息,则基于所述事务提交消息和所述事务信息片段构成所述事务的事务信息。
6.根据权利要求5所述的传输方法,其特征在于,所述缓存来自于所述数据库集群的事务执行节点的事务信息片段,包括:
接收来自于所述事务执行节点的预发布消息;
从所述预发布消息中获取所述事务信息片段以及所述事务信息片段所属的事务标识;
根据所述事务标识对所述事务信息片段进行存储。
7.根据权利要求6所述的传输方法,其特征在于,所述预发布消息还包括所述主键信息和所述数据快照版本;
所述基于所述事务提交消息和所述事务信息片段构成所述事务的事务信息之前,还包括:
从所述预发布消息中获取所述主键信息和所述数据快照版本;
根据所述主键信息和所述数据快照版本对从所述预发布消息中获取的所述事务信息片段进行冲突检测;
将所述数据快照版本和经过冲突检测后的所述事务信息片段,更新至所述数据库集群的接收节点维护的冲突检测数据库。
8.一种事务信息的传输系统,应用于数据库集群,其特征在于,包括:
事务执行节点,用于判断事务信息的增量是否超过设定阈值,所述增量用于指示事务执行过程中所述事务对应的事务信息的变化量;若所述增量超过所述设定阈值,则在所述事务提交之前预先将所述增量对应的事务信息片段传输至所述数据库集群的接收节点;
所述接收节点,用于缓存来自于所述事务执行节点的事务信息片段;若接收到来自于所述事务执行节点的事务提交消息,则基于所述事务提交消息和所述事务信息片段构成所述事务的事务信息。
9.一种介质,其特征在于,所述介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行权利要求1至4任一项所述的方法,或者所述计算机可执行指令用于使所述计算机执行权利要求5至7任一项所述的方法。
10.一种计算设备,其特征在于,包括处理单元、存储器以及I/O接口;其中
所述存储器,用于存储所述处理单元执行的程序或指令;
所述处理单元,用于根据所述存储器存储的程序或指令,执行权利要求1至4任一项所述的方法,或者执行权利要求5至7任一项所述的方法;
所述I/O接口,用于在所述处理单元的控制下接收或发送数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811108155.1A CN109388481B (zh) | 2018-09-21 | 2018-09-21 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811108155.1A CN109388481B (zh) | 2018-09-21 | 2018-09-21 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109388481A true CN109388481A (zh) | 2019-02-26 |
CN109388481B CN109388481B (zh) | 2021-08-17 |
Family
ID=65418985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811108155.1A Active CN109388481B (zh) | 2018-09-21 | 2018-09-21 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388481B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175070A (zh) * | 2019-05-21 | 2019-08-27 | 网易(杭州)网络有限公司 | 分布式数据库的管理方法、装置、系统、介质及电子设备 |
CN111045794A (zh) * | 2019-12-17 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 分布式事务处理方法、装置、系统、计算机设备及存储介质 |
CN111901684A (zh) * | 2020-07-30 | 2020-11-06 | 深圳市康冠科技股份有限公司 | 一种文件分类方法及相关装置 |
CN112231071A (zh) * | 2020-05-20 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN112860686A (zh) * | 2019-11-28 | 2021-05-28 | 中兴通讯股份有限公司 | 数据处理方法、装置、计算机设备和计算机可读介质 |
CN114510495A (zh) * | 2022-04-21 | 2022-05-17 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853186A (zh) * | 2008-12-31 | 2010-10-06 | Sap股份公司 | 分布式事务恢复系统和方法 |
CN102207883A (zh) * | 2011-06-01 | 2011-10-05 | 华中科技大学 | 异构分布式实时系统的事务调度方法 |
CN102508834A (zh) * | 2011-09-22 | 2012-06-20 | 用友软件股份有限公司 | 基于消息的大型事务应用装置和方法 |
CN102693168A (zh) * | 2011-03-22 | 2012-09-26 | 中兴通讯股份有限公司 | 一种数据备份恢复的方法、系统和服务节点 |
CN105760236A (zh) * | 2016-05-13 | 2016-07-13 | 中国工商银行股份有限公司 | 一种分布式计算机集群下的数据采集方法及系统 |
CN105786592A (zh) * | 2014-12-15 | 2016-07-20 | 北大方正集团有限公司 | 一种分布式事务的处理方法及装置 |
CN105892957A (zh) * | 2016-06-14 | 2016-08-24 | 中山大学 | 一种基于动态分片的分布式事务执行方法 |
US20160364158A1 (en) * | 2015-06-10 | 2016-12-15 | Microsoft Technology Licensing, Llc | Recovery in data centers |
CN107122354A (zh) * | 2016-02-24 | 2017-09-01 | 华为技术有限公司 | 事务执行方法、装置及系统 |
CN107547606A (zh) * | 2016-06-29 | 2018-01-05 | 中兴通讯股份有限公司 | 数据处理方法、集群管理器、资源管理器、数据处理系统 |
CN107766080A (zh) * | 2016-08-23 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 事务消息处理方法、装置、设备及系统 |
-
2018
- 2018-09-21 CN CN201811108155.1A patent/CN109388481B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853186A (zh) * | 2008-12-31 | 2010-10-06 | Sap股份公司 | 分布式事务恢复系统和方法 |
CN102693168A (zh) * | 2011-03-22 | 2012-09-26 | 中兴通讯股份有限公司 | 一种数据备份恢复的方法、系统和服务节点 |
CN102207883A (zh) * | 2011-06-01 | 2011-10-05 | 华中科技大学 | 异构分布式实时系统的事务调度方法 |
CN102508834A (zh) * | 2011-09-22 | 2012-06-20 | 用友软件股份有限公司 | 基于消息的大型事务应用装置和方法 |
CN105786592A (zh) * | 2014-12-15 | 2016-07-20 | 北大方正集团有限公司 | 一种分布式事务的处理方法及装置 |
US20160364158A1 (en) * | 2015-06-10 | 2016-12-15 | Microsoft Technology Licensing, Llc | Recovery in data centers |
CN107122354A (zh) * | 2016-02-24 | 2017-09-01 | 华为技术有限公司 | 事务执行方法、装置及系统 |
CN105760236A (zh) * | 2016-05-13 | 2016-07-13 | 中国工商银行股份有限公司 | 一种分布式计算机集群下的数据采集方法及系统 |
CN105892957A (zh) * | 2016-06-14 | 2016-08-24 | 中山大学 | 一种基于动态分片的分布式事务执行方法 |
CN107547606A (zh) * | 2016-06-29 | 2018-01-05 | 中兴通讯股份有限公司 | 数据处理方法、集群管理器、资源管理器、数据处理系统 |
CN107766080A (zh) * | 2016-08-23 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 事务消息处理方法、装置、设备及系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175070A (zh) * | 2019-05-21 | 2019-08-27 | 网易(杭州)网络有限公司 | 分布式数据库的管理方法、装置、系统、介质及电子设备 |
CN110175070B (zh) * | 2019-05-21 | 2021-10-29 | 网易(杭州)网络有限公司 | 分布式数据库的管理方法、装置、系统、介质及电子设备 |
CN112860686A (zh) * | 2019-11-28 | 2021-05-28 | 中兴通讯股份有限公司 | 数据处理方法、装置、计算机设备和计算机可读介质 |
CN111045794A (zh) * | 2019-12-17 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 分布式事务处理方法、装置、系统、计算机设备及存储介质 |
CN111045794B (zh) * | 2019-12-17 | 2023-04-25 | 深圳前海环融联易信息科技服务有限公司 | 分布式事务处理方法、装置、系统、计算机设备及存储介质 |
CN112231071A (zh) * | 2020-05-20 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111901684A (zh) * | 2020-07-30 | 2020-11-06 | 深圳市康冠科技股份有限公司 | 一种文件分类方法及相关装置 |
CN114510495A (zh) * | 2022-04-21 | 2022-05-17 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
CN114510495B (zh) * | 2022-04-21 | 2022-07-08 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109388481B (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388481B (zh) | 一种事务信息的传输方法、系统、装置、计算设备和介质 | |
US20210042266A1 (en) | Geographically-distributed file system using coordinated namespace replication over a wide area network | |
CN110209734B (zh) | 数据复制方法、装置、计算机设备及存储介质 | |
US8868492B2 (en) | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica | |
US9325757B2 (en) | Methods and systems for fault-tolerant distributed stream processing | |
US8838919B2 (en) | Controlling data lag in a replicated computer system | |
WO2016070375A1 (zh) | 一种分布式存储复制系统和方法 | |
US10831741B2 (en) | Log-shipping data replication with early log record fetching | |
CN110990432B (zh) | 一种跨机房同步分布式缓存集群的装置和方法 | |
US7330860B2 (en) | Fault tolerant mechanism to handle initial load of replicated object in live system | |
CN105493474B (zh) | 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法 | |
WO2020025049A1 (zh) | 数据同步的方法、装置、数据库主机及存储介质 | |
CN111064789B (zh) | 数据迁移的方法和系统 | |
CN113010496A (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
CN113553346B (zh) | 大规模实时数据流一体化处理、转发和存储方法及系统 | |
CN109739435B (zh) | 文件存储和更新方法及装置 | |
US11640261B2 (en) | Log processing method to avoid log collision, and related device and system | |
US20180024896A1 (en) | Information processing system, information processing apparatus, and information processing method | |
CN112422628A (zh) | Redis-canal跨机房缓存同步系统 | |
CN110807039A (zh) | 一种云计算环境下数据一致性维护系统及方法 | |
CN105302670B (zh) | 一种采用多机冗余方式对车站进行监控的方法及装置 | |
CN108090056B (zh) | 数据查询方法、装置及系统 | |
US8359601B2 (en) | Data processing method, cluster system, and data processing program | |
CN105323271B (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN114363350A (zh) | 一种服务治理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |