欢迎来到友道创新学院!
咨询电话:010-59519886
电路设计热门培训内容之基于TCP的协议封装及Netty搭建高可用网络通信服务


所周知,由于三次握手规则,TCP协议是简单又可靠的传输协议.但是却不能保证绝对安全.尤其是远程网络数据传输时,由于各种不可抗力因素,比如网络瘫痪,服务器宕机,台风,地震…都会造成网络通信中断甚至数据丢失.所以,搭建安全的高可用的网络通信服务就格外重要了.


基本架构设计 - 技术上选择优秀的开源NIO框架Netty,搭建两条通信链路,主链路主要负责向远程服务发送数据,从链路主要负责接收远程服务数据.每条链路都是双向通信的,根据心跳判断其中一条链路中断时,通信由另一条链路完成,并邮件通知(邮件发送其他篇有讲解)管理员.这样设计的优点在于可以减少每条链路在处理高并发数据时的压力,当其中一条链路出现故障时,可以通过另一条链路来保证服务能持续运行.


此通信服务属于通信中间件,所以每条链路中有一个服务端来接收数据,经过数据过滤和处理,用协议将数据重新封装,将封装后数据再通过一个客户端将数据发送到远程服务.


由于Netty框架已经足够成熟,搭建服务端/客户端是一件轻松的事.包括日志配置,数据库配置等也都比一般的Web服务简单许多.重点在于如何保证数据的可靠传输,从而达到服务高可用的目的.这里采用从新封装TCP传输协议,在消息体中按照固定顺序,封装需要的数据字段,有点类似于JSON,消息其余部分类似于TCP包括消息头,消息尾,校验字等,为保证数据如果被截获后被破解,增加加密字段,加密方式由服务两端共同确定.


还有一个常见问题就是TCP粘包.一般解决方式会通过建立复杂的协议栈来拆包.为简化服务复杂性,将新封装的协议每个部分定义为定长,包括消息体中每个字段都设为定长,不够则补零.待去掉敏感的业务代码并整理后,项目会托管在GitHup.


立即咨询有惊喜哦 !