温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是seata协议

发布时间:2021-07-20 18:20:46 来源:亿速云 阅读:233 作者:chen 栏目:大数据

这篇文章主要讲解了“什么是seata协议”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是seata协议”吧!

代码入口

io.seata.core.rpc.netty.NettyClientBootstrap#start

bootstrap.handler(
            new ChannelInitializer<SocketChannel>() {
                @Override
                public void initChannel(SocketChannel ch) {
                    ChannelPipeline pipeline = ch.pipeline();
                    pipeline.addLast(
                        new IdleStateHandler(nettyClientConfig.getChannelMaxReadIdleSeconds(),
                            nettyClientConfig.getChannelMaxWriteIdleSeconds(),
                            nettyClientConfig.getChannelMaxAllIdleSeconds()))
                        .addLast(new ProtocolV1Decoder())
                        .addLast(new ProtocolV1Encoder());
                    if (channelHandlers != null) {
                        addChannelPipelineLast(ch, channelHandlers);
                    }
                }
            });

io.seata.core.rpc.netty.v1.ProtocolV1Encoder#encode

io.seata.core.protocol.RpcMessage

协议规则

2个字节的模数([-38,-38])| 1个字节的版本号 | 6个字节的长度 | 1个字节的messageType | 一个字节的codec值| 一个字节的compressor | 4个字节的messagId值 | header数据值(2个字节的key长度 | value数据值) | 业务数据值

codec: 序列化类型:如 seata,kryo;protobuf;fst

compressor: 压缩类型:如 NONE ,GZIP,BZIP2,LZ4

6个字节的长度:

4个字节(全部数据的长度): 默认长度16+headLength+bodyLength

2个字节的(headLength),默认长度16

业务数据序列化

io.seata.serializer.seata.SeataSerializer#serialize

2个字节(typecode的值)| body

typecode: 消息类型序编码器 如(RegisterTMRequestCodec,BranchRollbackRequestCodec)

body:

2个字节(xid的长度)| xid的数据| 8个字节(branchId值)| 一个byte(分支事务类型ordinal值)|2个字节(ResourceId的长度)| ResourceId的值|4个字节(applicationData的长度)| applicationData的值|

事务类型: AT,TCC,XA,SAGA

感谢各位的阅读,以上就是“什么是seata协议”的内容了,经过本文的学习后,相信大家对什么是seata协议这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI