Netty
选型
- RPC:系统即时访问,同步服务调用
- HTTP:外部接口API提供,非高并发场景,非大数据报文传输
- MQ:微服务之间的解耦,流量削峰
- Netty:底层基础通信,数据传输,数据同步
Netty
基础
- EventLoop,Reactor模型
- Pipeline事件传播
- Netty的ChannelHandler
- Netty的Buffer
拆包粘包
- TCP底层的粘包/拆包机制
- 应用程序write写入的字节大小大于套接字口发送缓冲区的大小
- 进行MSS大小的TCP分段,以太网帧的payload大于MTU进行IP分片等
- 解决方案:
- 消息定长
- 在包尾部增加特殊字符进行分割
- 将消息分为消息头和消息体,在消息头中包含表示消息总长度的字段,然后进行业务处理
编解码
- Netty编解码技术,主流序列化框架
- JBoss的Marshalling,MessagePack框架
- Google的Protobuf,以及基于Protobuf的Kyro
- 自定义协议栈