分布式事务
分布式事务详解
盛难晨
长路漫漫,bug作伴
展开
-
总结TCC分布式事务的优缺点
优点:1.解决了跨服务的业务操作原子性问题,例如组合支付,订单减库存等场景非常实用2.TCC的本质原理是把数据库的二阶段提交上升到微服务来实现,从而避免了数据库2阶段中锁冲突的长事务低性能风险。3.TCC异步高性能,它采用了try先检查,然后异步实现confirm,真正提交的是在confirm方法中。缺点:1.对微服务的侵入性强,微服务的每个事务都必须实现try,confirm,canc...原创 2020-02-25 19:57:13 · 4707 阅读 · 0 评论 -
分布式事务TCC和XA有什么区别及TCC模型和DTP模型的区别
分布式事务TCC与XA有什么区别?TCC与XA两阶段提交有什么区别?1.XA是资源(数据库)的分布式事务,强一致性,在整个过程中,数据一直锁住状态;即从prepare到commit、rollback的整个过程中,TM一直把持着数据库的锁,如果有其他人要修改数据库的该条数据,就必须等待锁的释放。(简单一句话就是长事务风险)另外在开发过程中,开发人员无感知XA的代码入侵(从Atomikos的例...原创 2020-02-25 19:40:25 · 2128 阅读 · 0 评论 -
图解分析:TCC分布式事务日志原理和网络通信的原理
TCC分布式事务日志原理在项目中:这里面的枚举我们可以总结:通过事务管理器,进行日志分析。然后加上这行代码。启动项目测试:订单服务第一步:try事务管理器的工作status=(0,“开始执行try”)role=START(1,“发起者”)第二步:confirm的事务管理器工作:status= CONFIRMING(2,“confirm阶段”)第三步:分布式事...原创 2020-02-25 19:07:39 · 428 阅读 · 0 评论 -
图解分析:TCC分布式事务中confirm的底层原理及如何解决try和confirm的异常
分布式事物confirm的底层原理在order的try阶段:首先会冻结库存和建余额账户。并且注册一个事务组,他们是通过id一致绑定在一起的。try阶段走完过后,就会执行confirm的方法。总结:try阶段注册事物组,然后try和confirm阶段都是由事务管理器来管理的,try阶段执行完过后就会进入confirm阶段。如何解决分布式事务的try异常我们在order的try阶...原创 2020-02-25 18:31:59 · 2048 阅读 · 4 评论 -
tcc-transaction框架的订单支付的分布式事务例子
第一步:到GitHub拉取源码:https://github.com/changmingxie/tcc-transaction在idea上面拉取,步骤我上一篇文章拉取hmily的例子一样,这里就不仔细讲解了。从GitHub拉取hmily例子第二步:初始化数据库:拉取过后在上面的文件中有初始化数据的sql。第三步:修改数据库的连接:这两个文件下的服务都要修改数据库的连接,都在配置文...原创 2020-02-20 19:26:45 · 503 阅读 · 0 评论 -
hmily框架的订单支付的分布式事务例子
业务情景hmily框架订单支付的展示1.第一步:到GitHub拉取最新的源码:https://github.com/Dromara/hmily这样你就从idea拉取了hmily的项目。选择版本,你可以选择2.0.2也可以使2.04,我使用的是2.04版本。2.第二步:修补源码的缺陷在hmily的根目录下的pom.xml中加入hmily-demo3.第三步:初始化数据库。...原创 2020-02-20 19:02:27 · 806 阅读 · 0 评论 -
TCC事务模型图解
什么是TCC分布式事务?定义:TCC是try confirm cancel的单词首字母缩写,是一个类似2pc的柔性分布式解决方案。TCC的3大核心方法图解TCC分布式事务实际应用场景,淘宝购物下订单库存服务会有3个接口操作,分别是try,confirm,cancel。try:尝试业务执行,作用如下:1.完成所有业务的检查(一致性检查)下订单的时候,检查库存是否充足。2.预留必...原创 2020-02-20 15:00:14 · 1065 阅读 · 0 评论 -
图解刚性事务(全局事务)的缺陷
两阶段事务-协调者宕机分析1.如果在第一阶段,协调者宕机,那么所有参与者将无法再收到协调者第二阶段的commit或rollback命令,故会一直阻塞下去,本地事务无法结束。解决方案:所有参与者统一rollback(因为还未进入第二阶段,所有参与者都不会接受到提交或回滚的命令,当前事务是无法继续提交的,故只能回滚)2.如果在第二阶段,协调者宕机,那么可能是部分参与者没有接收到commit,r...原创 2020-02-15 18:17:20 · 1613 阅读 · 0 评论 -
详细图解3阶段事务提交及单点故障和网络脑裂问题
为什么会有3阶段提交?因为2阶段提交存在单点故障、同步阻塞、网络脑裂等缺陷,所以在2阶段的基础上进行了改良,并提出了3阶段的概念。2阶段和3阶段,事务提交有什么区别?3阶段在2阶段的基础上做了2个改进点:1.增加了超时机制,同时为协调者和参与者都引入了超时机制。2.在2阶段的第2和第2中间插入了一个提交准备(preCommit)阶段。插入的这个阶段能保证最后提交阶段之前,各个参与者节点...原创 2020-02-15 18:15:14 · 2508 阅读 · 0 评论 -
基于XA规范分布式事务实战,图解2阶段事务协议
分布式事务实战基于XA规范首先我们在docker中安装2台mysqldocker run -p 3308:3306 --name mysql3308 \ -e MYSQL_ROOT_PASSWORD=xxx \ -v /data/volume/mysql/data3308:/var/lib.mysql \ -d mysql:5.7安装两台mysql端口号分别是3307和3308。你可...原创 2020-02-14 14:48:18 · 1842 阅读 · 0 评论 -
详细解读分布式事务DTP模型
谁提出了分布式事务DTP模型?分布式事务模型DTP和DTP XA规范的制定者是X/Open,即现在的open group,是一个全球联盟的独立组织。open group 全球白金会员有8家,我们中国华为公司在列。open group这个全球组织的主要作用是制定各种行业技术标准。open group为分布式事务处理指定了分布式事务模型DTP和DTP XA规范什么是分布式事务DTP模型?...原创 2020-02-14 13:29:45 · 3327 阅读 · 0 评论 -
详解分布式BASE定理
什么是分布式BASE定理?BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是eBay架构师提出的。BASE定理来源:是CAP中一致性和可用性的权衡结果,它来自大规模互联网分布式系统的总结,是基于CAP定理逐步演化而来的。BASE定理的核心思想:即使无法做到强一致...原创 2020-02-12 19:50:27 · 5337 阅读 · 0 评论 -
详解分布式CAP定理
什么是CAP定理?Consistency一致性: 指数据的一致性,特指分布式系统中数据的一致性Availability:可用性:指服务的高可用,特指分布式系统中服务的高可用,某个服务瘫痪不影响整个分布式系统的运行。Partition tolerance:分区容错性: 指网络故障,特指分布式系统中,服务之间出现网络故障,整个分布式系统仍然保持可用性和一致性。一句话概括CAP:在分布式网络中...原创 2020-02-12 18:47:24 · 2324 阅读 · 0 评论 -
深入分析事物以及什么是分布式事物?
什么是事物?事物是关系型数据库中,由一组sql组成的执行单元,该单元要么整体成功,要么整体失败。事物的ACID特性事物ACID特性,原子性,一致性,隔离性,持久性,这4个属性统称为ACID特性。原子性:指事物包含的所有操作sql,要么整体成功,要么整体失败。一致性:事物前的状态结果和事物后的状态的结果都是一致的。参考银行转账。持久性:指一个事物一旦被提交了,那么数据就永久存储在...原创 2020-02-11 19:33:46 · 2627 阅读 · 0 评论