【技术实现步骤摘要】
本专利技术涉及计算机网络
,尤其涉及一种基于binlog补偿机制的分布式事务服务方法及系统。
技术介绍
OLTP(On-LineTransactionProcessing,联机事务处理)主要是执行基本的、日常的事务处理,比如数据库记录的增、删、改、查,对实时性要求较高。分布式事务作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行,具有原子性、一致性、隔离性、持久性。分布式事务涉及多个分布在不同地方的数据库,但对数据库的操作必须全部被提交或者回滚。只要任一数据库操作失败,所有参与事务的数据库都需要回滚。事务补偿是指对一个分布式事务做反向操作,比如一个分布式事务对一张表插入n条数据,则反向补偿时要将对应的n条数据删除。binlog(binarylog,二进制日志)是MySql执行改动产生的日志文件,以二进制的形式保存在磁盘中,可用于数据恢复和主从同步。在OLTP系统领域中,很多业务场景下都会面临事务一致性方面的需求,最典型的场景如转账业务,用户A给用户B转账,首先A账户扣款,然后B账户存入相应的金额,这两步操作要么全部成功,要么全部失败。任何一方成功、另一方失败,都会造成数据不一致。如果上述两个步骤涉及的是同一个数据库,则只需要借助关系型数据库自带的事务管理机制即可实现事务性的需求。然而现在大型互联网平台往往是由一系列分布式系统构成的,因此一笔业务处理可能需要调用多个“服务”并操作多个数据库才能完成,因此仅仅依赖关系型数据库自带的事务机制已经满足不了我们的需求。针对这一情况,现在业界提出的解决方案一般有两阶段提交协议(TwoPhas ...
【技术保护点】
一种基于binlog补偿机制的分布式事务服务方法,其特征在于,包括以下步骤:S1:将分布式事务的操作写入MySql的binlog事件中;S2:获取分布式事务的binlog事件,并对所述binlog事件进行解析,获得解析后的binlog数据;S3:根据所述解析后的binlog数据,判断所述分布式事务是否提交成功;若提交不成功,则取出与所述解析后的binlog数据对应的binlog事件,根据所述对应的binlog事件构造反向补偿的Sql语句并加以执行;否则完成。
【技术特征摘要】
1.一种基于binlog补偿机制的分布式事务服务方法,其特征在于,包括以下步骤:S1:将分布式事务的操作写入MySql的binlog事件中;S2:获取分布式事务的binlog事件,并对所述binlog事件进行解析,获得解析后的binlog数据;S3:根据所述解析后的binlog数据,判断所述分布式事务是否提交成功;若提交不成功,则取出与所述解析后的binlog数据对应的binlog事件,根据所述对应的binlog事件构造反向补偿的Sql语句并加以执行;否则完成。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在步骤S1之前,开启所述MySql的binlog写入功能,并且将所述MySql的binlog格式设置为ROW模式。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:在步骤S3之前,设置所述分布式事务的超时时间;若在步骤S3中提交不成功,则判断是否收到补偿通知;若收到补偿通知,则取出所述解析后的binlog数据对应的binlog事件,根据所述对应的binlog事件构造反向补偿的Sql语句并加以执行;若没有收到补偿通知,则判断是否到达所述超时时间;若到达所述超时时间,则取出所述解析后的binlog数据对应的binlog事件,根据所述对应的binlog事件构造反向补偿的Sql语句并加以执行;否则根据所述解析后的binlog数据,判断所述分布式事务是否提交成功。4.根据权利要求2所述的方法,其特征在于,所述ROW模式下的binlog-row-image设置为full。5.根据权利要求1-4的任一项所述的方法,其特征在于,步骤S1还包括:创建数据库的事务表和状态字段,所述事务表用于记录所述数据库和所述操作的相关信息。6.根据权利要求5所述的方法,其特征在于,所述相关信息包括但不局限于:唯一标识相应记录的主键id、所述数据库参与的分布式事务的id、所述分布式事务涉及的所有数据库的信息、记录所述数据库提交所述分布式事务的时间戳。7.根据权利要求5所述的方法,其特征在于,反向补偿的Sql语句执行成功之后,删除所述事务表中的所有记录,并将状态字段设置为完成;所述分布式事务提交成功之后,将状态字段设置为完成。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:在步骤S2中获得解析后的binlog数据后,将解析后的binlog数据进行封装处理,并将封装的binlog数据存储在Redis或Memcache中。9.根据权利要求8所述的方法,其特征在于,以数据库参与的分布式事务的id和数据库唯一标识为key,以封装好的、一个数据库事务所涉及的所有操作为value,将封装的binlog数据存储到Redis或Memcache中。10.一种基于binlog补偿机制的分布式事务服务系统,其特征在于,包括:写入模块,用于将分布式事务的操作写入MyS...
【专利技术属性】
技术研发人员:王义林,贾玉辰,
申请(专利权)人:北京京东金融科技控股有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。