分布式事务Seata 深入分析三 知识点收集

Seata 的核心是事务协调器(TC),它负责正确协调资源管理器(RM)和事务管理器(TM)。TC 必须具备正确协调、高可用性、高性能和高扩展性。本文深入分析了Seata的Transaction Coordinator,包括Discover、Config、Store、Lock模块,以及Coordinator Core的启动流程、全局事务开启、分支事务注册、全局提交和回滚的细节。Seata的配置支持多种服务注册/发现,如Redis、ZK、Nacos和Eureka。存储模块确保数据持久化,防止数据丢失。Seata的锁模块提供全局锁功能。
摘要由CSDN通过智能技术生成

Transcation Coordinator

为什么之前一直强调TC是核心呢?那因为TC这个角色就好像上帝一样,管控着云云众生的RM和TM。如果TC一旦不好使,那么RM和TM一旦出现小问题,那必定会乱的一塌糊涂。所以要想了解Seata,那么必须要了解他的TC。

那么一个优秀的事务协调者应该具备哪些能力呢?我觉得应该有以下几个:

  • 正确的协调:能正确的协调RM和TM接下来应该做什么,做错了应该怎么办,做对了应该怎么办。

  • 高可用: 事务协调器在分布式事务中很重要,如果不能保证高可用,那么他也没有存在的必要了。

  • 高性能:事务协调器的性能一定要高,如果事务协调器性能有瓶颈那么他所管理的RM和TM那么会经常遇到超时,从而引起回滚频繁。

  • 高扩展性:这个特点是属于代码层面的,如果是一个优秀的框架,那么需要给使用方很多自定义扩展,比如服务注册/发现,读取配置等等。

Seata-Server整体的模块图如上所示:

  • Coordinator Core: 在最下面的模块是事务协调器核心代码,主要用来处理事务协调的逻辑,如是否commit,rollback等协调活动。

  • Store:存储模块,用来将我们的数据持久化,防止重启或者宕机数据丢失。

  • Discover: 服务注册/发现模块,用于将Server地址暴露给我们Client。

  • Config: 用来存储和查找我们服务端的配置。

  • Lock: 锁模块,用于给Seata提供全局锁的功能。

  • Rpc:用于和其他端通信。

  • HA-Cluster:高可用集群,目前还没开源。为Seata提供可靠的高可用功能。

 

2.2 Discover

首先来讲讲比较基础的Discover模块,又称服务注册/发现模块。我们将Seata-Sever启动之后,需要将自己的地址暴露给其他使用者,那么就需要我们这个模块帮忙

这个模块有个核心接口RegistryService,如上图所示:

  • register:服务端使用,进行服务注册。

  • unregister:服务端使用,一般在JVM关闭钩子,ShutdownHook中调用。

  • subscribe:客户端使用,注册监听事件,用来监听地址的变化。

  • unsubscribe:客户端使用,取消注册监听事件。

  • lookup:客户端使用,根据key查找服务地址列表。

  • close:都可以使用,用于关闭Register资源。

如果需要添加自己定义的服务注册/发现,那么实现这个接口即可。截止目前在社区的不断开发推动下,已经有四种服务注册/发现,分别是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值