基于TCP的协议封装及Netty搭建高可用网络通信服务

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值