Seata源码分析之AT模式Register

在这里插入图片描述
注册分为TM注册到TC,RM注册到TC。这里我们主要看Account的RM是怎么注册到TC的,其他的情况类似。
使用的客户端为seata-samples/springboot-mybatis,版本1.2

启动SpringbootMybatisAccountApplication
在Server端查看日志,可以看出注册成功了。
在这里插入图片描述

客户端

1.RmRpcClient#registerResource
在这里插入图片描述
判断channels缓存是否为空,如果为空说明之前没有注册过,就调用reconnect

2.NettyClientChannelManager#reconnect
在这里插入图片描述
从application.yml配置文件读取服务端的地址信息,赋值给availList。

3.NettyClientChannelManager#acquireChannel
在这里插入图片描述
加锁操作

4.NettyClientChannelManager#doConnect
在这里插入图片描述
从nettyClientKeyPool获取Channel对象,然后放进channels缓存中

5.GenericKeyedObjectPool#borrowObject
在这里插入图片描述
6.NettyPoolableFactory#makeObject
在这里插入图片描述
异步发送注册消息到服务端,成功就调用onRegisterMsgSuccess,失败就调用onRegisterMsgFail

7.RmRpcClient#onRegisterMsgSuccess
在这里插入图片描述
注册成功

8.NettyClientChannelManager#registerChannel
在这里插入图片描述
本地缓存Channel对象

服务端

9.AbstractRpcRemoting#channelRead
在这里插入图片描述
接收客户端的注册消息

10.ServerHandler#dispatch
在这里插入图片描述
如果消息是注册消息,就调用onRegRmMessage

11.DefaultServerMessageListenerImpl#onRegRmMessage
在这里插入图片描述
12.ChannelManager#registerRMChannel
在这里插入图片描述
13.RpcContext#holdInResourceManagerChannels
在这里插入图片描述
缓存客户端信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值