一个几年前的设备接入平台项目,本人参与不多,因为要准备一个类似项目,抽了两个小时重新走读了下核心代码,记录一些知识点备忘:
1、通信基础采用MINA框架:
MINA服务端主要流程:
a. IoAccept 监听来自网络的请求;
b. 当新的连接建立时,创建session,该session对应某个IP加端口;
c. 数据包收到时,会经过一系列的IoFilter,主要是数据包的解析,自定义的协议解析也可以写自定义的过滤器;
d. 经过过滤器解析后的数据包被IoHandler处理,自己的业务处理函数继承至IoHandler;
e. 发送消息时,从IoAccept中获取session,调用其write方法
MINA客户端主要流程:
a. 创建某个IOConnection对象,绑定IP和端口;
b. 连接成功后会新建一个session;
c. 数据包收到时,同样会经过一系列的IoFilter;
d. 最后由事先绑定的IoHander处理;
备注:MINA提供强大的过滤器组件,其中包括支持心跳机制;
2、接入服务器的双机热备,采用heartbeat组件,对外暴露虚拟IP;
3、服务器采用sigar组件,对本机的CPU利用率的数据进行采集,并统一上报给监控中心节点;
4、定时任务,包括链路断开后的重传,利用quartz组件实现;
5、消息的解析是定义在encode和decode中,其中decode的doDecode方法从缓冲区解析消息,和通常的做法一样,要注意的是一点,如果传输数据是16进制,那么要处理特殊字符(比如帧头、帧尾)的转义。