400-097-0006
免费试用

企业开发即时通讯软件,网络通讯协议和机制怎么选?

2020-06-10

一个大型组织如果需要从头开发一套自主可控的即时通讯软件,从技术角度第一个要考虑的核心问题就是:如何确定客户端和服务器之间的通讯协议和通讯机制?

通讯协议怎么选?

大型组织架构就意味着员工人数多,网络情况复杂,以10万帐号的组织规模为例,由于员工办公环境的多样性,一定存在内部高速网络、手机移动网络、Wifi网络等强弱网综合在一起的情况。

如果仅仅考虑内部高速网络的使用场景,XMPP是一个值得考虑的选择,它有:标准开放、分布式设计、安全性好、可扩展性高等优点,几乎照顾到了客户端和服务器之间网络通讯的方方面面。

但是XMPP在通讯网络多种多样、较为复杂的情况下,存在:XML格式的协议包过于臃肿、浪费网络流量、对移动网络不够友好、服务器带宽资源占用过高等缺点。

所以综合考虑大型组织的使用场景和使用人数需求,我们推荐采用Google的Protocol Buffers(以下简称protobuf)技术进行数据包的编码和解码。

理由如下:

  • 协议的制定和上手相对简单,可以先从即时通讯过程中最核心的3到5个协议开始着手,比如:登录、状态通知、消息通知等;
  • 扩展性好,protobuf的IDL语法支持协议包向前兼容,也为将来的扩充预留了空间;
  • protobuf的协议包是二进制格式,编解码速度快,数据压缩比也很高,可以提高移动网络传输的成功率,有效降低服务器带宽的占用。

一个典型的网络通讯协议数据包如下所示:

典型的网络通讯协议数据包

对于协议包的加解密来说,一般也可以有两个选择,一个是采用自定义算法对每个数据包做加解密处理,另外一个是采用TLS标准,基于证书来控制加解密的算法和密钥机制。

绝大多数即时通讯软件会选择TLS标准方案,因为自定义算法固化了加解密算法和密钥交换机制,调整和修改也较为困难,在考虑不周全的时候,会存在安全隐患。

而开放标准的TLS协议可以通过更换证书来自主选择加解密方式,自控性更高,可以灵活满足不同组织对不同安全级别的管理需求。

通讯机制怎么选?

传统的IM一般会选择TCP长连接的方式,所有客户端和服务器之间的通信都通过长连接进行。

但是TCP长连接会存在一些短板,比如:

  • 移动设备的网络连接不稳定,不同的网络之间切换会很频繁,单纯的TCP通道传数据会频繁中断,表现出来就是消息的发送总是在转圈等待,使用起来体验不佳;
  • TCP顺序传输的吞吐容量受限,要严格按照时序将请求传给服务器,对于大型组织而言,并发量大的情况下,某个请求如果服务器响应不及时,会导致后续请求挤压,表现出来就是服务不可用,进而影响到日常的工作效率;

从简单可靠的角度考虑,我们建议采用TCP+HTTP的传输方式:

  1. TCP作为加密(TLS1.2)传输通道,数据协议基于protobuf设计,轻业务模式。主要用于:登录、消息通知、状态变化等场景;
  1. HTTPS作为业务传输通道,接口为RESTful风格,参数采用JSON数据格式。

TCP+HTTP的传输方式

这样的好处在于:

  • 发消息采用了HTTP协议,网络的连通持续性要求不高,可以充分降低网络切换对数据传输带来的影响;
  • 将服务端成熟的HTTP服务体系引入到后端开发,达到服务开发过程简单高效的目的;
  • 客户端快速切换界面时,可取消之前界面产生的HTTP请求,减少服务器无效的资源消耗;
  • 充分引入HTTP服务开发领域内成熟的高可用解决方案,满足大型组织通讯平台的使用需求。

结语

通讯协议与机制是一个即时通讯系统的基础,对于一个大型组织而言,它影响着日后系统的开发效率、健壮性、可维护性、可拓展性。

也许您已经猜出来了,这就是我们有度即时通采用的通讯协议和机制,如果您想更加深入地与我们探讨技术架构或全面了解有度即时通讯系统解决方案,可随时与我们联系哦。

免费试用,探索有度更多产品功能

在线咨询
技术支持
免费试用
联系电话

电话咨询

400-097-0006