Netty源码阅读

私有协议栈的开发

2017-04-27  本文已影响145人  BlackManba_24

什么是私有协议

没有标准定义,只要能够用于跨进程、跨主机数据交换的非标准协议,都可以称为私有协议。

(HTTP+XML、RESTful+JSON是标准的公有协议)

Netty协议栈的功能

1)基于Netty的NIO通信框架,提供高性能的异步通信能力

2)提供消息的编解码框架,可以实现POJO的序列化和反序列化

3)提供基于IP地址的白名单接入认证机制

4)链路的有效性校验机制

5)链路的断连重连机制

私有协议栈的开发

私有协议开发主要考虑的几点如下:

1)兼容性

2)灵活性

3)可扩展性

4)安全性

协议一般包含两部分:

消息头:消息头一般包含一些属性信息,一般包含消息长度、CRC校验码等

消息体:对于请求消息,内容为请求的数据;对于响应消息,内容为服务端响应的值

一个完整的协议一定要配合一对Encoder/Decoder工具来完成自定义协议的编码和解码。

示例:一个内部消息系统的私有协议

发送消息时需要按照以上格式将数据序列化成byte数组写入网络,而当收到byte数据时需要反序列化数据成具体的消息对象。

按照以上协议,使用LengthFieldBasedFrameDecoder只需要配置:

lengthFieldOffset = 0

lengthFieldLength = 4

lengthAdjustment = 0

initialBytesToStrip = 0

即可以得到一个包含完整消息数据的ByteBuf对象,之后可以根据自己的协议将ByteBuf的数据构建成对象。

上一篇下一篇

猜你喜欢

热点阅读