分布式事物SAGA】的更多相关文章

目录 概述SAGA SAGA的执行方式 存在的问题 重试机制 SAGA VS TCC 实现SAGA的框架 概述SAGA SAGA是1987 Hector & Kenneth 发表的论文,主要是解决长事务执行的问题.有的系统比较旧同时也需要长事物,不能改造,那么比较适用这种场景处理,还有金融行业比较适合用这种事务,主要也是流程会比较长. SAGA的执行方式 SAGA是两层执行的,事物按流程T1,T2,,,TN.那么与之对应的就是C1,C2,,,CN.也就是由N个分布式事务组织,同时也有N个回滚事务…
什么是分布式事物 分布式系统中保证不同节点之间的数据一致性的事物,叫做分布式事物. 为什么要用分布式事物 微服务,SOA等服务架构模式,一个是service产生多个节点,另一个是resource产生多个节点. service多个节点 resource多个节点 系统故障.网络错误等情况下,都会导致数据存储不一致的情况,这种情况就需要分布式事物来处理. 如何用分布式事物 分布式事物解决方案 XA二阶段提交 1.性能问题 XA协议遵循强一致性.在事务执行过程中,各个节点占用着数据库资源,只有当所有节点…
1.web服务器开启分布式事物配置后,数据库服务器的host文件要设置  “IP  web服务器主机名” 的映射,否则会 出现 “与基础事务管理器的通信失败” #跨网段使用TransactionScope出错:“与基础事务管理器的通信失败” 需要配置机器名…
先大概介绍一下主从数据库是什么?其实就是两个或N个数据库,一个或几个主负责写(当然也可以读),另一个或几个从只负责读.从数据库要记录主数据库的具体url以及BigLOG(二进制日志文件)的参数.原理就是在定时的从主数据库的BigLOG文件中获取相应的日志记录,并转换成相应的sql语句进行同步. SpringBoot整合Mybatis怎么自动化的区分主从数据库进行读写,并且保证其线程安全性;创建一个DataBaseContextHolder类,在类里定义一个成员变量ThreadLocal(一个可以…
有时一个系统的数据 放在不同的库之中.如果用普通的事物 一个分支库提交成功了,另外一个分支库提交失败了, 这候 两个库没有同步的成功或者失败.会导致系统数据的不完整. 对于处理这种情况 MySQL有了处理分布式(XA)事物的语法 XA START xid 用于启动一个带给定xid的XA事物. xid包含3个部分 gtrid,bqual,formatID gtrid 是一个分布式事物的标识符,一个分布式事物的每个XA事物的gtrid必须相同,这样可以明确知道每个XA事物属于哪个分布式事物. bqu…
上节课简单说了一下mq是怎么保证数据一致性的.下面直接上代码了. 所需环境:1.zookeepor注册中心   2.kafka的服务端和工具客户端(工具客户端也可以不要只是为了更方便的查看消息而已)  3.springcloud的消息生产者  4.springcloud的消息消费者. 1.zk的安装和启动.百度有很多,kafka是依赖于zk的,所以zk必须要有. 2.kafka的服务端安装和启动.安装选择2进制的,不要选源码安装[我就遇到过坑,切记],启动命令:进入kafka的安装目录后按住Sh…
今天只看看原理,下一节看项目怎么集成mq进行解决分布式事物. 1.什么情况下会使用到分布式事物? 举例说明:现有一个支付系统,因为项目使用的是微服务框架,有订单模块和支付模块两个模块.生产者进行订单的下单操作购买100元,这时候订单表数据应该是新增一条,然后支付模块的个人账户资金应该是加100元.同一个方法中既需要对订单数据库进行新增又需要调用支付模块对数据进行修改(不同项目不同数据库),这时候就会用到分布式事物,只是举个典型的例子. 那么问题来了,生产者进行订单的下单操作怎么保证订单和支付的数…
分布式框架下,如何保证事物一致性一直是一个热门话题.当然事物一致性解决方案有很多种(请参考:分布式事物一致性设计思路),我们今天主要介绍TCC方案解决的思路.以下是参与设计讨论的一种解决思路,大家有问题请留言. 1.基本概念 TI:Transaction Interceptor,事务拦截器,位于dapeng容器的filterChain链中. 由于TI的逻辑会比较复杂, 不太适合在IO线程中操作 TM:Transaction Manager, 事务管理器,作为一个独立的服务存在. 事务发起方: 服…
Springboot与ActiveMQ.Solr.Redis中分布式事物的初步探索 解决的场景:事物中的异步问题,当要求数据库与solr服务器的最终一致时. 程序条件: 利用消息队列,当数据库添加成功时,将更新solr的请求发进消息队列中. 考虑到拿消息的服务做了集群的问题,利用redis做幂等性:将消息的JMSMessageID作为redis的key. 如果取消息的服务最终失败,就产生了需要补偿的问题. 解决方案: 将消息的参数存入redis中的Hash列表(结构:补偿的队列名 补偿的JMSM…
英文名:Two Phase Commit(2PC) 算法目的:实现分布式事物 算法概述: 有两类节点: -----协调者 -----事务参与者 流程阶段: -----请求阶段 -----提交阶段 算法成立的前提条件: 1.存在一个协调者,其他节点为参与者,节点间使用网络通信 2.所有节点都采用预写式日志,且日志被写入后放在可靠性高的存储设备上,计时设备损坏,日志不丢失. 3.所有节点不会永久性损坏,即使损坏后仍可以恢复. 注:"预写式日志":预写式日志(Write-ahead logg…