无论是 PC 端还是移动端,接入网络完成通讯都需求树立双端的衔接。关注【融云全球互联网通讯云】了解更多

客户端和服务端树立衔接后不断开,然后进行通讯(也便是发送报文)的方法便是长衔接。与之相反,短衔接是创立一个衔接,在程序履行结束后,就会主动断掉。

二者比较,短衔接会频繁地创立和开释衔接,比较耗费资源。长衔接就能够防止每次恳求都创立衔接的开支,节省了时刻和耗费,提高了性能。

本文梳理自 8 月 2 日的“IM 进阶实战高手课”内容,经过分析对比常见长衔接协议、长衔接协议的演进过程来拆解长衔接协议规划要点,及融云的最佳实践。

长衔接常见问题

安全性

首要是传输上的安全性,数据传输时需求经过通道层及使用层的加密,如 IPSec、TLS、PB 等。其次,还需确保数据的实效性,具有防重放的特性。相似 5G 终端的认证是经过 SQN 带上时刻戳进行矢量校验,确保数据的完整性和加密性。

最后会进行异常客户端的检测,经过动态认证密钥,确保客户端是可信的。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
(长衔接安全性)

可靠性

包括衔接坚持、快速重连和音讯可达。首要经过心跳保活、弱网处理、就近接入等进行衔接坚持,规划快速认证重连策略完成低开支,并由 QoS 质量保障确保音讯可达。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
(长衔接可靠性)

低开支

低开支最根本的便是确保协议包体的巨细适宜,削减流量耗费,以及在解析协议包的时候,削减电量耗费。而且,在使用及数据存储上削减资源的耗费,以获得更高的吞吐量和接入数。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
(长衔接低开支)

长衔接协议规划要点

长衔接协议的规划要点,其实便是首要围绕如何做到低开支、安全性、可靠性以及协议的扩展性、齐备性展开的。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
(长衔接协议规划要点)

业界常见的长衔接协议如下:

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
我们具体看看其间常用的几种,SIP 是一个文本协议,支持 TCP、UDP、IPSec,比较契合国际规范,首要的使用范畴是在电信范畴如手机短信、手机音视频通话、5G 音讯(RCS)、SIP 话机、话务台,它的协议规划规范和事务规范都是我们能够去参阅的。

XMPP 是一个文本协议,经过 XML 传输,具有必定的通讯协议规范,易读性比较高,首要使用在即时通讯系统、游戏渠道、协作空间以及语音和视频会议系统。这个协议的冗余系数特别高,会带来比较大的流量耗费。

MQTT 是一个敞开音讯协议,简略易完成。选用发布订阅模式,一对多音讯发布。根据 TCP/IP 网络衔接,供给有序、无损的双向衔接。相较于上面两种协议,它的协议包体特别小。1 字节固定报头,2 字节心跳报文,最小化传输开支和协议交换,有效削减网络流量。

MQTT 协议广泛使用于物联网、移动互联网、智能硬件、车联网、电力能源等范畴。

接下来我们看一下这几种协议一般在哪些场景或许层次上使用。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
首要手机连网后如果要打电话,会经过 GTP 发送通话或许音视频相关的数据信息。如果需求调用像运营商等技能才能,会经过相似于 XMPP 或许 SIP 去调一些开发才能。在建立云渠道的时候,需求有长衔接通道,一般会有导航或许装备服务去下发地址,然后经过这个地址连上长衔接服务。事务的内部通讯,一般经过 RPC 进行,比方单聊、群聊、聊天室和超级群。

如果要将这些才能敞开出来,就需求有一个敞开网关,针对长衔接的一些技能做才能敞开。

整体而言,常见协议的扩展性和齐备性是相反的。

SIP 首要使用在电信范畴,它的齐备性或许规范事务的规划规范比较高,与此相应,它的扩展性会相对不足。

XMPP 尽管本身协议的开支比较大,可是它的事务接口规范以及逻辑模型是能够参阅的。

MQTT 协议的开支比较少,可是它整个上层事务的架起并不是特别丰厚。

从演进历史的视点看,网络演进基本上是 10 年一个迭代,每个阶段都会催生不同的使用。

为了处理不同阶段的相应需求问题,传输层协议的演进也有其阶段性。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
UDP 和 GDP 的发生基本上是在相同的时刻,别离确保传输的速率和可靠性。SCTP 是确保可靠的一起,又确保吞吐量。可是因为它的根底网络相对来说比较稳定,针对时延的考虑不是特别多,后来又有了低时延多链路数据传输的 QUIC 协议。

比起传输层的协议,使用层协议的改变就不是特别大了。它们大部分是在上世纪 90 时代末发生,别离使用于不同的范畴,像 HTTP 首要是 WEB,MQTT 首要是物联网,SIP 首要是电信范畴在用,XMPP 首要是即时通讯。

融云长衔接特性

融云的长衔接协议首要考虑了高效性易用性两大方面。其间,高效性包括对安全性、可靠性、齐备性、扩展性以及低耗费的归纳考量规划。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路

安全性首要经过通道加密确保通道传输的安全,可是如果架起了中间层和中间人,就需求经过音讯体加密确保数据传输的可靠性;在确保了传输层的安全性之后,还需求经过动态密钥和认证码去确保客户端认证的安全性;最后便是确保数据的防重放

可靠性便是需求经过客户端和服务端的双向心跳保活确保电路的可靠性;经过全球网络电路的架起,比方节点之间架起专线,让客户端经过一个比较可靠的就近地址接入,确保数据传输的高效和低时延;然后经过包括 QoS 质量保障、状态送达和弱网优化等来做使用层的音讯送达保障。齐备性方面,融云供给内容、通知等多种音讯类型,单群聊、聊天室、超级群等多种事务类型服务。另外,为了确保排查问题的高效,融云还在协议进步行了全链路音讯的串联,完成全链路音讯的追寻。

融云在长衔接协议的规划上,参阅了业界常见协议的优势特色,在确保数据传输低开支的一起,又经过自定义音讯类型和多层级音讯通道、自定义事务流转去确保扩展性

在确保高效性的一起,融云长衔接规划还要经过丰厚、多端、简便、扩展、一致等特色完成易用性。

兼具高效与易用,融云 IM 即时通讯长连接协议设计思路
事务丰厚,单群聊、聊天室、超级群等经典和新式的事务类型都能满足,一起具有音讯的多样性,包括文本、图片、音视频、表情包等音讯类型及其他事务场景的自定义音讯。

多端覆盖,原生的 Android、iOS,跨渠道的 RN、Flutter 等全渠道覆盖,确保各端协议的一致性,多端覆盖且易于迭代。

多方一致,确保多端的一致性,长时间协议的技能才能与融云通讯服务的敞开才能是一致的。

开箱即用,通道简便、协议简练。

高扩展性,在协议层确保事务架起可扩展。