CN102571850B - 事务提交系统、方法及设备 - Google Patents
事务提交系统、方法及设备 Download PDFInfo
- Publication number
- CN102571850B CN102571850B CN201010606600.4A CN201010606600A CN102571850B CN 102571850 B CN102571850 B CN 102571850B CN 201010606600 A CN201010606600 A CN 201010606600A CN 102571850 B CN102571850 B CN 102571850B
- Authority
- CN
- China
- Prior art keywords
- indication message
- mediation device
- submitted
- rollback
- message
- 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.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种事务提交系统、方法及设备,该方法包括步骤:数据库服务器若在规定时间长度内未接收到正式提交指示消息或回滚指示消息,则向备用交易中间件协调设备发送事务询问消息;接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,所述正式提交指示消息或回滚指示消息为备用交易中间件协调设备根据主用交易中间件协调设备的操作记录信息确定出的;根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。采用本发明技术方案,解决了现有技术中存在的耗费了数据库服务器较多的处理资源,数据库服务器的处理效率较低的问题。
Description
技术领域
本发明涉及事务处理技术领域,尤其涉及一种事务提交系统、方法及设备。
背景技术
分布式事务处理(DTP,Distributed Transaction Processing)是指一个事务可能涉及到多个数据库服务器的操作,DTP的对象一般是全局事务,每个数据库服务器执行的操作为该全局事务的某个分支事务,例如,某事务为对多个不同的数据库服务器分别进行资源更新,则此事务为全局事务,每个数据库服务器所做的资源更新操作即为对应的分支事务。
当处理全局事务时,应用程序需要在程序内部直接通知各数据库服务器开始分支事务、结束分支事务以及提交分支事务,当出现异常情况时,必须由专用程序对各数据库服务器进行反向操作才能完成事务的回滚,因此当全局事务包含很多个分支事务时,处理过程就非常复杂。
针对上述问题,现有技术提出了使用交易中间件协调设备来通知和协调各数据库服务器进行开始、结束、提交或回滚分支事务,其中,针对一个全局事务,各数据库服务器的提交分支事务或回滚分支事务的决定必须产生统一的结果,即全部数据库服务器均提交分支事务或全部数据库服务器均回滚分支事务,如果其中一个数据库服务器的任意一个操作结果为失败,则参与该全局事务的所有数据库服务器必须全部回滚分支事务。
如图1所示,为现有技术中全局事务处理方法流程图,其具体处理流程如下:
步骤11,应用程序首先通知交易中间件协调设备开始一个全局事务;
步骤12,交易中间件协调设备通过扩展体系(XA,Extended Architecture)接口函数通知参与该全局事务的各数据库服务器开始对应的分支事务;
步骤13,应用程序对各数据库服务器管理的资源进行相应操作,数据库服务器记录该全局事务对本地资源的所有操作的操作信息;
步骤14,交易中间件协调设备在应用程序完成操作后,通过XA接口函数通知各数据库服务器结束分支事务;
步骤15,应用程序通知交易中间件协调设备提交该全局事务;
步骤16,交易中间件协调设备通过XA接口函数,要求各个数据库服务器进行预提交;
步骤17,待所有数据库服务器均确认可以提交后,交易中间件协调设备要求各个数据库服务器做正式提交;
步骤18,各数据库服务器完成提交后,向交易中间件协调设备发送正式提交完成消息,该全局事务结束;
步骤19,若其中一个或几个数据库服务器不能提交,则交易中间件协调设备要求各个数据库服务器进行分支事务回滚;
步骤110,各数据库服务器完成分支事务回滚后,向交易中间件协调设备发送回滚完成消息,该全局事务结束。
现有技术中,一般使用两阶段提交的方式来完成一个全局事务的提交,分别为预提交阶段和正式提交阶段,如图2所示,为现有技术中的事务提交方法流程图,其具体处理流程如下:
步骤21,交易中间件协调设备向各数据库服务器发送预提交指示消息,提示各个数据库服务器准备提交各自的分支事务;
步骤22,数据库服务器接收到预提交指示消息后,若确认可以提交自身的分支事务,则向交易中间件协调设备发送预提交确认消息,若确认不能提交自身的分支事务,则向交易中间件协调设备发送预提交失败消息;
此时数据库服务器并未真正提交或回滚该分支事务,因此数据库服务器并不能释放该分支事务所占用的资源;
步骤23,若所有数据库服务器均发送了预提交确认消息,则交易中间件协调设备向所有数据库服务器发送正式提交指示消息;
步骤24,数据库服务器在接收到正式提交指示消息后,将自身的分支事务进行提交,由于分支事务对应的数据始终是保存在回滚段中,因此在正式提交前,数据库服务器不会正式存储该数据,一旦确认将该分支事务提交,则数据库服务器将该数据正式存入数据库;
步骤25,数据库服务器释放该分支事务所占用的资源;
步骤26,数据库服务器向交易中间件协调设备发送正式提交完成消息;
步骤27,若至少一个数据库服务器发送了预提交失败消息,则交易中间件协调设备向所有数据库服务器发送回滚指示消息;
步骤28,数据库服务器在接收到回滚指示消息后,将自身的分支事务进行回滚,即将该分支事务已经完成的、对数据库服务器的更新操作进行撤销;
步骤29,数据库服务器释放该分支事务所占用的资源;
步骤210,数据库服务器向交易中间件协调设备发送回滚完成消息。
其中,步骤21~步骤22为预提交阶段,步骤23~步骤210为正式提交阶段。
由上可见,数据库服务器只有在完成提交(完成正式提交或者完成回滚)后,才能释放分支事务所占用的资源,若由于网络信号质量较低、交易中间件协调设备业务繁忙或数据库服务器业务繁忙等原因,交易中间件协调设备虽然发送了正式提交指示消息或回滚指示消息,但是数据库服务器并未接收到,则数据库服务器会一直等待交易中间件协调设备的指示,因此耗费了数据库服务器较多的处理资源,使得数据库服务器无法为其他事务分配足够的处理资源,造成事务在数据库服务器中阻塞,降低了数据库服务器的处理效率,严重时可能导致数据库服务器无法正常工作。
发明内容
本发明实施例提供一种事务提交系统、方法及设备,用以解决现有技术中存在的耗费了数据库服务器较多的处理资源,数据库服务器的处理效率较低的问题。
本发明实施例技术方案如下:
一种事务提交系统,包括主用交易中间件协调设备,还包括数据库服务器和备用交易中间件协调设备,其中:所述数据库服务器,用于接收主用交易中间件协调设备发送的预提交指示消息,向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息,若在第一规定时间长度内未接收到所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,则向所述备用交易中间件协调设备发送事务询问消息,接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,并根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚;所述备用交易中间件协调设备,用于在接收到所述事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息,确定出主用交易中间件协调设备向所述数据库服务器发送的正式提交指示消息或回滚指示消息后,发送给所述数据库服务器。
一种事务提交方法,该方法包括步骤:接收到主用交易中间件协调设备发送的预提交指示消息后,向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;若在规定时间长度内未接收到所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,则向备用交易中间件协调设备发送事务询问消息;以及接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,所述正式提交指示消息或回滚指示消息为备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息确定出的;根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
一种事务提交装置,包括:第一接收单元,用于接收主用交易中间件协调设备发送的预提交指示消息;第一发送单元,用于向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;判断单元,用于判断是否在规定时间长度内接收到所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息;第二发送单元,用于在判断单元的判断结果为否时,向备用交易中间件协调设备发送事务询问消息;
第二接收单元,用于接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,所述正式提交指示消息或回滚指示消息为备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息确定出的;提交回滚单元,用于根据第二接收单元接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
一种交易中间件协调设备,包括:接收单元,用于接收数据库服务器发送的事务询问消息;获得单元,用于获得对所述数据库服务器进行事务提交管理的主用交易中间件协调设备的操作记录信息;确定单元,用于根据获得单元获得的操作记录信息,确定所述主用交易中间件协调设备向所述数据库服务器发送的正式提交指示消息或回滚指示消息;发送单元,用于将确定单元确定出的正式提交指示消息或回滚指示消息发送给所述数据库服务器。
一种交易中间件协调设备,包括:第一发送单元,用于向数据库服务器发送预提交指示消息;第一判断单元,用于判断是否在第一规定时间长度内接收到所述数据库服务器发送的预提交确认消息或预提交失败消息;第二发送单元,用于在第一判断单元的判断结果为否时,重新向所述数据库服务器发送预提交指示消息。
本发明实施例技术方案中,数据库服务器接收到主用交易中间件协调设备发送的预提交指示消息后,向主用交易中间件协调设备发送预提交确认消息或预提交失败消息,若在规定时间长度内未接收到主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,则向备用交易中间件协调设备发送事务询问消息,接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,其中正式提交指示消息或回滚指示消息为备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息确定出的,数据库服务器根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚,由上可见,若主用交易中间件协调设备向数据库服务器发送了正式提交指示消息或回滚指示消息,而由于网络信号质量较低、主用交易中间件协调设备业务繁忙或数据库服务器业务繁忙等原因,数据库服务器并未接收到,则此时数据库服务器不再一直等待,而是在到达规定时间长度后向备用交易中间件协调设备询问,备用交易中间件协调设备查询主用交易中间件协调设备的操作记录,根据操作记录确定主用交易中间件协调设备向该数据库服务器发送的是正式提交指示消息还是回滚指示消息,然后将确定出的指示消息发送给数据库服务器,数据库服务器进一步根据接收到的指示消息进行事务的正式提交或回滚,从而释放了事务在数据库服务器中所占用的资源,节省了数据库服务器较多的处理资源,使得数据库服务器能够为其他事务分配足够的处理资源,避免了事务在数据库服务器中发生阻塞,有效地提高了数据库服务器的处理效率。
附图说明
图1为现有技术中,全局事务处理方法流程示意图;
图2为现有技术中,事务提交方法流程示意图;
图3为本发明实施例中,事务提交系统结构示意图;
图4为本发明实施例中,事务提交方法流程示意图;
图5为本发明实施例中,事务提交方法具体实现流程示意图;
图6为本发明实施例中,事务提交装置结构示意图;
图7为本发明实施例中,交易中间件协调设备结构示意图;
图8为本发明实施例中,交易中间件协调设备结构示意图。
具体实施方式
下面结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细地阐述。
如图3所示,为本发明实施例中事务提交系统结构流程图,包括主用交易中间件协调设备31、数据库服务器32以及备用交易中间件协调设备33,其中:
主用交易中间件协调设备31,用于在需要数据库服务器32提交事务时,向数据库服务器32发送预提交指示消息,在接收到所有数据库服务器32发送的预提交确认消息时,向所有数据库服务器32发送正式提交指示消息,在接收到至少一个数据库服务器32发送的与提交失败消息时,向所有数据库服务器32发送回滚指示消息,接收数据库服务器32正式提交事务后发送的正式提交完成消息,以及数据库服务器32在回滚事务后发送的回滚完成消息;
数据库服务器32,用于接收主用交易中间件协调设备31发送的预提交指示消息,向主用交易中间件协调设备31发送预提交确认消息或预提交失败消息,若在第一规定时间长度内未接收到主用交易中间件协调设备31发送的正式提交指示消息或回滚指示消息,则向备用交易中间件协调设备33发送事务询问消息,接收备用交易中间件协调设备33发送的正式提交指示消息或回滚指示消息,并根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚;
备用交易中间件协调设备33,用于在接收到数据库服务器32发送的事务询问消息后,获得主用交易中间件协调设备31的操作记录信息,并根据获得的操作记录信息,确定出主用交易中间件协调设备31向所述数据库服务器32发送的正式提交指示消息或回滚指示消息后,发送给所述数据库服务器32。
其中,本发明实施例可以但不限于针对全局事务,此时需要至少两个数据库服务器32参与该全局事务,每个数据库服务器32负责该全局事务的一个分支事务。
主用交易中间件协调设备31在发送给数据库服务器32的预提交指示消息中可以但不限于包含需要数据库服务器32进行提交的分支事务所属的全局事务的事务标识信息,数据库服务器32根据该事务标识信息,确定是否能够提交对应的分支事务,主用交易中间件协调设备31在发送给数据库服务器32的正式提交指示消息或回滚指示消息中可以但不限于包含需要数据库服务器32进行提交的分支事务所属的全局事务的事务标识信息,数据库服务器32根据该事务标识信息,进行对应的分支事务的正式提交或回滚。
主用交易中间件协调设备31将针对各数据库服务器32的操作记录信息记录在事务日志文件中,并将事务日志文件存储在预设的存储空间,其中操作记录信息至少记录了主用交易中间件协调设备31向数据库服务器32发送的各指示消息(例如预提交指示消息、正式提交指示消息或回滚指示消息),还可以记录发送各指示消息的时间点信息,当然,该操作记录信息还可以记录数据库服务器32发送的各消息(例如预提交确认消息、预提交失败消息、正式提交完成消息或回滚完成消息)以及主用交易中间件协调设备31接收到各消息的时间点信息。备用交易中间件协调设备33能够共享该存储空间中存储的事务日志文件,即能够读取主用交易中间件协调设备31记录的操作记录信息,那么备用交易中间件协调设备33就能够确定出主用交易中间件协调设备31向数据库服务器32发送的正式提交指示消息或回滚指示消息,然后在数据库服务器32询问时,将正式提交指示消息或回滚指示消息发送给数据库服务器32。
其中,数据库服务器32发送给备用交易中间件协调设备33的事务询问消息中包含该数据库服务器33的服务器标识信息,备用交易中间件协调设备33根据上述服务器标识信息,将确定出的正式提交指示消息或回滚指示消息发送给该数据库服务器32。
若备用交易中间件协调设备33在主用交易中间件协调设备31的操作记录信息中并未确定出正式提交指示消息或回滚指示消息,即主用交易中间件协调设备31未向数据库服务器32发送正式提交指示消息或回滚指示消息,则认为主用交易中间件协调设备31未接收到数据库服务器32发送的预提交确认消息或预提交失败消息,此时备用交易中间件协调设备33向数据库服务器32发送重试消息,指示数据库服务器32向主用交易中间件协调设备31发送预提交确认消息或预提交失败消息。
为了进一步提高数据库服务器32的处理效率,本发明实施例提出数据库服务器32在接收到备用交易中间件协调设备33发送的正式提交指示消息或回滚指示消息之前,还进一步重新向主用交易中间件协调设备31发送预提交确认消息或预提交失败消息,若接收到主用交易中间31件发送的预提交确认消息或预提交失败消息,则根据最先接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。其中数据库服务器32可以先向主用交易中间件协调设备31重新发送预提交确认消息或预提交失败消息,然后再向备用交易中间件协调设备32发送事务询问消息,也可以先向备用交易中间件协调设备32发送事务询问消息,再向主用交易中间件协调设备31重新发送预提交确认消息或预提交失败消息,还可以同时向备用交易中间件协调设备32发送事务询问消息,以及向主用交易中间件协调设备31重新发送预提交确认消息或预提交失败消息。
若由于主用交易中间件协调设备31和数据库服务器32之间的传输网络的问题,数据库服务器32在规定时间长度内未接收到主用交易中间件协调设备31发送的正式提交指示消息或回滚指示消息,则数据库服务器32和备用交易中间件协调设备33之间需要基于不同的传输网络传输消息,因此数据库服务器32通过第一传输网络接收主用交易中间件协调设备31发送的预提交指示消息,以及向主用交易中间件协调设备31发送预提交确认消息或预提交失败消息,数据库服务器32通过第二传输网络向备用交易中间件协调设备33发送事务询问消息,以及接收备用交易中间件协调设备33发送的正式提交指示消息或回滚指示消息。
此外,若由于网络信号质量较低、主用交易中间件协调设备31业务繁忙或数据库服务器32业务繁忙等原因,主用交易中间件协调设备31虽然向数据库服务器32发送了预提交指示消息、正式提交指示消息或回滚指示消息,但是数据库服务器32并未接收到,因此数据库服务器32不向主用交易中间件协调设备31发送预提交确认消息、预提交失败消息、正式提交完成消息或回滚完成消息,主用交易中间件协调设备31会一直等待数据库服务器32的消息,因此耗费了主用交易中间件协调设备31较多的处理资源,降低了主用交易中间件协调设备31的处理效率。针对该问题,本发明实施例还提出,主用交易中间件协调设备31监控数据库服务器32是否按时反馈了预提交确认消息、预提交失败消息、正式提交完成消息或回滚完成消息,若没有按时反馈,则认为数据库服务器32可能没有接收到预提交指示消息、正式提交指示消息或回滚指示消息,此时主用交易中间件协调设备31可以重新向数据库服务器32发送预提交指示消息、正式提交指示消息或回滚指示消息,从而有效地节省了主用交易中间件协调设备31的处理资源,提高了主用交易中间件协调设备31的处理效率。具体为:
主用交易中间件协调设备31若在第二规定时间长度内未接收到数据库服务器32发送的预提交确认消息或预提交失败消息,则重新向数据库服务器发送预提交指示消息;主用交易中间件协调设备31在接收到数据库服务器32发送的预提交确认消息或预提交失败消息后,向数据库服务器32发送正式提交指示消息或回滚指示消息,若在第三规定时间长度内未接收到数据库服务器32发送的正式提交完成消息或回滚完成消息,则重新向数据库服务器32发送正式提交指示消息或回滚指示消息。
本发明实施例中,第一规定时间长度、第二规定时间长度以及第三规定时间长度可以根据具体情况进行设置。
此外,主用交易中间件协调设备31和数据库服务器32可以但不限于通过设置定时器的方式来监控是否在规定时间长度内接收到消息。
基于图3所示的事务提交系统,本发明实施例提出了一种事务提交方法,如图4所示,其具体处理过程如下:
步骤41,在接收到应用程序针对全局事务的提交指示后,主用交易中间件协调设备向参与该全局事务的各数据库服务器发送预提交指示消息,以确认是否所有数据库服务器均能够提交各自的分支事务;
步骤42,数据库服务器向主用交易中间件协调设备发送预提交确认消息或预提交失败消息;
数据库服务器在接收到预提交指示消息后,检查本地准备情况,申请提交分支事务所需的本地各类资源,如事务入口、事务空间等,如资源满足,则向主用交易中间件协调设备发送预提交确认消息,若资源不满足,则先进行重试,若还是不满足,则向主用交易中间件协调设备发送预提交失败消息。
数据库服务器在发送预提交确认消息或预提交失败消息后,可以启动定时器进行计时,等待主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息。
步骤43,若在第一规定时间长度内未接收到主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,则向备用交易中间件协调设备发送事务询问消息;
该事务询问消息中包含该数据库服务器的服务器标识信息。
步骤44,备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息;
主用交易中间件协调设备将针对各数据库服务器的操作记录信息记录在事务日志文件中,将事务日志文件存储在预设的存储空间,备用交易中间件协调设备能够共享该存储空间中存储的事务日志文件,即能够读取主用交易中间件协调设备存储的操作记录信息。
步骤45,备用交易中间件协调设备根据获得的操作记录信息,确定出主用交易中间件协调设备发送给数据库服务器的正式提交指示消息或回滚指示消息;
主用中间件存储的操作记录信息至少记录了主用交易中间件协调设备向数据库服务器发送的各指示消息(例如预提交指示消息、正式提交指示消息或回滚指示消息),还可以记录发送各指示消息的时间点信息,当然,该操作记录信息还可以记录数据库服务器发送的各消息(例如预提交确认消息、预提交失败消息、正式提交完成消息或回滚完成消息)以及主用交易中间件协调设备接收到各消息的时间点信息。备用交易中间件协调设备能够共享该存储空间中存储的信息,即能够读取主用交易中间件协调设备存储的操作记录信息,那么备用交易中间件协调设备就能够确定出主用交易中间件协调设备向数据库服务器发送的正式提交指示消息或回滚指示消息。
步骤46,备用交易中间件协调设备将确定出的正式提交指示消息或回滚指示消息发送给该数据库服务器;
备用交易中间件协调设备根据该数据库服务器的服务器标识信息,将确定出的正式提交指示消息或回滚指示消息发送给该数据库服务器。
若备用交易中间件协调设备在主用交易中间件协调设备的操作记录信息中并未确定出正式提交指示消息或回滚指示消息,即主用交易中间件协调设备未向数据库服务器发送正式提交指示消息或回滚指示消息,则认为主用交易中间件协调设备未接收到数据库服务器发送的预提交确认消息或预提交失败消息,此时备用交易中间件协调设备向数据库服务器发送重试消息,指示数据库服务器向主用交易中间件协调设备发送预提交确认消息或预提交失败消息。
步骤47,数据库服务器根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
为了进一步提高数据库服务器的处理效率,本发明实施例提出数据库服务器在接收到备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息之前,还进一步重新向主用交易中间件协调设备发送预提交确认消息或预提交失败消息,若接收到主用交易中间件协调设备发送的预提交确认消息或预提交失败消息,则根据最先接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。其中数据库服务器可以先向主用交易中间件协调设备重新发送预提交确认消息或预提交失败消息,然后再向备用交易中间件协调设备发送事务询问消息,也可以先向备用交易中间件协调设备发送事务询问消息,再向主用交易中间件协调设备重新发送预提交确认消息或预提交失败消息,还可以同时向备用交易中间件协调设备发送事务询问消息,以及向主用交易中间件协调设备重新发送预提交确认消息或预提交失败消息。
此外,为了进一步节省主用交易中间件协调设备的处理资源,提高主用交易中间件协调设备的处理效率,本发明实施例提出,主用交易中间件协调设备若在第二规定时间长度内未接收到数据库服务器发送的预提交确认消息或预提交失败消息,则重新向数据库服务器发送预提交指示消息;主用交易中间件协调设备在接收到数据库服务器发送的预提交确认消息或预提交失败消息后,向数据库服务器发送正式提交指示消息或回滚指示消息,若在第三规定时间长度内未接收到数据库服务器发送的正式提交完成消息或回滚完成消息,则重新向数据库服务器发送正式提交指示消息或回滚指示消息。
本发明实施例中,数据库服务器可以但不限于通过第一传输网络接收主用交易中间件协调设备发送的预提交指示消息,以及向所述主用交易中间件协调设备发送的预提交确认消息或预提交失败消息;数据库服务器可以但不限于通过第二传输网络向备用交易中间件协调设备发送事务询问消息,以及接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息。
由上述处理过程可知,本发明实施例技术方案中,数据库服务器接收到主用交易中间件协调设备发送的预提交指示消息后,向主用交易中间件协调设备发送预提交确认消息或预提交失败消息,若在规定时间长度内未接收到主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,则向备用交易中间件协调设备发送事务询问消息,接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,其中正式提交指示消息或回滚指示消息为备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息确定出的,数据库服务器根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚,由上可见,若主用交易中间件协调设备向数据库服务器发送了正式提交指示消息或回滚指示消息,而由于网络信号质量较低、主用交易中间件协调设备业务繁忙或数据库服务器业务繁忙等原因,数据库服务器并未接收到,则此时数据库服务器不再一直等待,而是在到达规定时间长度后向备用交易中间件协调设备询问,备用交易中间件协调设备查询主用交易中间件协调设备的操作记录,根据操作记录确定主用交易中间件协调设备向该数据库服务器发送的是正式提交指示消息还是回滚指示消息,然后将确定出的指示消息发送给数据库服务器,数据库服务器进一步根据接收到的指示消息进行事务的正式提交或回滚,从而释放了事务在数据库服务器中所占用的资源,节省了数据库服务器较多的处理资源,使得数据库服务器能够为其他事务分配足够的处理资源,避免了事务在数据库服务器中发生阻塞,有效地提高了数据库服务器的处理效率。
下面给出更为详细的实施方式。
如图5所示,为本发明实施例中事务提交方法具体实现流程图,其具体处理过程如下:
步骤51,主用交易中间件协调设备向各数据库服务器发送预提交指示消息,该预提交指示消息中携带有需要提交的全局事务的事务标识信息;
步骤52,数据库服务器判断是否能够提交全局事务的分支事务,若判断结果为是,则转至步骤53,若判断结果为否,则转至步骤54;
步骤53,向主用交易中间件协调设备发送预提交确认消息;
步骤54,向主用交易中间件协调设备发送预提交失败消息;
步骤55,主用交易中间件协调设备判断是否在第一规定时间长度内接收到数据库服务器发送的预提交确认消息或预提交失败消息,若判断结果为是,则转至步骤57,若步骤为否,则转至步骤56;
步骤56,主用交易中间件协调设备重新向该数据库服务器发送预提交指示消息;
步骤57,主用交易中间件协调设备判断是否所有数据库服务器均发送了预提交确认消息,若判断结果为是,则转至步骤58,若判断结果为否,则转至步骤59;
步骤58,向所有数据库服务器发送正式提交指示消息;
步骤59,向所有数据库服务器发送回滚指示消息;
步骤510,数据库服务器判断是否在第二规定时间段度内接收到主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,若判断结果为否,则转至步骤511,若步骤为是,则转至步骤514;
步骤511,数据库服务器向备用交易中间件协调设备发送事务询问消息;
步骤512,备用交易中间件协调设备在主用交易中间件协调设备存储的操作记录信息中查找主用交易中间件协调设备发送给数据库服务器的指示消息;
步骤513,备用交易中间件协调设备将查找到的正式提交指示消息或回滚指示消息发送给数据库服务器;
步骤514,若数据库服务器接收到正式提交指示消息,则进行分支事务的正式提交;
步骤515,数据库服务器释放该分支事务所占用的资源;
步骤516,数据库服务器向主用交易中间件协调设备发送正式提交完成消息;
步骤517,若数据库服务器接收到回滚指示消息,则进行分支事务的回滚;
步骤518,数据库服务器释放该分支事务所占用的资源;
步骤519,数据库服务器向主用交易中间件协调设备发送回滚完成消息;
步骤520,主用交易中间件协调设备判断是否在第三规定时间长度内接收到数据库服务器发送的正式提交完成消息或回滚完成消息,若判断结果为是,则转至步骤521,若判断结果为否,则转至步骤
步骤521,主用交易中间件协调设备重新向数据库服务器发送正式提交指示消息或回滚指示消息;
步骤522,主用交易中间件协调设备接收到所有数据库服务器发送的正式提交完成消息或回滚完成消息;
步骤523,完成全局事务的提交。
相应的,本发明实施例还提出了一种事务提交装置,其结构如图6所示,包括第一接收单元61、第一发送单元62、判断单元63,第二发送单元64、第二接收单元65和提交回滚单元66,其中:
第一接收单元61,用于接收主用交易中间件协调设备发送的预提交指示消息;
第一发送单元62,用于向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;
判断单元63,用于判断是否在规定时间长度内接收到所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息;
第二发送单元64,用于在判断单元63的判断结果为否时,向备用交易中间件协调设备发送事务询问消息;
第二接收单元65,用于接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,所述正式提交指示消息或回滚指示消息为备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息确定出的;
提交回滚单元66,用于根据第二接收单元65接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
较佳地,所述事务提交装置还包括第三发送单元和第三接收单元,其中:
第三发送单元,用于在第二接收单元65接收到备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息之前,重新向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;
第三接收单元,用于接收所述主用交易中间件协调设备发送的预提交确认消息或预提交失败消息;
提交回滚单元66根据最先接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
本发明实施例还提供一种数据库服务器,至少包括上述事务提交装置。
针对上述备用交易中间件协调设备,本发明实施例提出一种交易中间件协调设备,如图7所示,包括接收单元71、获得单元72、确定单元73和发送单元74,其中:
接收单元71,用于接收数据库服务器发送的事务询问消息;
获得单元72,用于获得对所述数据库服务器进行事务提交管理的主用交易中间件协调设备的操作记录信息;
确定单元73,用于根据获得单元72获得的操作记录信息,确定所述主用交易中间件协调设备向所述数据库服务器发送的正式提交指示消息或回滚指示消息;
发送单元74,用于将确定单元73确定出的正式提交指示消息或回滚指示消息发送给所述数据库服务器。
针对上述主用交易中间件协调设备,本发明实施例提出一种交易中间件协调设备,如图8所示,包括第一发送单元81、第一判断单元82和第二发送单元83,其中:
第一发送单元81,用于向数据库服务器发送预提交指示消息;
第一判断单元82,用于判断是否在第一规定时间长度内接收到所述数据库服务器发送的预提交确认消息或预提交失败消息;
第二发送单元83,用于在第一判断单元82的判断结果为否时,重新向所述数据库服务器发送预提交指示消息。
较佳地,所述交易中间件协调设备还包括接收单元、第三发送单元、第二判断单元和第四发送单元,其中:
接收单元,用于接收所述数据库服务器发送的预提交确认消息或预提交失败消息;
第三发送单元,用于向所述数据库服务器发送正式提交指示消息或回滚指示消息;
第二判断单元,用于判断是否在第二规定时间长度内接收到所述数据库服务器发送的正式提交完成消息或回滚完成消息;
第四发送单元,用于在第二判断单元的判断结果为否时,重新向所述数据库服务器发送正式提交指示消息或回滚指示消息。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种事务提交系统,包括主用交易中间件协调设备,其特征在于,还包括数据库服务器和备用交易中间件协调设备,其中:
所述数据库服务器,用于接收主用交易中间件协调设备发送的预提交指示消息,向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息,若在第一规定时间长度内未接收到所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,则向所述备用交易中间件协调设备发送事务询问消息,接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,并根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚;
所述备用交易中间件协调设备,用于在接收到所述事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息,确定出主用交易中间件协调设备向所述数据库服务器发送的正式提交指示消息或回滚指示消息后,发送给所述数据库服务器。
2.如权利要求1所述的事务提交系统,其特征在于,所述主用交易中间件协调设备,用于向所述数据库服务器发送预提交指示消息,若在第二规定时间长度内未接收到所述数据库服务器发送的预提交确认消息或预提交失败消息,则重新向所述数据库服务器发送预提交指示消息。
3.如权利要求2所述的事务提交系统,其特征在于,所述主用交易中间件协调设备,还用于在接收到所述数据库服务器发送的预提交确认消息或预提交失败消息后,向所述数据库服务器发送正式提交指示消息或回滚指示消息,若在第三规定时间长度内未接收到所述数据库服务器发送的正式提交完成消息或回滚完成消息,则重新向所述数据库服务器发送正式提交指示消息或回滚完成消息。
4.一种事务提交方法,其特征在于,包括:
接收到主用交易中间件协调设备发送的预提交指示消息后,向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;
若在规定时间长度内未接收到所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,则向备用交易中间件协调设备发送事务询问消息;以及
接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,所述正式提交指示消息或回滚指示消息为备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息确定出的;
根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
5.如权利要求4所述的事务提交方法,其特征在于,接收到备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息之前,还包括:
重新向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;
接收所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息;
根据接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚,具体包括:
根据最先接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
6.如权利要求4所述的事务提交方法,其特征在于,数据库服务器通过第一传输网络接收主用交易中间件协调设备发送的预提交指示消息,以及向所述主用交易中间件协调设备发送的预提交确认消息或预提交失败消息;
所述数据库服务器通过第二传输网络向备用交易中间件协调设备发送事务询问消息,以及接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息。
7.一种事务提交装置,其特征在于,包括:
第一接收单元,用于接收主用交易中间件协调设备发送的预提交指示消息;
第一发送单元,用于向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;
判断单元,用于判断是否在规定时间长度内接收到所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息;
第二发送单元,用于在判断单元的判断结果为否时,向备用交易中间件协调设备发送事务询问消息;
第二接收单元,用于接收备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息,所述正式提交指示消息或回滚指示消息为备用交易中间件协调设备在接收到事务询问消息后,获得主用交易中间件协调设备的操作记录信息,并根据获得的操作记录信息确定出的;
提交回滚单元,用于根据第二接收单元接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
8.如权利要求7所述的事务提交装置,其特征在于,还包括:
第三发送单元,用于在第二接收单元接收到备用交易中间件协调设备发送的正式提交指示消息或回滚指示消息之前,重新向所述主用交易中间件协调设备发送预提交确认消息或预提交失败消息;
第三接收单元,用于接收所述主用交易中间件协调设备发送的正式提交指示消息或回滚指示消息;
提交回滚单元根据最先接收到的正式提交指示消息或回滚指示消息,进行事务的正式提交或回滚。
9.一种数据库服务器,其特征在于,包括权利要求7~8任一所述的事务提交装置。
10.一种交易中间件协调设备,其特征在于,包括:
接收单元,用于接收数据库服务器发送的事务询问消息;
获得单元,用于获得对所述数据库服务器进行事务提交管理的主用交易中间件协调设备的操作记录信息;
确定单元,用于根据获得单元获得的操作记录信息,确定所述主用交易中间件协调设备向所述数据库服务器发送的正式提交指示消息或回滚指示消息;
发送单元,用于将确定单元确定出的正式提交指示消息或回滚指示消息发送给所述数据库服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010606600.4A CN102571850B (zh) | 2010-12-24 | 2010-12-24 | 事务提交系统、方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010606600.4A CN102571850B (zh) | 2010-12-24 | 2010-12-24 | 事务提交系统、方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102571850A CN102571850A (zh) | 2012-07-11 |
CN102571850B true CN102571850B (zh) | 2014-08-06 |
Family
ID=46416322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010606600.4A Active CN102571850B (zh) | 2010-12-24 | 2010-12-24 | 事务提交系统、方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102571850B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019826B (zh) * | 2012-12-27 | 2016-08-03 | 亚信科技(中国)有限公司 | 一种事务处理的方法和装置 |
CN105447000A (zh) * | 2014-07-31 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种事务消息的传输方法和设备 |
CN104375889B (zh) * | 2014-10-29 | 2018-04-03 | 北京思特奇信息技术股份有限公司 | 一种Web层切换系统及方法 |
CN107766080B (zh) * | 2016-08-23 | 2021-11-09 | 阿里巴巴集团控股有限公司 | 事务消息处理方法、装置、设备及系统 |
CN109257404B (zh) * | 2017-07-14 | 2022-04-05 | 迈普通信技术股份有限公司 | 数据备份方法、装置及系统 |
CN107783861B (zh) * | 2017-07-31 | 2020-11-24 | 平安科技(深圳)有限公司 | 交易回滚方法、装置、存储介质和计算机设备 |
CN107590183A (zh) * | 2017-08-03 | 2018-01-16 | 福建天晴数码有限公司 | 一种操作数据库的方法及终端 |
CN107622081A (zh) * | 2017-08-03 | 2018-01-23 | 福建天晴数码有限公司 | 一种操作数据库的方法及终端 |
CN110019066A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据库处理方法及装置、系统 |
CN111225012A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329670A (zh) * | 2007-06-20 | 2008-12-24 | 诺基亚西门子通信公司 | 复制数据库环境下保持数据一致性的方法和系统 |
CN101341466A (zh) * | 2005-12-19 | 2009-01-07 | 国际商业机器公司 | 分布式系统中事务的提交 |
CN100561920C (zh) * | 2004-12-27 | 2009-11-18 | 北京航空航天大学 | Web服务事务处理系统及处理方法 |
-
2010
- 2010-12-24 CN CN201010606600.4A patent/CN102571850B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100561920C (zh) * | 2004-12-27 | 2009-11-18 | 北京航空航天大学 | Web服务事务处理系统及处理方法 |
CN101341466A (zh) * | 2005-12-19 | 2009-01-07 | 国际商业机器公司 | 分布式系统中事务的提交 |
CN101329670A (zh) * | 2007-06-20 | 2008-12-24 | 诺基亚西门子通信公司 | 复制数据库环境下保持数据一致性的方法和系统 |
Non-Patent Citations (1)
Title |
---|
刘云生,廖国琼,李国徽,夏家莉.移动分布式实时嵌套事务提交.《软件学报》.2003,第139-145页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102571850A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102571850B (zh) | 事务提交系统、方法及设备 | |
CN106789741B (zh) | 消息队列的消费方法及装置 | |
CN110740145B (zh) | 消息消费方法、装置、存储介质及电子设备 | |
CN111198662B (zh) | 一种数据存储方法、装置和计算机可读存储介质 | |
CN109388481B (zh) | 一种事务信息的传输方法、系统、装置、计算设备和介质 | |
CN110716793B (zh) | 一种分布式事务的执行方法、装置、设备及存储介质 | |
CN107040563B (zh) | 异步服务处理方法及服务器 | |
CN105681404A (zh) | 用于分布式缓存系统的元数据节点管理方法和装置 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN114138500A (zh) | 资源调度系统及方法 | |
CN116414527A (zh) | 一种分布式事务协调器大幅提高性能方法及系统 | |
CN115328741A (zh) | 一种异常处理方法、装置、设备和存储介质 | |
CN103475520B (zh) | 一种分布式网络中的事务处理控制方法及装置 | |
CN108924096B (zh) | 一种信息同步方法和装置 | |
CN117762652A (zh) | 基于消息中间件的分布式事务的处理方法及装置 | |
CN108306815A (zh) | 一种获取消息的方法、装置、设备及计算机可读存储介质 | |
CN114598593B (zh) | 消息处理方法、系统、计算设备及计算机存储介质 | |
CN100576182C (zh) | 计算机文件的实时监控系统和方法 | |
CN112950447B (zh) | 资源调度方法、装置、服务器及存储介质 | |
CN107888693A (zh) | Nb‑iot设备调试方法及服务器 | |
CN114816866A (zh) | 故障处理方法、装置、电子设备和存储介质 | |
CN114880137A (zh) | 消息处理方法及装置、电子设备及存储介质 | |
CN111324668B (zh) | 数据库数据同步处理方法、装置及存储介质 | |
CN112118305A (zh) | 一种减少区块链共识系统中无效请求的方法 | |
CN113965447A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |