笔者福利
以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。
有了这个,面试踩雷?不存在的!
回馈粉丝,诚意满满!!!
分布式事务场景
=======
在微服务框架中,仓储/订单/账户服务部署在不同的服务器上,使用不同的数据库实例,与单机模式完全不同。单机模式中的事务通常要求事务涉及的数据源为同一个,并且事务涉及的数据库操作在同一个数据库链接中,分布式情况下显然不满足条件。
所以在分布式场景如何保证数据的一致性呢?这就是Seata需要解决的问题了。
Seata解决方案
=========
Seata是用于解决分布式事务的开源框架,其内部有关于分布式事务的定义如下:分布式事务是由多个分支事务组成的全局事务,其中每个分支事务都是本地事务的形式。
Seata框架包含三部分内容:
-
事务协调器(Transaction Coordinator,TC):维护全局事务和分支事务的状态,进行全局事务提交或全局事务回滚;
-
事务管理器(Transaction Manager,TM):定义全局事务,开启全局事务、提交全局事务或回滚全局事务;
-
资源管理器(Resource Manager,RM):管理分支事务中的资源,向事务管理器注册分支事务和并报告分支事务的状态,负责分支事务提交或回滚;
一个典型的seata分布式事务的流程如下:
-
TM向TC发出开启全局事务请求,TC生成全局事务的唯一标识XID,设此处的全局事务为T1;
-
在全局事务T1的各个流程中,XID会作为事务的标识在微服务之间流转;
-
RM向TC注册本地事务,注册的本地事务的会作为全局事务T1的分支事务;
-
TM可以请求TC控制全局事务T1提交或全局事务T1回滚;
-
TC可以请求全局事务T1下的所有分支事务提交或回滚;
Seata历史
=======
阿里巴巴:
-
TXC:淘宝交易系统的分布式事务框架,阿里巴巴中间件团队自2014年开始启动该项目,用于解决应用架构从单一服务向微服务转变所带来的分布式事务问题;
-
GTS:全球交易服务。TXC作为阿里云中间件产品,新名称GTS于2016年发布;
-
Fescar:2019年开始了基于TXC/GTS的开源项目Fescar,用于开源项目社区发展;
蚂蚁金服:
-
XTS:扩展事务服务。蚂蚁金服中间件团队自2007年开始开发分布式事务中间件,该中间件在蚂蚁金服中得到广泛应用,解决了跨数据库和服务的数据一致性问题。
-
DTX:分布式事务扩展。自2013年以来,XTS已在蚂蚁金融云上发布,名称为DTX;
Seata社区:
- Seata:简单的可扩展分布式事务解决方案,蚂蚁金服将Fedscar改名为Seata并开源,使其成为一个中立、开放的分布式事务社区。
Seata Maven依赖
=============
<seata.version>1.4.2</seata.version>
io.seata
seata-all
${seata.version}
Seata案例
=======
以上文中的用户下单购买商品的系统为例,展示Seata的使用方式:
-
仓储微服务:对给定的商品扣除仓储数量;
-
订单微服务:根据采购需求创建订单;
-
帐户微服务:从用户帐户中扣除余额;
服务接口的定义
=======
对于三个微服务,我们用三个接口来抽象其内部的逻辑:
写在最后
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
714882638014)]