1 .一种用于处理分布式事务的方法,包括:
从各个事务参与者接收分布式事务请求;
向全局事务模块发送所述分布式事务请求;
从所述全局事务模块接收经全局序列化的事务请求;
在事务参与者本地根据经全局序列化的事务请求生成全局事务状态信息;以及
根据所述全局事务状态信息,执行SQL语句。
2.根据权利要求1所述的方法,其中,所述分布式事务请求包括以下中的一个或多个:
事务开启请求、事务提交请求、事务回滚请求、事务快照请求,以及其中,所述全局事务状态
信息包括以下中的一个或多个:当前最大全局事务标识、当前处于活跃状态的事务标识集。
3 .根据权利要求1所述的方法,其特征在于,
在各个事务参与者提交所述分布式事务请求前,该方法还包括:根据不同的事务请求
类型,生成对应的全局事务请求;
其中,生成所述对应的全局事务请求进一步包括:
如果所述事务请求类型为事务开启请求,则全局事务请求包含事务参与者全局标识、
事务参与者独自生成的本地事务标识;
如果所述事务请求类型为事务提交请求,则全局事务请求包含事务参与者全局标识、
以及获得的全局事务标识;
如果所述事务请求类型为事务回滚请求,则全局事务请求包含事务参与者全局标识、
以及获得的全局事务标识;以及
如果所述事务请求类型为事务快照请求,则不需要转换成全局事务请求,而直接在本
地进行请求响应以获取全局事务状态信息。
4 .根据权利要求1所述的方法,其特征在于,
其中,所述经全局序列化的事务请求进一步包括:通过对所述分布式事务请求添加全
局递增的连续的ID获得的事务请求。
5 .根据权利要求1所述的方法,其特征在于,
生成所述全局事务状态信息进一步包括:
如果所述分布式事务请求是事务开启请求,则将所述分布式事务请求中包含的本地事
务标识与全局事务状态信息中的当前最大全局事务标识进行比较,并根据所述比较的结果
来更新所述本地事务标识,其中,如果所述本地事务标识大于所述当前最大全局事务标识,
则将所述当前最大全局事务标识更新为所述本地事务标识,并将其作为对应参与者的全局
事务标识,同时将更新后的当前最大全局事务标识放入到当前处于活跃状态的事务标识集
中;如果所述本地事务标识小于或等于所述当前最大全局事务标识,则将所述当前最大全
局事务标识更新为当前最大全局事务标识加一,并将其作为对应参与者的全局事务标识,
同时将更新后的当前最大全局事务标识放入到当前处于活跃状态的事务标识集中;
如果所述分布式事务请求是事务提交请求或者事务回滚请求,则根据所述分布式事务
请求中包含的全局事务标识,将其从所述全局事务状态信息中的当前处于活跃状态的事务
标识集中清除;以及
如果所述分布式事务请求是事务快照请求,则获取当前的全局事务状态信息的快照信
息。
权 利 要 求 书
1/4 页
2
评论