编解码

编解码

1 技术选型考量

1.1 是否夸语言

1.2 码流大小

1.3 性能

1.4 API使用

1.5 便利性

2 常见技术实现

2.1 Java序列化

2.2 Protobuf

使用.proto文件描述数据结构,通过代码生成工具生成POJO对象以及相关方法和属性。

2.3 Thrift

在多种语言之间通信,可以作为高性能的通信中间件使用,支持数据序列化和多个RPC服务。

2.4 Marshalling

3 Netty实现

3.1 Java序列化

3.1.1 ObjectEncoder
3.1.2 ObjectDecoder

3.2Protobuf

3.2.1 ProtobufVarint32FrameDecoder

处理粘包/拆包问题

3.2.2 ProtobufDecoder

解码

3.2.3 ProtobufVarint32LengthFieldPrepender

编码标识长度的 32 位数据

3.2.4 ProtobufEncoder

编码

3.3 Marshalling

3.3.1 MarshallingDecoder
3.3.2 MarshallingEncoder
wenxinzizhu wechat
扫一扫,添加我的微信,一起交流共同成长(备注为技术学习)