即时通讯技术的架构设计

一、WEB端实时通信技术对比

在WEB端的实时通信技术中,主要有以下几种方式:

 

1)轮询技术
轮询是最简单的一种实时通信技术,易于实现,非常适用于一些小型的应用。其基本原理是这样的,先在客户端设定一个时间间隔,然后在每个间隔里从服务器拉取一次数据,如此反复,进行实时通信。轮询的缺点是显而易见的,若时间间隔过大,则会影响实时性,若时间间隔过小,又会对服务器产生非常大的负担,并且绝大多数请求不会返回数据,造成了资源的浪费。

 

2)长连接
长连接比普通的轮询技术要高级一些,客户端每次发起连接请求时,服务器不会立即返回,而是等到有可用数据时才返回,或者等待连接超时,之后客户端再重新发起新的长连接请求。这种实时通信技术相对于轮询更加高级,实时性更好,也减少了大量的无效请求,但由于服务器要保持连接,会给服务器带来巨大的压力。

 

3)WebSocket
WebSokcet是HTML5中新添加一种协议,由HTTP协议升级而来。其天生就是一种实时通信的协议,实现了真正的双向通信,效率更高。
WebSocket相对于上面的技术而言,更加高效稳定,可以有效节约服务器资源和带宽。但由于其相对来说较新,在兼容性上不如轮询和长连接,只有现代浏览器才支持此协议。

 

二、APP端实时通信技术对比

在APP端的实时通信技术中,主要有以下几种方式:

 

1)XMPP
XMPP是一种基于标准通用标记语言的子集XML的协议,其协议成熟、强大、 扩展性强,一般使用Java的Openfire作为服务端。但其协议复杂、冗余、费流量、费电、部署成本高。

 

2)MQTT
MQTT是由IBM专门为不稳定的移动设备开发的协议,其协议简洁、小巧、可扩展性强、省流量、省电,非常适合移动设备。但其相对来说不够成熟,实现起来相对来说比较复杂。
详见:https://en.wikipedia.org/wiki/MQ_Telemetry_Transport

 

三、整体架构

综合来看,在WEB端我们选用Websocket+长连接的方式与连接服务器相连,在移动端和其他地方选用MQTT的形式和连接服务器相连。连接服务器负责所有管理所有连接,不处理具体的业务逻辑,只负责维持连接、收发消息等等基本功能。逻辑服务器负责处理具体逻辑,可以调用服务层的第三方服务。

猜你喜欢

转载自blog.csdn.net/sunnysu99/article/details/79783329