美文网首页
分布式事务相关问题

分布式事务相关问题

作者: kevin0016 | 来源:发表于2018-06-03 11:58 被阅读329次

分布式事务没有标准答案,只有结合业务场景的解决方案

TCC,XA,JTA,LCN,2PC

1、分布式事务是什么

    数据库分库分表之后,保证多个数据库之间的提交和回滚数据的一致性 ,如图,假设一个订单系统,订单数据库和调度数据库是分开的,如何保证订单库和调度库的一致性,就是所谓分布式事务,这里多说一句,单一数据库不存在分布式事务的问题。

2、常用的分布式事务解决方案第一类:XA,JTA,TCC,2PC,这些都是基于两阶段提交的思想

    (1)、异步任务,校验数据,对比数据是否正确,通知工作人员,也可以根据代码进行修正是数据(最好实现的方法,但并不是分布式事务的解决方案)

    (2)、XA只是一个约定协议,不是一个实现,定义了一个协议,两阶段提交的一个协议2PC,实现是其他开源软件的事情(Java,PHP,go,数据库),JTA就是Java中实现分布式事务的一组规范

    x/openXA 包含了2PC规范 -> Java阵营根据XA协议,定义了JTA规范 -> Atomikos框架进行实现

    Java中常用Atomikos在实现,适用场景:一个Java应用实例,操作多个数据库,针对于单体应用,不能用于跨系统之间的协调,如图所示,还是外卖订单的图,如果通过JTA实现,那么就不能跨系统调用,只能是单一系统进行多个数据库的操作

    看一下代码中如何使用

    此处的数据库连接池,采用了阿里的druid连接池

    事务管理交由atomikos进行管理,具体的代码其实百度查有很多例程,此处就不多说了,厂商封装好了atomikos,不仅仅是要求Java实现,还要求数据库支持才行(mysql,oracle,db2)(undo,redo日志),此处我们画一个图来说明一下atomikos的实现原理

第一阶段,准备阶段

第二阶段:提交阶段

    优点:数据一致性好

    缺点:性能比较低,需要保证两个数据库同时在连接数据库,占用很大的资源。一旦协调员挂掉了,无法进行恢复或者回滚。

    互联网项目用这种方法并不多,实在太消耗资源了,占用太多的数据库的链接资源,因为只能是单一系统的应用,限制性很大,分布式事务,更多是应用之间的问题,对此,atomikos提出了一个TCC的解决方案,应用与应用之间的分布式事务

    TCC就是Atomikos发出的一篇论文(编程式的分布式事务,需要我们自己写代码来实现)

    Java应用提供这三个操作接口(通过http/rest方式提供):Try 尝试、Confirm 确认、Concel 取消

    每一个都是通过HTTP来实现的,并且中间并不是通过数据库进行回滚数据,而是根据自己的代码进行实现,只需要保证BASE原则就可以,保证最终一致性就可以进行,其实TCC就是一种两阶段提交思想的自己编码实现

    就好像是ACID原则那样,参考http://drupalchina.cn/node/1401这边文章

3、MQ(消息队列)

    消息队列实现分布式事务的思路: 

    (1)数据一定要投递到MQ(消息队列本身提供确认机制activemq\rabbitmq,rocketmq,kafka...)

    (2)消息消费的确认机制,消息一定要被正确消费(消息队列ack机制)

    (3)保障消费处理的幂等性,根据业务逻辑去实现(处理一条消息,就需要保留一条记录,单独一个记录表 )

4、LCN

    开源框架,可以直接到GitHub中学习,目前应用公司不算多

相关文章

  • 分布式事务

    分布式事务是分布式容错设计方式,与分布式事务相关的我们可以从理论到相关技术,最后到设计方法。 分布式事务理论 从理...

  • 分布式事务相关问题

    分布式事务没有标准答案,只有结合业务场景的解决方案 TCC,XA,JTA,LCN,2PC 1、分布式事务是什么 ...

  • rocketmq事务消息入门介绍

    引出分布式事务相关内容 这里主要是想说明下,是什么背景下面产生了此类问题。 首先我们来说说事务,说道事务,首先让我...

  • 分布式事务总结

    结合多篇文章和实践,总结一下分布式事务相关的内容。 分布式事务是什么 百度百科的说法 分布式事务是指事务的参与者、...

  • 分布式事务解决方案-什么是分布式事务

    在分布式系统开发中,分布式事务属于业界难题,接下来陆续发布分布式事务解决方案相关的文章。 1.什么是事务 ​ 什么...

  • 分布式事务

    最近整理了下分布式事务相关知识及典型应用场景解决方案,主要内容如下: 1、分布式事务1)事务简介2)本地事务讲解3...

  • 使用SpringCloud搭建一个简单的项目

    因为要研究分布式事务 所以搭建一个简单的SpringCloud的项目 来进行事务相关的测试 中间出现了一些小问题 ...

  • 锁库存,分布式事务

    分布式事务:网络问题+分布式机器 mysql默认级别可重复度 本地事务失效问题 同一个对象内事务方法互调默认失效,...

  • 单机事务

    分布式相关的内容非常多, 本次分享主要是从分布式事务切入的, 所以主要讲的是分布式的环境下, 怎么做事务; 要讲分...

  • 032 某金服面试题

    分布式事务 分布式锁方案和区别 分布式缓存 分布式选举问题 分库分表的方案 MVCC 方案 MySQL 的事务的实...

网友评论

      本文标题:分布式事务相关问题

      本文链接:https://www.haomeiwen.com/subject/azolsftx.html