一个大型组织如果需要从头开发一套自主可控的即时通讯软件,从技术角度第一个要考虑的核心问题就是:如何确定客户端和服务器之间的通讯协议和通讯机制?
大型组织架构就意味着员工人数多,网络情况复杂,以10万帐号的组织规模为例,由于员工办公环境的多样性,一定存在内部高速网络、手机移动网络、Wifi网络等强弱网综合在一起的情况。
如果仅仅考虑内部高速网络的使用场景,XMPP是一个值得考虑的选择,它有:标准开放、分布式设计、安全性好、可扩展性高等优点,几乎照顾到了客户端和服务器之间网络通讯的方方面面。
但是XMPP在通讯网络多种多样、较为复杂的情况下,存在:XML格式的协议包过于臃肿、浪费网络流量、对移动网络不够友好、服务器带宽资源占用过高等缺点。
所以综合考虑大型组织的使用场景和使用人数需求,我们推荐采用Google的Protocol Buffers(以下简称protobuf)技术进行数据包的编码和解码。
理由如下:
一个典型的网络通讯协议数据包如下所示:
对于协议包的加解密来说,一般也可以有两个选择,一个是采用自定义算法对每个数据包做加解密处理,另外一个是采用TLS标准,基于证书来控制加解密的算法和密钥机制。
绝大多数即时通讯软件会选择TLS标准方案,因为自定义算法固化了加解密算法和密钥交换机制,调整和修改也较为困难,在考虑不周全的时候,会存在安全隐患。
而开放标准的TLS协议可以通过更换证书来自主选择加解密方式,自控性更高,可以灵活满足不同组织对不同安全级别的管理需求。
传统的IM一般会选择TCP长连接的方式,所有客户端和服务器之间的通信都通过长连接进行。
但是TCP长连接会存在一些短板,比如:
从简单可靠的角度考虑,我们建议采用TCP+HTTP的传输方式:
这样的好处在于:
通讯协议与机制是一个即时通讯系统的基础,对于一个大型组织而言,它影响着日后系统的开发效率、健壮性、可维护性、可拓展性。
也许您已经猜出来了,这就是我们有度即时通采用的通讯协议和机制,如果您想更加深入地与我们探讨技术架构或全面了解有度即时通讯系统解决方案,可随时与我们联系哦。