CN105447000A - 一种事务消息的传输方法和设备 - Google Patents
一种事务消息的传输方法和设备 Download PDFInfo
- Publication number
- CN105447000A CN105447000A CN201410374551.4A CN201410374551A CN105447000A CN 105447000 A CN105447000 A CN 105447000A CN 201410374551 A CN201410374551 A CN 201410374551A CN 105447000 A CN105447000 A CN 105447000A
- Authority
- CN
- China
- Prior art keywords
- transaction message
- file
- message
- equipment
- stored
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种事务消息的传输方法和设备,该方法包括:中间件设备接收来自业务处理设备的第一事务消息,并将第一事务消息存储到本地的第一文件中,所述第一事务消息中携带的状态为准备状态;所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;所述中间件设备将所述第二事务消息发送给业务响应设备。本申请实施例中,中间件设备在收到事务消息之后,可以通过第一文件来存储事务消息,并保证消息的一致性,从而避免与第三方数据库的交互。中间件设备的处理效率很高,处理性能较好,并能够提高中间件设备的使用率,缩减大量的第三方数据库的使用成本,减少网络开销。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种事务消息的传输方法和设备。
背景技术
消息一致性在分布式系统中广泛存在,也是分布式系统中强依赖的应用场景,而事务消息是业界内解决消息一致性的通用解决方案。在现有技术中,中间件设备需要依赖第三方数据库的存储来实现事务消息的传输过程。
具体的,业务处理设备处理业务逻辑,并在业务逻辑的处理过程中,业务处理设备向中间件设备发送事务消息,该事务消息中携带的状态为准备状态(Prepared)。中间件设备在收到该事务消息之后,在第三方数据库中存储该事务消息,并向业务处理设备通知已经收到事务消息的信息,由业务处理设备继续处理剩余的业务逻辑。在业务逻辑处理完成之后,业务处理设备向中间件设备发送事务消息,该事务消息中携带的状态为提交状态。中间件设备在收到该事务消息之后,从第三方数据库中检索对应的状态为准备状态的事务消息,并利用当前收到的事务消息替换第三方数据库中存储的事务消息。中间件设备向业务响应设备发送第三方数据库中存储的事务消息,并在事务消息被成功发送给业务响应设备之后,中间件设备删除第三方数据库中存储的该事务消息。业务响应设备在收到事务消息之后,进行后续业务处理。
在上述处理过程中,中间件设备需要通过与第三方数据库的交互,来实现事务消息的传输过程。在中间件设备与第三方数据库的交互过程中,会涉及到第三方数据库的存储处理、查询处理、更新处理,而第三方数据库的上述处理均需要很长时间,其处理效率很低,而且处理性能较差。
发明内容
本申请实施例提供一种事务消息的传输方法和设备,以通过文件来存储事务消息,并保证消息的一致性,从而可以避免与第三方数据库的交互。
本申请实施例提供一种事务消息的传输方法,所述方法包括以下步骤:
中间件设备接收来自业务处理设备的第一事务消息,并将所述第一事务消息存储到本地的第一文件中,所述第一事务消息中携带的状态为准备状态;
所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;
所述中间件设备将所述第二事务消息发送给业务响应设备。
所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件的过程,具体包括:
所述中间件设备在收到第一事务消息之后,将中间件设备成功收到第一事务消息的信息发送给所述业务处理设备;所述中间件设备接收来自所述业务处理设备的第二事务消息,所述第二事务消息中携带的状态为提交状态或者回滚状态;当所述第二事务消息中携带的状态为回滚状态时,所述中间件设备丢弃所述第二事务消息;当所述第二事务消息中携带的状态为提交状态时,所述中间件设备将所述第二事务消息存储到所述第一文件中;或者,
所述中间件设备在收到第一事务消息之后,将中间件设备成功收到第一事务消息的信息以及第一事务消息在所述第一文件中的第一位置信息发送给所述业务处理设备;所述中间件设备接收来自所述业务处理设备的携带所述第一位置信息以及消息状态的消息,所述消息状态为提交状态或者回滚状态;当所述消息状态为回滚状态时,所述中间件设备丢弃当前收到的信息;当所述消息状态为提交状态时,所述中间件设备利用所述第一位置信息从所述第一文件中获得第一事务消息,并利用所述第一事务消息以及所述提交状态生成第二事务消息,并将所述第二事务消息存储到所述第一文件中。
所述方法进一步包括:
所述中间件设备在将第一事务消息存储到第一文件之后,所述中间件设备确定所述第一事务消息在第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到本地的第二文件中;
所述中间件设备在将所述第二事务消息存储到所述第一文件之后,所述中间件设备确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并利用所述第二事务消息对应的所述第一位置信息查询所述第二文件中存储的第一位置信息,并将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态。
所述方法进一步包括:
所述中间件设备定时查询所述第二文件中存储的消息状态;如果所述消息状态为准备状态,则所述中间件设备向对应的业务处理设备发送查询消息,所述查询消息用于询问业务处理设备是否会向所述中间件设备发送携带提交状态或者回滚状态的消息;如果所述中间件设备收到业务处理设备会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则所述中间件设备继续保存所述第一文件中存储的第一事务消息;如果所述中间件设备收到业务处理设备不会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则所述中间件设备从所述第一文件中删除对应的第一事务消息。
所述方法进一步包括:
所述中间件设备在将第一事务消息存储到第一文件之后,所述中间件设备确定所述第一事务消息在第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到本地的第三文件中;
所述中间件设备在将所述第二事务消息存储到所述第一文件之后,所述中间件设备确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件中。
所述方法进一步包括:
当所述第二文件中的消息状态和第一位置信息被异常删除时,所述中间件设备遍历所述第三文件中存储的消息状态;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态,则所述中间件设备将所述第一位置信息和所述准备状态存储到所述第二文件中;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态和提交状态,则所述中间件设备将所述第一位置信息和所述提交状态存储到所述第二文件中。
所述方法进一步包括:
所述中间件设备在将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态之后,所述中间件设备确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二文件中存储的所述第一位置信息替换为所述第二位置信息;和/或,
所述中间件设备在将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件之后,所述中间件设备确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二事务消息对应的所述第一位置信息替换为所述第二位置信息。
所述第一文件具体包括commitlog文件;所述第二文件具体包括TransactionStateTable文件;所述第三文件具体包括Redolog文件。
本申请实施例提供一种中间件设备,所述中间件设备具体包括:
第一事务消息处理模块,用于接收来自业务处理设备的第一事务消息,并将所述第一事务消息存储到所述中间件设备的第一文件中;其中,所述第一事务消息中携带的状态为准备状态;
第二事务消息处理模块,用于获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;
第二事务消息发送模块,用于将所述第二事务消息发送给业务响应设备。
所述第二事务消息处理模块,具体用于在收到所述第一事务消息之后,将中间件设备成功收到所述第一事务消息的信息发送给所述业务处理设备;接收来自所述业务处理设备的第二事务消息,所述第二事务消息中携带的状态为提交状态或者回滚状态;当所述第二事务消息中携带的状态为回滚状态时,则丢弃所述第二事务消息;当所述第二事务消息中携带的状态为提交状态时,则将所述第二事务消息存储到所述第一文件中;或者,
在收到第一事务消息之后,将中间件设备成功收到第一事务消息的信息以及第一事务消息在所述第一文件中的第一位置信息发送给所述业务处理设备;接收来自所述业务处理设备的携带所述第一位置信息以及消息状态的消息,所述消息状态为提交状态或者回滚状态;当所述消息状态为回滚状态时,丢弃当前收到的信息;当所述消息状态为提交状态时,利用所述第一位置信息从所述第一文件中获得第一事务消息,并利用所述第一事务消息以及所述提交状态生成第二事务消息,并将所述第二事务消息存储到所述第一文件中。
所述第二事务消息处理模块,进一步用于在将所述第一事务消息存储到所述第一文件之后,确定所述第一事务消息在所述第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到所述中间件设备的第二文件中;在将所述第二事务消息存储到所述第一文件之后,确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并利用所述第二事务消息对应的所述第一位置信息查询所述第二文件中存储的第一位置信息,并将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态。
所述第二事务消息处理模块,进一步用于定时查询所述第二文件中存储的消息状态;如果所述消息状态为准备状态,则向对应的业务处理设备发送查询消息,所述查询消息用于询问所述业务处理设备是否会向所述中间件设备发送携带提交状态或者回滚状态的消息;如果所述中间件设备收到所述业务处理设备会向所述中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则继续保存所述第一文件中存储的第一事务消息;如果所述中间件设备收到所述业务处理设备不会向所述中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则从所述第一文件中删除对应的第一事务消息。
所述第二事务消息处理模块,进一步用于在将所述第一事务消息存储到所述第一文件之后,确定所述第一事务消息在所述第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到所述中间件设备的第三文件中;在将所述第二事务消息存储到所述第一文件之后,确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件中。
所述第二事务消息处理模块,进一步用于当所述第二文件中的消息状态和第一位置信息被异常删除时,遍历所述第三文件中存储的消息状态;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态,则将所述第一位置信息和所述准备状态存储到所述第二文件中;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态和提交状态,则将所述第一位置信息和所述提交状态存储到所述第二文件中。
所述第二事务消息处理模块,进一步用于在将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态之后,确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二文件中存储的所述第一位置信息替换为所述第二位置信息;和/或,
所述第二事务消息处理模块,进一步用于在将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件之后,确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二事务消息对应的所述第一位置信息替换为所述第二位置信息。
所述第一文件具体包括commitlog文件;所述第二文件具体包括TransactionStateTable文件;所述第三文件具体包括Redolog文件。
与现有技术相比,本申请实施例至少具有以下优点:本申请实施例中,中间件设备在收到事务消息之后,可以通过第一文件来存储事务消息,并保证消息的一致性,从而可以避免与第三方数据库的交互。进一步的,由于中间件设备不需要通过与第三方数据库的交互,来实现事务消息的传输过程,因此,中间件设备的处理效率很高,处理性能较好,并能够提高中间件设备的使用率,缩减大量的第三方数据库的使用成本,减少网络开销。进一步的,由于通过第一文件来存储事务消息,大大增加了支持挂起状态(即Prepared状态)的事务消息的数量,而不像第三方数据库的存储有容量瓶颈。
附图说明
为了更加清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请实施例一提出的一种应用场景示意图;
图2是本申请实施例一提供的一种事务消息的传输方法流程图;
图3是本申请实施例二提供的一种中间件设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
针对现有技术中存在的问题,本申请实施例一提供一种事务消息的传输方法,以图1为本申请实施例的应用场景示意图,该方法可以应用于包括业务处理设备、中间件设备和业务响应设备的系统中。其中,该业务处理设备和业务响应设备共同完成业务逻辑的处理,该中间件设备用于对业务处理设备与业务响应设备之间交互的事务消息进行管理。例如,针对支付宝的业务,由业务处理设备完成对买家和卖家的转账业务,且业务响应设备在获知对买家和卖家的转账业务处理完成之后,由业务响应设备完成发货业务。
如图2所示,该事务消息的传输方法具体可以包括以下步骤:
步骤201,中间件设备接收来自业务处理设备的第一事务消息,并将该第一事务消息存储到本地的第一文件中。其中,该第一事务消息中携带的状态为准备状态,该第一文件具体包括但不限于commitlog(提交日志)文件。
具体的,业务处理设备开启本地事务,并处理业务逻辑,在业务逻辑的处理过程中,业务处理设备向中间件设备发送第一事务消息,该第一事务消息中携带的状态为准备状态。其中,业务逻辑的处理过程中是指业务逻辑还没有被处理完成。例如,业务处理设备在需要完成对买家和卖家的转账业务时,该业务处理设备可以在对买家完成转账业务,但未对卖家完成转账业务时,向中间件设备发送第一事务消息。中间件设备在收到第一事务消息之后,将该第一事务消息存储到本地的第一文件(即commitlog文件)中。
步骤202,中间件设备获得第二事务消息,并将该第二事务消息存储到本地的第一文件中。其中,该第二事务消息中携带的状态为提交状态。
本申请实施例中,中间件设备获得第二事务消息,并将第二事务消息存储到第一文件(即commitlog文件)的过程,具体包括但不限于如下方式:
方式一、中间件设备在收到第一事务消息之后,将本中间件设备成功收到第一事务消息的信息发送给业务处理设备。之后,中间件设备接收来自该业务处理设备的第二事务消息;其中,该第二事务消息中携带的状态为提交状态或者回滚状态。当第二事务消息中携带的状态为回滚状态时,则中间件设备丢弃该第二事务消息。当第二事务消息中携带的状态为提交状态时,则中间件设备将该第二事务消息存储到第一文件(即commitlog文件)中。
具体的,中间件设备在收到第一事务消息之后,将本中间件设备成功收到第一事务消息的信息发送给业务处理设备,由业务处理设备继续处理剩余的业务逻辑。在业务逻辑处理完成之后,如果业务逻辑处理成功,则业务处理设备向中间件设备发送第二事务消息,该第二事务消息中携带的状态为提交状态;如果业务逻辑处理失败,则业务处理设备向中间件设备发送第二事务消息,该第二事务消息中携带的状态为回滚状态。之后,中间件设备接收来自业务处理设备的第二事务消息;其中,该第二事务消息中携带的状态为提交状态或者回滚状态。当第二事务消息中携带的状态为回滚状态时,则中间件设备丢弃该第二事务消息。当第二事务消息中携带的状态为提交状态时,则中间件设备将该第二事务消息存储到第一文件(即commitlog文件)中。
方式二、中间件设备在收到第一事务消息之后,将本中间件设备成功收到第一事务消息的信息以及该第一事务消息在第一文件中的第一位置信息发送给业务处理设备。之后,中间件设备接收来自该业务处理设备的携带该第一位置信息以及消息状态的消息;其中,该消息状态具体为提交状态或者回滚状态。当该消息状态为回滚状态时,则中间件设备丢弃当前收到的信息。当该消息状态为提交状态时,则中间件设备利用消息中携带的第一位置信息从第一文件中获得第一事务消息,并利用该第一事务消息以及提交状态生成第二事务消息,并将该第二事务消息存储到第一文件(即commitlog文件)中。
具体的,中间件设备在收到第一事务消息之后,将本中间件设备成功收到第一事务消息的信息以及该第一事务消息在第一文件中的第一位置信息发送给业务处理设备,由业务处理设备继续处理剩余的业务逻辑。在业务逻辑处理完成之后,如果业务逻辑处理成功,则业务处理设备向中间件设备发送携带第一位置信息和消息状态的消息,该消息状态为提交状态;如果业务逻辑处理失败,则业务处理设备向中间件设备发送携带第一位置信息和消息状态的消息,该消息状态为回滚状态。之后,中间件设备接收来自业务处理设备的携带第一位置信息和消息状态的消息;其中,该消息状态为提交状态或者回滚状态。当消息状态为回滚状态时,则中间件设备丢弃当前收到的信息。当消息状态为提交状态时,则中间件设备利用消息中携带的第一位置信息从第一文件中获得第一事务消息,并利用该第一事务消息以及提交状态生成第二事务消息,并将该第二事务消息存储到第一文件(即commitlog文件)中。
其中,第一事务消息在第一文件中的第一位置信息可以为第一事务消息在第一文件中对应的行号。例如,中间件设备将第一事务消息存储在第一文件中的第5行时,则第一事务消息在第一文件中的第一位置信息为5。
本申请实施例中,中间件设备在利用第一事务消息以及提交状态生成第二事务消息的过程中,中间件设备只需要将第一事务消息中携带的状态由准备状态修改为提交状态,即可以生成第二事务消息。例如,中间件设备从第一文件中的第5行中获得第一事务消息,并将该第一事务消息中携带的状态由准备状态修改为提交状态,即可以生成相应的第二事务消息。
在方式二中,业务处理设备向中间件设备发送的是携带第一位置信息和消息状态的消息,与方式一中业务处理设备向中间件设备发送第二事务消息相比,第一位置信息和消息状态所占用的信令开销很小,从而节省网络资源。
步骤203,中间件设备将第二事务消息发送给业务响应设备。
具体的,中间件设备在获得第二事务消息之后,向业务响应设备发送第二事务消息,并在第二事务消息被成功发送给业务响应设备之后,中间件设备向业务处理设备返回第二事务消息已经被成功发送给业务响应设备的通知。业务响应设备在收到第二事务消息之后,进行后续的业务处理。
本申请实施例中,中间件设备在将第一事务消息存储到第一文件之后,中间件设备确定第一事务消息在第一文件中的第一位置信息,并将第一事务消息中携带的准备状态以及第一位置信息存储到本地的第二文件中。中间件设备在将第二事务消息存储到第一文件之后,中间件设备确定第二事务消息对应的第一事务消息在第一文件中的第一位置信息,并利用第二事务消息对应的第一位置信息查询第二文件中存储的第一位置信息,并将第二文件中存储的第一位置信息对应的准备状态替换为第二事务消息中携带的提交状态。
在第二文件的一种示例中,该第二文件的字段具体包括第一位置信息字段(即commitlog的offset(偏移量)字段)、消息大小字段、业务处理设备标识字段(即ProducerGroup.hashCode字段)、消息状态字段。中间件设备在将第一事务消息存储到第一文件之后,中间件设备确定第一事务消息在第一文件中的第一位置信息,并将该第一位置信息存储到第二文件的第一位置信息字段,并将第一事务消息的大小存储在消息大小字段,并将发送该第一事务消息的业务处理设备的标识存储在业务处理设备标识字段,并将该第一事务消息中携带的准备状态存储在消息状态字段,如表1所示。中间件设备在将第二事务消息存储到第一文件之后,中间件设备确定第二事务消息对应的第一事务消息在第一文件中的第一位置信息。其中,由于中间件设备接收来自业务处理设备的携带第一位置信息以及消息状态的消息之后,中间件设备利用消息中携带的第一位置信息从第一文件中获得第一事务消息,并利用该第一事务消息以及提交状态生成第二事务消息,因此,中间件设备可以直接确定第二事务消息对应的第一事务消息在第一文件中的第一位置信息。之后,中间件设备利用第二事务消息对应的第一位置信息查询第二文件中存储的第一位置信息,并将第二文件中存储的第一位置信息对应的准备状态替换为第二事务消息中携带的提交状态,对于其它字段不再调整,如表2所示。
表1
表2
进一步的,本申请实施例中,中间件设备在将第二文件中存储的第一位置信息对应的准备状态替换为第二事务消息中携带的提交状态之后,中间件设备还可以确定第二事务消息在第一文件中的第二位置信息,并将第二文件中存储的第一位置信息替换为当前确定的第二位置信息,如表3所示。
表3
在本申请实施例的上述处理过程中,上述的第二文件具体可以包括但不限于:TransactionStateTable(交易状态表)文件。在上述处理过程中,如果中间件设备收到的来自业务处理设备的第二事务消息中携带的状态为回滚状态,则中间件设备也需要将第二文件中存储的第一位置信息对应的准备状态替换为回滚状态。或者,如果中间件设备收到的来自业务处理设备的携带第一位置信息以及消息状态的消息中,消息状态为回滚状态,则中间件设备也需要将第二文件中存储的第一位置信息对应的准备状态替换为回滚状态。
基于中间件设备上维护的第二文件,本申请实施例中,中间件设备定时(如每隔10秒)查询第二文件中存储的消息状态。如果消息状态为准备状态,则中间件设备向对应的业务处理设备(即业务处理设备标识字段对应的业务处理设备)发送查询消息,该查询消息用于询问业务处理设备是否会向中间件设备发送携带提交状态或者回滚状态的消息。如果中间件设备收到业务处理设备会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则中间件设备继续保存第一文件中存储的第一事务消息。如果中间件设备收到业务处理设备不会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则中间件设备从第一文件中删除对应的第一事务消息。
具体的,中间件设备启动一个定时任务,并定时(如每隔10秒)查询第二文件中存储的所有消息状态。如果第二文件中存储的所有消息状态均为提交状态,则调度停止。如果第二文件中存储的消息状态中有提交状态和准备状态,则如果消息状态为提交状态,则针对该消息状态的处理结束。如果消息状态为准备状态,则中间件设备向对应的业务处理设备(即第二文件中的业务处理设备标识字段对应的业务处理设备)发送查询消息,该查询消息用于询问业务处理设备是否会向中间件设备发送携带提交状态或者回滚状态的消息。由业务处理设备向中间件设备返回业务处理设备是否会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息。如果中间件设备收到业务处理设备会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则中间件设备继续保存第一文件中存储的第一事务消息。如果中间件设备收到业务处理设备不会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则中间件设备从第一文件中删除对应的第一事务消息。
本申请实施例中,中间件设备在将消息状态(如准备状态或提交状态)存储到第二文件时,在第二文件中是通过事务消息在第一文件中的位置信息(如第一位置信息或第二位置信息)为索引的。由于事务消息在第一文件中的位置信息不会发生变化,因此采用事务消息在第一文件中的位置信息进行索引,可以实现消息状态的快速索引查询,而且查询结果准确无误。
本申请实施例中,中间件设备在将第一事务消息存储到第一文件之后,中间件设备确定第一事务消息在第一文件中的第一位置信息,并将第一事务消息中携带的准备状态以及第一位置信息存储到本地的第三文件中。中间件设备在将第二事务消息存储到第一文件之后,中间件设备确定第二事务消息对应的第一事务消息在第一文件中的第一位置信息,并将第二事务消息对应的第一位置信息以及第二事务消息中携带的提交状态存储到第三文件中。
在第三文件的一种示例中,该第三文件的字段具体包括第一位置信息字段(即commitlog的offset(偏移量)字段)、消息大小字段、消息状态字段。中间件设备在将第一事务消息存储到第一文件之后,中间件设备确定第一事务消息在第一文件中的第一位置信息,并将该第一位置信息存储到第二文件的第一位置信息字段,并将第一事务消息的大小存储在消息大小字段,并将该第一事务消息中携带的准备状态存储在消息状态字段,如表4所示。中间件设备在将第二事务消息存储到第一文件之后,中间件设备确定第二事务消息对应的第一事务消息在第一文件中的第一位置信息。其中,由于中间件设备接收来自业务处理设备的携带第一位置信息以及消息状态的消息之后,中间件设备利用消息中携带的第一位置信息从第一文件中获得第一事务消息,并利用该第一事务消息以及提交状态生成第二事务消息,因此,中间件设备可以直接确定第二事务消息对应的第一事务消息在第一文件中的第一位置信息。之后,中间件设备将第二事务消息对应的第一位置信息存储到第二文件的第一位置信息字段,并将第一事务消息的大小存储在消息大小字段,并将第二事务消息中携带的提交状态存储在消息状态字段,如表5所示。
表4
表5
进一步的,本申请实施例中,中间件设备在将第二事务消息对应的第一位置信息以及第二事务消息中携带的提交状态存储到第三文件之后,中间件设备还可以确定第二事务消息在第一文件中的第二位置信息,并将第二事务消息对应的第一位置信息替换为当前确定的第二位置信息,如表6所示。
表6
在本申请实施例的上述处理过程中,上述的第三文件具体可以包括但不限于:Redolog(归档)文件。在上述处理过程中,如果中间件设备收到的来自业务处理设备的第二事务消息中携带的状态为回滚状态,则中间件设备也需要将第三文件中存储的第一位置信息对应的准备状态替换为回滚状态。或者,如果中间件设备收到的来自业务处理设备的携带第一位置信息以及消息状态的消息中,消息状态为回滚状态,则中间件设备也需要将第三文件中存储的第一位置信息对应的准备状态替换为回滚状态。
基于中间件设备上维护的第三文件,本申请实施例中,当第二文件中的消息状态和第一位置信息被异常删除时,中间件设备遍历第三文件中存储的消息状态;如果第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态,则中间件设备将第一位置信息和准备状态存储到第二文件中;如果第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态和提交状态,则中间件设备将第一位置信息和提交状态存储到第二文件中。
具体的,当中间件设备异常启动时,则第二文件中的消息状态和第一位置信息可能被异常删除,此时,中间件设备可以删除第二文件中存储的所有信息,并依次遍历第三文件中存储的所有消息状态。如果第三文件中存储的对应于同一第一位置信息的消息状态只包括准备状态,如表4所示,对应于第一位置信息(如5)的消息状态只包括准备状态,则中间件设备将第一位置信息和准备状态存储到第二文件中。具体的,中间件设备将该第一位置信息存储到第二文件的第一位置信息字段,并将第一事务消息的大小(可以基于第一位置信息从第一文件中读取到第一事务消息的大小)存储在消息大小字段,并将发送该第一事务消息的业务处理设备的标识(可以基于第一位置信息从第一文件中读取到业务处理设备的标识)存储在业务处理设备标识字段,并将该准备状态存储在消息状态字段,如表1所示。如果第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态和提交状态,如表5所示,对应于第一位置信息(如5)的消息状态包括准备状态和提交状态,则中间件设备将第一位置信息和提交状态存储到第二文件中。具体的,中间件设备将该第一位置信息存储到第二文件的第一位置信息字段,并将第一事务消息的大小(可以基于第一位置信息从第一文件中读取到第一事务消息的大小)存储在消息大小字段,并将发送该第一事务消息的业务处理设备的标识(可以基于第一位置信息从第一文件中读取到业务处理设备的标识)存储在业务处理设备标识字段,并将该提交状态存储在消息状态字段,如表1所示。
本申请实施例中,中间件设备在将消息状态(如准备状态或提交状态)存储到第三文件时,在第三文件中是通过事务消息在第一文件中的位置信息(如第一位置信息或第二位置信息)为索引的。由于事务消息在第一文件中的位置信息不会发生变化,因此采用事务消息在第一文件中的位置信息进行索引,可以实现消息状态的快速索引查询,而且查询结果准确无误。
综上所述,与现有技术相比,本申请实施例至少具有以下优点:本申请实施例中,中间件设备在收到事务消息之后,可以通过第一文件来存储事务消息,并保证消息的一致性,从而可以避免与第三方数据库的交互。进一步的,由于中间件设备不需要通过与第三方数据库的交互,来实现事务消息的传输过程,因此,中间件设备的处理效率很高,处理性能较好,并能够提高中间件设备的使用率,缩减大量的第三方数据库的使用成本,减少网络开销。进一步的,由于通过第一文件来存储事务消息,大大增加了支持挂起状态(即Prepared状态)的事务消息的数量,而不像第三方数据库的存储有容量瓶颈。
实施例二
基于与上述方法同样的申请构思,本申请实施例中还提供了一种中间件设备,如图3所示,所述中间件设备具体包括:
第一事务消息处理模块11,用于接收来自业务处理设备的第一事务消息,并将所述第一事务消息存储到所述中间件设备的第一文件中;其中,所述第一事务消息中携带的状态为准备状态;
第二事务消息处理模块12,用于获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;
第二事务消息发送模块13,用于将第二事务消息发送给业务响应设备。
所述第二事务消息处理模块12,具体用于在收到所述第一事务消息之后,将中间件设备成功收到所述第一事务消息的信息发送给所述业务处理设备;接收来自所述业务处理设备的第二事务消息,所述第二事务消息中携带的状态为提交状态或者回滚状态;当所述第二事务消息中携带的状态为回滚状态时,则丢弃所述第二事务消息;当所述第二事务消息中携带的状态为提交状态时,则将所述第二事务消息存储到所述第一文件中;或者,
在收到第一事务消息之后,将中间件设备成功收到第一事务消息的信息以及第一事务消息在所述第一文件中的第一位置信息发送给所述业务处理设备;接收来自所述业务处理设备的携带所述第一位置信息以及消息状态的消息,所述消息状态为提交状态或者回滚状态;当所述消息状态为回滚状态时,丢弃当前收到的信息;当所述消息状态为提交状态时,利用所述第一位置信息从所述第一文件中获得第一事务消息,并利用所述第一事务消息以及所述提交状态生成第二事务消息,并将所述第二事务消息存储到所述第一文件中。
所述第二事务消息处理模块12,进一步用于在将所述第一事务消息存储到所述第一文件之后,确定所述第一事务消息在所述第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到所述中间件设备的第二文件中;在将所述第二事务消息存储到所述第一文件之后,确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并利用所述第二事务消息对应的所述第一位置信息查询所述第二文件中存储的第一位置信息,并将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态。
所述第二事务消息处理模块12,进一步用于定时查询所述第二文件中存储的消息状态;如果所述消息状态为准备状态,则向对应的业务处理设备发送查询消息,所述查询消息用于询问所述业务处理设备是否会向所述中间件设备发送携带提交状态或者回滚状态的消息;如果所述中间件设备收到所述业务处理设备会向所述中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则继续保存所述第一文件中存储的第一事务消息;如果所述中间件设备收到所述业务处理设备不会向所述中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则从所述第一文件中删除对应的第一事务消息。
所述第二事务消息处理模块12,进一步用于在将所述第一事务消息存储到所述第一文件之后,确定所述第一事务消息在所述第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到所述中间件设备的第三文件中;在将所述第二事务消息存储到所述第一文件之后,确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件中。
所述第二事务消息处理模块12,进一步用于当所述第二文件中的消息状态和第一位置信息被异常删除时,遍历所述第三文件中存储的消息状态;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态,则将所述第一位置信息和所述准备状态存储到所述第二文件中;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态和提交状态,则将所述第一位置信息和所述提交状态存储到所述第二文件中。
所述第二事务消息处理模块12,进一步用于在将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态之后,确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二文件中存储的所述第一位置信息替换为所述第二位置信息;和/或,
所述第二事务消息处理模块12,进一步用于在将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件之后,确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二事务消息对应的所述第一位置信息替换为所述第二位置信息。
本申请实施例中,所述第一文件具体包括commitlog文件;所述第二文件具体包括TransactionStateTable文件;所述第三文件具体包括Redolog文件。
其中,本申请装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本申请的几个具体实施例,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (16)
1.一种事务消息的传输方法,其特征在于,所述方法包括以下步骤:
中间件设备接收来自业务处理设备的第一事务消息,并将所述第一事务消息存储到本地的第一文件中,所述第一事务消息中携带的状态为准备状态;
所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;
所述中间件设备将所述第二事务消息发送给业务响应设备。
2.如权利要求1所述的方法,其特征在于,所述中间件设备获得第二事务消息,并将所述第二事务消息存储到所述第一文件的过程,具体包括:
所述中间件设备在收到第一事务消息之后,将中间件设备成功收到第一事务消息的信息发送给所述业务处理设备;所述中间件设备接收来自所述业务处理设备的第二事务消息,所述第二事务消息中携带的状态为提交状态或者回滚状态;当所述第二事务消息中携带的状态为回滚状态时,所述中间件设备丢弃所述第二事务消息;当所述第二事务消息中携带的状态为提交状态时,所述中间件设备将所述第二事务消息存储到所述第一文件中;或者,
所述中间件设备在收到第一事务消息之后,将中间件设备成功收到第一事务消息的信息以及第一事务消息在所述第一文件中的第一位置信息发送给所述业务处理设备;所述中间件设备接收来自所述业务处理设备的携带所述第一位置信息以及消息状态的消息,所述消息状态为提交状态或者回滚状态;当所述消息状态为回滚状态时,所述中间件设备丢弃当前收到的信息;当所述消息状态为提交状态时,所述中间件设备利用所述第一位置信息从所述第一文件中获得第一事务消息,并利用所述第一事务消息以及所述提交状态生成第二事务消息,并将所述第二事务消息存储到所述第一文件中。
3.如权利要求1所述的方法,其特征在于,所述方法进一步包括:
所述中间件设备在将第一事务消息存储到第一文件之后,所述中间件设备确定所述第一事务消息在第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到本地的第二文件中;
所述中间件设备在将所述第二事务消息存储到所述第一文件之后,所述中间件设备确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并利用所述第二事务消息对应的所述第一位置信息查询所述第二文件中存储的第一位置信息,并将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态。
4.如权利要求3所述的方法,其特征在于,所述方法进一步包括:
所述中间件设备定时查询所述第二文件中存储的消息状态;如果所述消息状态为准备状态,则所述中间件设备向对应的业务处理设备发送查询消息,所述查询消息用于询问业务处理设备是否会向所述中间件设备发送携带提交状态或者回滚状态的消息;如果所述中间件设备收到业务处理设备会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则所述中间件设备继续保存所述第一文件中存储的第一事务消息;如果所述中间件设备收到业务处理设备不会向中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则所述中间件设备从所述第一文件中删除对应的第一事务消息。
5.如权利要求3所述的方法,其特征在于,所述方法进一步包括:
所述中间件设备在将第一事务消息存储到第一文件之后,所述中间件设备确定所述第一事务消息在第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到本地的第三文件中;
所述中间件设备在将所述第二事务消息存储到所述第一文件之后,所述中间件设备确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件中。
6.如权利要求5所述的方法,其特征在于,所述方法进一步包括:
当所述第二文件中的消息状态和第一位置信息被异常删除时,所述中间件设备遍历所述第三文件中存储的消息状态;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态,则所述中间件设备将所述第一位置信息和所述准备状态存储到所述第二文件中;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态和提交状态,则所述中间件设备将所述第一位置信息和所述提交状态存储到所述第二文件中。
7.如权利要求5所述的方法,其特征在于,所述方法进一步包括:
所述中间件设备在将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态之后,所述中间件设备确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二文件中存储的所述第一位置信息替换为所述第二位置信息;和/或,
所述中间件设备在将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件之后,所述中间件设备确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二事务消息对应的所述第一位置信息替换为所述第二位置信息。
8.如权利要求5-7任一项所述的方法,其特征在于,
所述第一文件具体包括commitlog文件;
所述第二文件具体包括TransactionStateTable文件;
所述第三文件具体包括Redolog文件。
9.一种中间件设备,其特征在于,所述中间件设备具体包括:
第一事务消息处理模块,用于接收来自业务处理设备的第一事务消息,并将所述第一事务消息存储到所述中间件设备的第一文件中;其中,所述第一事务消息中携带的状态为准备状态;
第二事务消息处理模块,用于获得第二事务消息,并将所述第二事务消息存储到所述第一文件中,所述第二事务消息中携带的状态为提交状态;
第二事务消息发送模块,用于将所述第二事务消息发送给业务响应设备。
10.如权利要求9所述的设备,其特征在于,
所述第二事务消息处理模块,具体用于在收到所述第一事务消息之后,将中间件设备成功收到所述第一事务消息的信息发送给所述业务处理设备;接收来自所述业务处理设备的第二事务消息,所述第二事务消息中携带的状态为提交状态或者回滚状态;当所述第二事务消息中携带的状态为回滚状态时,则丢弃所述第二事务消息;当所述第二事务消息中携带的状态为提交状态时,则将所述第二事务消息存储到所述第一文件中;或者,
在收到第一事务消息之后,将中间件设备成功收到第一事务消息的信息以及第一事务消息在所述第一文件中的第一位置信息发送给所述业务处理设备;接收来自所述业务处理设备的携带所述第一位置信息以及消息状态的消息,所述消息状态为提交状态或者回滚状态;当所述消息状态为回滚状态时,丢弃当前收到的信息;当所述消息状态为提交状态时,利用所述第一位置信息从所述第一文件中获得第一事务消息,并利用所述第一事务消息以及所述提交状态生成第二事务消息,并将所述第二事务消息存储到所述第一文件中。
11.如权利要求9所述的设备,其特征在于,
所述第二事务消息处理模块,进一步用于在将所述第一事务消息存储到所述第一文件之后,确定所述第一事务消息在所述第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到所述中间件设备的第二文件中;在将所述第二事务消息存储到所述第一文件之后,确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并利用所述第二事务消息对应的所述第一位置信息查询所述第二文件中存储的第一位置信息,并将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态。
12.如权利要求11所述的设备,其特征在于,
所述第二事务消息处理模块,进一步用于定时查询所述第二文件中存储的消息状态;如果所述消息状态为准备状态,则向对应的业务处理设备发送查询消息,所述查询消息用于询问所述业务处理设备是否会向所述中间件设备发送携带提交状态或者回滚状态的消息;如果所述中间件设备收到所述业务处理设备会向所述中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则继续保存所述第一文件中存储的第一事务消息;如果所述中间件设备收到所述业务处理设备不会向所述中间件设备发送携带提交状态或者回滚状态的消息的响应消息,则从所述第一文件中删除对应的第一事务消息。
13.如权利要求11所述的设备,其特征在于,
所述第二事务消息处理模块,进一步用于在将所述第一事务消息存储到所述第一文件之后,确定所述第一事务消息在所述第一文件中的第一位置信息,并将所述第一事务消息中携带的准备状态以及所述第一位置信息存储到所述中间件设备的第三文件中;在将所述第二事务消息存储到所述第一文件之后,确定所述第二事务消息对应的第一事务消息在所述第一文件中的第一位置信息,并将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件中。
14.如权利要求13所述的设备,其特征在于,
所述第二事务消息处理模块,进一步用于当所述第二文件中的消息状态和第一位置信息被异常删除时,遍历所述第三文件中存储的消息状态;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态,则将所述第一位置信息和所述准备状态存储到所述第二文件中;如果所述第三文件中存储的对应于同一第一位置信息的消息状态包括准备状态和提交状态,则将所述第一位置信息和所述提交状态存储到所述第二文件中。
15.如权利要求13所述的设备,其特征在于,
所述第二事务消息处理模块,进一步用于在将所述第二文件中存储的第一位置信息对应的准备状态替换为所述第二事务消息中携带的提交状态之后,确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二文件中存储的所述第一位置信息替换为所述第二位置信息;和/或,
所述第二事务消息处理模块,进一步用于在将所述第二事务消息对应的所述第一位置信息以及所述第二事务消息中携带的提交状态存储到所述第三文件之后,确定所述第二事务消息在所述第一文件中的第二位置信息,并将所述第二事务消息对应的所述第一位置信息替换为所述第二位置信息。
16.如权利要求13-15任一项所述的设备,其特征在于,
所述第一文件具体包括commitlog文件;
所述第二文件具体包括TransactionStateTable文件;
所述第三文件具体包括Redolog文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410374551.4A CN105447000A (zh) | 2014-07-31 | 2014-07-31 | 一种事务消息的传输方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410374551.4A CN105447000A (zh) | 2014-07-31 | 2014-07-31 | 一种事务消息的传输方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105447000A true CN105447000A (zh) | 2016-03-30 |
Family
ID=55557196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410374551.4A Pending CN105447000A (zh) | 2014-07-31 | 2014-07-31 | 一种事务消息的传输方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105447000A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329800A (zh) * | 2017-06-29 | 2017-11-07 | 北京北信源软件股份有限公司 | 一种基于Docker平台的中间件应用管控方法和装置 |
CN109086388A (zh) * | 2018-07-26 | 2018-12-25 | 百度在线网络技术(北京)有限公司 | 区块链数据存储方法、装置、设备及介质 |
CN109948994A (zh) * | 2018-12-14 | 2019-06-28 | 深圳壹账通智能科技有限公司 | 一种即时通信方法、装置、计算机系统及可读存储介质 |
CN111225012A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364997A (zh) * | 2008-10-09 | 2009-02-11 | 阿里巴巴集团控股有限公司 | 基于网络的分布式事务处理方法和系统 |
US20100281490A1 (en) * | 2009-04-29 | 2010-11-04 | International Business Machines Corporation | Generating transaction message |
CN102306197A (zh) * | 2011-09-22 | 2012-01-04 | 用友软件股份有限公司 | 保证跨数据源操作结果一致性的装置和方法 |
CN102571850A (zh) * | 2010-12-24 | 2012-07-11 | 中国移动通信集团山东有限公司 | 事务提交系统、方法及设备 |
CN103312549A (zh) * | 2013-06-26 | 2013-09-18 | 华为技术有限公司 | 一种事务管理方法及装置和系统 |
-
2014
- 2014-07-31 CN CN201410374551.4A patent/CN105447000A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364997A (zh) * | 2008-10-09 | 2009-02-11 | 阿里巴巴集团控股有限公司 | 基于网络的分布式事务处理方法和系统 |
US20100281490A1 (en) * | 2009-04-29 | 2010-11-04 | International Business Machines Corporation | Generating transaction message |
CN102571850A (zh) * | 2010-12-24 | 2012-07-11 | 中国移动通信集团山东有限公司 | 事务提交系统、方法及设备 |
CN102306197A (zh) * | 2011-09-22 | 2012-01-04 | 用友软件股份有限公司 | 保证跨数据源操作结果一致性的装置和方法 |
CN103312549A (zh) * | 2013-06-26 | 2013-09-18 | 华为技术有限公司 | 一种事务管理方法及装置和系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329800A (zh) * | 2017-06-29 | 2017-11-07 | 北京北信源软件股份有限公司 | 一种基于Docker平台的中间件应用管控方法和装置 |
CN109086388A (zh) * | 2018-07-26 | 2018-12-25 | 百度在线网络技术(北京)有限公司 | 区块链数据存储方法、装置、设备及介质 |
CN109086388B (zh) * | 2018-07-26 | 2020-12-29 | 百度在线网络技术(北京)有限公司 | 区块链数据存储方法、装置、设备及介质 |
CN111225012A (zh) * | 2018-11-27 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和设备 |
CN109948994A (zh) * | 2018-12-14 | 2019-06-28 | 深圳壹账通智能科技有限公司 | 一种即时通信方法、装置、计算机系统及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104125208B (zh) | 数据传输方法及装置 | |
CN111091429A (zh) | 电子票据标识分配方法及装置、电子票据生成系统 | |
CN101969468A (zh) | 查询服务器集群系统及查询方法 | |
CN105447000A (zh) | 一种事务消息的传输方法和设备 | |
CN112788074A (zh) | 数据发送方法、处理方法、接收方法及其设备、存储介质 | |
CN103581336B (zh) | 基于云计算平台的业务流程调度方法及系统 | |
CN111038906A (zh) | 一种订单分拣方法和装置 | |
CN107870982A (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN107612950A (zh) | 一种提供服务的方法、装置、系统、电子设备 | |
CN106202309A (zh) | 一种多租户的数据查询方法、系统及共享平台服务器 | |
CN107644017A (zh) | 日志文件的查询方法及装置 | |
US20030115119A1 (en) | Document exchange | |
CN108134824A (zh) | 一种旅行产品运行日志记录方法及系统 | |
CN105160036B (zh) | 一种企业非银信息查询方法 | |
US20180260466A1 (en) | Identifier based data replication | |
CN102629345B (zh) | 链式沟通协作方法、装置及系统 | |
CN104915457A (zh) | 一种线下商品搜索及导航系统及方法 | |
CN107122362A (zh) | 云数据库资源扩展和服务扩展的方法和系统 | |
CN103414705A (zh) | 一种基于saas模式的移动互联网络异构数据交换方法 | |
CN107169752B (zh) | 一种资源转移方法及装置 | |
CN102970209A (zh) | 一种电子邮件状态更新方法、装置及系统 | |
CN107656943B (zh) | 任务查询方法及服务器 | |
CN105376147B (zh) | 即时通讯消息路由寻址方法、接入服务器及系统 | |
WO2016169420A1 (zh) | 一种业务请求执行状态的查询方法、装置及系统 | |
US7810101B2 (en) | Task harmonization layer |
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: 20160330 |
|
RJ01 | Rejection of invention patent application after publication |