【原创】开源OpenIM:轻量、高效、实时、可靠、低成本的消息模型
1、内容概述
一套完整IM系统中,除开基本的业务设计,消息模型的设计是其中最为关键的一环,它关系到整个IM系统的可靠性、高效性、稳定性,因此需要设计一套合理的消息传递收发机制以承载IM的各种需求,OpenIM结合具体的业务场景,提炼出IM后端的重要接口,并经过反复推敲,验证,设计出了自己的一套通信协议OMTP,协议中每个字段尽量的减少冗余,使其精简高效、最大限度的满足现有的业务需求并能够支持业务的水平拓展,同时为了达到消息的实时可靠与高效,消息模型也经过了精心设计。
(1)消息的实时性:消息的实时性是考验IM系统的重要标准,传统的IM通过http长短轮询的方式来模拟实时消息,存在“实时性盲区”,所以OpenIM也同样使用了HTML5的Websocket技术,Websocket是真正的全双工双向通信技术,能够实现服务器主动推送消息到客户端,实现真正的实时双向通信(服务器通知客户端有信息到达,客户端随时向服务器发送新消息),一次连接,随时都可以使用,不用像轮询技术中不断使用http请求,这样降低了服务器的负载,并减少一些高频无用的请求。
(2)消息的可靠性:消息的可靠性,是指消息的不丢失,不重复,由于网络环境的各种复杂情况,包括数据在到达客户端后,数据需要进行各种解析与处理,包括写入db,存入cache,UI的各种展现等等,而且还包括客户端的各种异常情况ÿ