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

在构建大型组织即时通讯软件时,通讯协议和机制是关键。XMPP虽然开放、分布式,但在复杂网络环境下可能存在不足。推荐使用Google的Protocol Buffers,因其协议简单、扩展性强且数据压缩效果好。通讯机制上,传统TCP长连接易受网络波动影响,建议采用TCP+HTTP方式,利用HTTP的灵活性降低网络切换影响,同时结合TCP保证数据安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

通讯协议怎么选?

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

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

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

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

理由如下:

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

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

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

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

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

通讯机制怎么选?

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

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

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

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

TCP+HTTP的传输方式

这样的好处在于:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值