4.x文档:Netty.docs: User guide for 4.x
读Netty权威指南有感,netty需要关注点如下:
1·tcp粘包和拆包问题。netty使用4种方式解决。如:定义了回车换行解码器,特殊分隔符解码器,固定长度缓冲区解码器等。
2. 对象序列化问题。jdk原生序列化不支持多语言,且性能垃圾,一般都不用。可以使用google的Protobuf,facebook的thrift中的序列化类库,MessagePack等。
3. 如果我们需要自定义编解码器,需要考虑到tcp粘包和拆包的问题。在定义的编码器前面需要加上能够处理半包的解码器。如果是netty提供的编解码器,有可能会自带半包处理。
4. 心跳机制
序列化 编解码 tcp粘包是三个东西,都需要处理。
序列化是将对象转成二进制,不同的工具有不同的规则,如google protobuf, msgpack,在客户端和服务端都需要使用一套序列化机制,各自序列化后的二进制,只有各自才能转回对象。
tcp粘包需要客户端跟服务端约定,客户端和服务端代码中都需要一致