IM云服务商技术调研

IM(全称是『Instant Messaging』,中文名是即时通讯),在互联网时代沟通显得尤为重要,而IM是偏底层通讯协议的技术,自研的话开发成本较高。但是市场上有较多成熟的服务提供商,我们可以从中选择一家符合需求且成本低廉的产品。

概述

IM系统在互联网初期即存在,其基础技术架构在这十几年的发展中更新迭代多次,到现在已经演变为一个复杂的分布式系统,涉及移动端、网络通信、协议、安全、存储和搜索等技术的方方面面,最核心的部分就是消息系统。

典型的IM云架构(以网易云信为例):

网易云信架构

在应用服务器端会调用IM云服务的一些管理接口,管理token以实现登录和点对点的用户识别;
而主要的集成是在应用客户端,使用IM云提供的SDK实现聊天功能,通过和云服务器维持长连接来进行消息传递;
如果服务商的SDK提供了UI组件,也可以直接利用;
云服务商提供消息回执功能,可将消息内容实时同步给应用的服务端。

一个理想的IM云应该具备以下特点:

  • 满足当前业务功能
  • 持续服务有保障,短期不会停止服务
  • 可用性有保障,不会频繁宕机或宕机时间过长
  • 并发性好,同时在线用户量和单群容量大
  • 节点分布广,网络时延低,解决移动环境弱网络丢消息问题
  • 接入方案简单,官方文档齐全且规范
  • 支持常见的各类客户端
  • 价格合理,最好有免费空间便于前期零成本试错
  • 功能全面,可以未来业务拓展
  • 安全有保障
  • 具有不错的监控和分析功能
  • 7*24客服

根据上述特点,下面重点调研了几家比较成熟的云服务商:

聊天支持

聊天功能是即时通讯云的核心也是基础功能。目前各家服务商对其中,单聊、表情、LBS等常规内容方面都实现了,基本都能覆盖大部分业务场景需求。

环信 融云 网易云信
单聊
表情消息
图片消息
语音消息
地理位置消息
自定义消息
敏感词过滤
消息回执
音频通话
Android
IOS
Web
服务端
支持不同步用户

支持不同步用户:指不需要与原有系统用户体系打通,支持游客用户。

服务架构

各大服务商的服务架构如何?现有用户体系如何接入,这部分是整个接入过程中最重要的部分。

环信

环信由于使用的是基于XMPP的架构,必须要在环信云端也创建与应用系统相同的用户帐号(密码可单独),其好处是用户登录环信IM时直接用环信的用户名密码即可。而用户体系是一个应用的最最核心的数据,大部分系统都不愿把自己最关键的用户信息托管到一个第三方平台上。

环信后期要做好的环节是尽可能方便应用系统把环信和自己的用户体系集成,而尽量少的侵入应用系统用户数据。

融云

融云的架构设计上具有如下特点:

  • 无需改变现有 App 的架构,直接嵌入现有代码框架中;
  • 无需改变现有 App Server 的架构,独立部署一份用于用户授权的 Service 即可;
  • 专注于提供通讯能力,使用私有的二进制通信协议,消息轻量、有序、不丢消息。

融云提供的即时消息传输服务,不在应用之外建立并行的用户体系,不需要同步用户账户,不影响应用现有的系统架构与帐号体系;

在用户登录时,应用客户端通过用户ID到应用服务器获得token,然后通过此token到融云服务器登录。token有一定有效期,后续登录可以一直使用。

如图所示:

融云登录流程设计

网易云信

网易云信的服务架构整体流程类似融云的做法,都是在现有系统帐号体系之外不对应用的用户信息隐私有任何的窥探与侵入,通过调用云信提供的API和回调的形式提供即时通讯云服务。

用户登录时,为每一个用户帐号绑定一个云信帐号(accid),并为之设定安全秘钥(token),然后SDK通过token到云信服务器进行验证。

网易云信登录流程设计

价格对比

我从各自官网找到了适用于常规接入方式的价格宣传,以上价格情况调研时间为2020.04.10,后续价格变动未能及时更新,请参考。

环信

  1. 价格详情
  2. 免费条件:100以内的注册用户免费使用,不可实时存储聊天记录
  3. 免费额度:每秒API调用10次数、每天2万消息量、3天聊天历史纪录
  4. 收费标准:每2000日活用户1800元每月 ,每10000日活用户3000元每月,每50000日活用户64000元每月
  5. 收费功能:可实时存储聊天记录,每秒API调用次数增加至50次,每天消息量无限制,聊天历史记录存储延长至90天

融云

  1. 价格详情
  2. 免费条件:100以内的注册用户免费使用,不可实时存储聊天记录
  3. 免费额度:每分钟API调用6000次数、每天1000万消息量、3天聊天历史纪录
  4. 收费标准:每2000日活用户1500元每月 ,每10000日活用户2400元每月,每50000日活用户5000元每月;每分钟API调用12000次数200元每月
  5. 收费功能:可实时存储聊天记录,每分钟API调用次数增加至12000次,每天1000万消息量,聊天历史记录存储延长至180天

网易云信

  1. 价格详情
  2. 免费条件:100以内的注册用户免费使用,不可商用
  3. 免费额度:每秒API调用次数100次、每天消息量无限制、7天聊天历史纪录
  4. 收费标准:每10000日活用户1800元每月 ,每20000日活用户2800元每月,每50000日活用户5800元每月;
  5. 收费功能:聊天历史记录存储延长至365天

具体如下:

环信 融云 网易云信
免费注册用户 100 无限制 无限制
实时聊天记录存储
API调用次数时间限制 50/s 6000/m 100/s
API调用次数总数限制/天 1000万
历史纪录保存天数 90 180 365
2000日活费用(月) 1800 1500 1800
10000日活费用(月) 3000 2400 1800
50000日活费用(月) 6400 5000 5800

由此可见,融云和网易云信的价格要明显低于环信,提供服务也更多一些的。

安全

首先,我们来了解下当下有哪些流行的IM协议:

协议 简介 优点 缺点 典型案例
文本 贴近人类语言表达的文本 可读性好、便于调试、扩展性好 解析效率一般,对二进制如图片视频支持不好 MSN
XMPP 基于XML的消息协议 标准协议广泛使用、跨域互通、扩展性强 解析代价高、传输效率低 gtalk, facebook, weibo
MQTT IBM开发的即时通讯协议 多平台 简单的消息协议、要自己实现好友、群组等 推送
SIP 基于SIP,增加了message和presence的扩展 已有SIP voip服务的基础上支持短信 SIP信令控制的扩展,比较复杂 voip、运营商网络
二进制协议 一般为IM服务商私有协议 对同步支持好、流量小、解析效率超高 工作量大、扩展性差、可读性差、难以调试 QQ、微信

然后,我们看看这三家厂商在实现安全方面的表现:

环信 融云 网易
协议 改进的XMPP协议 私有二进制 私有二进制
服务端 基于Erlang 纯自研 不详
反垃圾
数据加密
第三方资质评估

IM云的总体趋势是使用私有二进制协议保证移动网络的高效通信,服务端则多为自行研究的大型分布式架构,使用mq做内部通信、nosql存储聊天等信息,辅助加以数据加密保障信息安全;安全方面都差不多。

服务支持

在功能匹配、价格等因素确定好后,最重视的因素应该是稳定性、可用性和7*24客服支持,也就是说在弱网络环境下,功能和稳定性是否还能保证,如果出问题是否有客服能及时帮忙解决。

总结

  • 环信作为几家服务商中最老牌的,整体表现也是中规中矩。它的优点在于对群组和聊天室等功能上。

  • 融云做为后起之秀,一直专注于IM领域,各方面指标都针对环信做了提高。它的功能非常全面,官方文档齐全且规范,而且背景是前飞信团队,整体品质也值得信赖。但是从历史价格来看,它的费用一直在上涨。

  • 网易云信做为互联网大厂的服务商,特点是收费保障稳定,所以算是品质较高的服务,其功能也很全,官方说明文档和接入方案都做的不错。

因此在我看来,融云是当下第一选择,功能全、额度使用比较灵活、市场份额高、足够成熟;网易云信与融云的架构和设计类似,也是一个备选。

0%