1.什么应用场景下选择RPC、HTTP、MQ与Netty?
RPC:系统间即时访问、同步服务调用
HTTP :外部接口API提供、非高并发场景、非大数据报文传输
MQ :微服务之间解耦,流量削峰
Netty:底层基础通信、数据传输、数据同步
2.Netty技术选型与核心浅析
https://www.cnblogs.com/crazymakercircle/p/9998643.html
Netty的基础核心点
- EventLoop、Reactor 模型
- Pipeline事件传播
- Netty的ChannelHandler
- Netty的Buffer
3.Netty TCP拆包粘包问题的处理
原因:
应用程序write写入的字节大小大于套接口发送缓冲区的大小,进行MSS大小的TCP分段、以太网帧的payload大于MTU进行IP分片等
三种处理:
- 消息定长,例如每个报文的大小固定为200个字节,如果不够,空位补空格;
- 在包尾部增加特殊字符进行分割,例如加回车等;
- 消息分为消息头和消息体,在消息头中包含表示消息总长度的字段,然后进行业务处理;
4.Netty的编解码技术
- Netty编解码技术,主流序列化框架
- JBoss的Marshalling、MessagePack框 架
- Google的Protobuf,以及基于Protobuf的Kyro
- 自定义协议栈