[发明专利]分布式事务处理方法和系统有效
| 申请号: | 201611110856.X | 申请日: | 2016-12-06 |
| 公开(公告)号: | CN106775959B | 公开(公告)日: | 2017-12-22 |
| 发明(设计)人: | 杨作仲;熊杰 | 申请(专利权)人: | 上海壹账通金融科技有限公司 |
| 主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F17/30 |
| 代理公司: | 广州华进联合专利商标代理有限公司44224 | 代理人: | 谢曲曲 |
| 地址: | 200030 上海市*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 分布式 事务处理 方法 系统 | ||
技术领域
本发明涉及计算机处理领域,特别是涉及一种分布式事务处理方法和系统。
背景技术
事务(Transaction)是由一组操作构成的可靠、独立的工作单元,在该工作单元中所有的操作要么都成功,要么都失败。事务具备四个基本的特性:原子性、一致性、隔离性、持久性,也简称为事务的ACID特性。在微服务时代,业务进行大量的拆分后,随之而来的就是分布式事务的数据一致性问题,特别是涉及到交易的不同系统之间的分布式事务。为了保证分布式事务的数据一致性,通过事务表来记录各个事务或子事务的操作状态,传统的事务表的管理是通过单独的一个服务系统来统一管理各个事务的操作状态,这样每个业务系统都需要和该服务系统建立网络连接,不仅耗费网络流量,而且由于每个业务系统要和服务系统进行交互,所有的操作记录都记录在同一事务表中,不仅加重了事务表的负担,且导致操作效率较低,并且,若服务系统出现故障,那么将会导致业务系统整个瘫痪,即存在单点故障。
发明内容
基于此,有必要针对上述问题,提出一种能够减少网络流量且效率高的分布式事务处理方法和系统。
一种分布式事务处理方法,所述方法包括:主业务系统接收分布式事务的开启请求,根据所述开启请求为所述分布式事务分配一个事务标识,将所述事务标识和对应的开启状态记录到主事务表中,所述主事务表存储在主业务数据库中;所述主业务系统将所述分布式事务分为多个子事务,并分别向对应的各个从业务系统发送执行所述子事务的指令,所述指令中包括事务标识;所述从业务系统根据所述执行子事务的指令在从业务前置表中进行对应的操作,若操作成功,则根据所述事务标识生成一条标识当前子事务操作状态的记录插入到子事务表中,若操作失败,则不记录,其中,所述从业务前置表为从业务主表的复制表,所述从业务前置表和所述子事务表都存储在对应的从业务数据库中;所述主业务系统获取各个子事务的操作结果,并根据所述操作结果更新主事务表中的操作状态,若所有子事务全部操作成功,则向消息系统发送确认消息,若至少一个子事务操作失败,则向消息系统发送取消消息;所述消息系统将所述确认消息或取消消息发送给对应的各个从业务系统;若所述从业务系统接收到的消息为确认消息,则将之前在从业务前置表中的操作同步到从业务主表中以完成对应子事务的提交,若所述从业务系统接收到的消息为取消消息,则直接将之前在从业务前置表中的操作进行回滚。
在其中一个实施例中,所述主业务系统获取各个子事务的操作结果,并根据所述操作结果更新主事务表中的操作状态,若所有子事务全部操作成功,则向消息系统发送确认消息,若至少一个子事务操作失败,则向消息系统发送取消消息的步骤包括:所述主业务系统获取各个子事务的操作结果,若所有子事务全部操作成功,则将主事务表中的操作状态由开启状态更新为尝试完成,然后向消息系统发送确认消息,若消息发送成功,则将主事务表中的操作状态由尝试完成更新为确认完成;若至少一个子事务操作失败,则将主事务表中的操作状态由开启状态更新为回滚中,然后向消息系统发送取消消息,若消息发送成功,则将主事务表中的操作状态由回滚中更新为回滚完成。
在其中一个实施例中,所述若所述从业务系统接收到的消息为确认消息,则将之前在从业务前置表中的操作同步到从业务主表中以完成对应子事务的提交,若所述从业务系统接收到的消息为取消消息,则直接将之前在从业务前置表中的操作进行回滚的步骤包括:若所述从业务系统收到的消息为确认消息,则根据所述确认消息将所述子事务表中的操作状态由尝试完成更新为确认中,然后根据所述子事务表中的操作记录将之前在从业务前置表中的操作同步到从业务主表中,若同步成功,则将所述子事务表中的状态更新为确认完成;若所述从业务系统收到的消息为取消消息,则根据所述事务标识在子事务表中查找与该事务标识对应的操作状态,若能够查找到,则将所述操作状态更新为回滚中,然后根据所述子事务表中的操作记录将之前对所述从业务前置表的操作进行回滚,若回滚成功,则将所述子事务表中的操作状态更新为回滚完成,若查找不到,则结束。
在其中一个实施例中,所述主业务系统将所述分布式事务分为多个子事务,并分别向对应的各个从业务系统发送执行所述子事务的指令,所述指令中包括事务标识的步骤包括:所述主业务系统将所述分布式事务分为多个子事务并设置各个子事务的执行顺序,按照所述执行顺序向对应的从业务系统发送执行所述子事务的指令,所述指令中包括事务标识,当接收到前一个子事务执行结果为成功时,才将后一个子事务的执行命令发送到对应的从业务系统,若接收到前一个子事务的执行结果为失败,则不再执行后面的子事务。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海壹账通金融科技有限公司,未经上海壹账通金融科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611110856.X/2.html,转载请声明来源钻瓜专利网。





