IM(即时通讯系统)作为一项基本能力,在各个公司的产品中都处于一个举足轻重的地位。作为IM能力的最重要提供方,长连接网关的设计至关重要。本文以比心聊天室解决方案开源项目SONA为例,解析netty长连接网关在协议层的设计,帮助读者快速了解长连接协议。本文最后附上开源项目地址。
一、长连接网关是什么?
sona-gateway 是比心自研的长连接网关,基于 Netty 开发,同时支持 TCP 和 Websocket,承载了比心几乎所有的业务,提供超高的性能,易扩展,普通的4核8G机器,就能稳定支撑几十万连接。
如果不需要整套 SONA 服务,也可以简单修改其中的房间相关业务代码后,单独剥离出来作为网关使用,即使从来没用过 Netty,对Netty一点都不了解,也能非常方便的扩展自己的业务。使用者不用关心如何实现一个私有协议的细节,直接使用我们内置的通信协议。可以非常简单的启动客户端与服务端,同时注册自定义的请求处理器,即可完成双端通信。同时,像连接管理、心跳等基础功能特性都默认可以使用。
网关中最核心的基础通信、消息协议、请求处理器等设计都是通用的:
1. 基础通信功能
- 基于 Netty 高效的网络 IO 与线程模型运用
- 连接管理
- 基础通信模型
- 超时控制
- 心跳与空闲事件处理
2. 协议框架
- 命令与命令处理器
- 编解码处理器
- 心跳触发器
3. 私有协议定制实现
- 二进制通信协议的设计
- 灵活的消息压缩、合并