编者按:互联网+时代,消息量级的大幅上升,消息形式的多元化,给即时通讯云服务平台带来了非常大的挑战。网易云信不仅能够完美支持千万数量级的高并发消息量,还与此同时做到了稳定和快速。这背后究竟有着什么样的架构和特性?
现在,更多面向衣食住行的应用产品早已具备即时通讯功能,即时通讯作为一个连接人与人的功能,在各个场景中都不可或缺。据《中国互联网络发展状况统计报告》显示,2016年6月中国即时通信用户规模达6.42亿人,网民使用率为90.4%。越来越多的企业和厂商正在进行转型,将会进一步拉动云服务市场的快速发展。企业级的IM云服务,作为最通用、最活跃、最刚性的需求,极有可能成为中国企业服务的入口级应用,同时也成为被国内众多巨头主力拓展的市场。CSDN采访了网易云信首席架构师周梁伟,针对企业级IM架构如何支持高并发且安全、稳定等话题做出了深入的探讨。
IM云市场,机遇与挑战并存
在如今互联网+的浪潮下,各产品在节奏快的情况下,选用IM云服务是必然趋势。这对IM云服务市场的各家平台,是一种机遇,同时也是一个全新高度的挑战。在互联网+时代,消息量级的大幅上升,消息形式的多元化,给IM云服务平台带来了非常大的挑战。如何支持更大数量级的高并发消息量,并能够做到稳定和快速,成为各IM云服务平台的重中之重。
“智慧IM云架构”—— IM云分层架构
周梁伟表示,网易正是看到了这一趋势,凭借在即时通讯领域长达16年的经验与技术积累,推出了网易云信即时通讯云服务(PaaS)。网易云信在用户的设备之间建立了一个可靠的端到端的连接,在不同的场景中用不同的方式投递消息,不同类型的消息会产生不同的消息行为,在网易云信的消息通道中有内容审核和数据同步。开发者通过集成客户端SDK和云端OPEN API,即可快速实现强大的IM功能,作为PaaS服务模式的网易云信全面支持Android、iOS、Web、PC等多平台。
周梁伟首先介绍下网易云信的技术框架,有助于大家系统的理解云信产品的设计思路:
• 客户端SDK层:SDK多平台适配、移动弱网络优化、安全加密压缩。
• 连接层:长连接管理优化、支持平滑升级、支持跨网络切换、广播分包。
• 路由层:用来解耦并提供高可用和易扩展等特性,同时提供协议路由服务,代为分发业务请求。
• 业务层:处理具体的客户端请求,并返回结果。提供后端直连DB、cache等各种基础服务。高可用,弹性扩展。
核心功能:连接
“IM服务架构最核心的功能就是“连接“,它需要解决的最基本的问题是稳定,安全和快速”,周梁伟对IM架构需求作出了明确说明。
稳定
网易云信的SDK采用长连接机制来实现,并且由SDK+心跳的方式来检测断线和自动做重连,同时针对移动网络等弱网环境,对SDK做大量的优化工作。对移动端/PC端,云信使用TCP来连接客户端与服务器。对Web端,云信使用Socket.IO协议,实现长连接的同时,也解决了浏览器的兼容性问题。
安全
网易云信对所有在公网传输的数据都进行了加密。在SDK与服务器的连接建立过程中有一个复杂的秘钥协商过程,客户端需要生成一个一次性使用的加密秘钥,并使用非对称加密方式将这个秘钥加密之后传给服务器,这个加密数据会被服务器解密,之后该加密秘钥被保留在该长连接的会话信息中,数据来往均使用该秘钥加密,这是一个流式加密,能够有效防止中间人攻击和数据包回放等攻击手段。对于web端则通过Https来保证Socket.IO协议的数据安全。
快速
网易云信借助LBS服务,帮助客户端寻找到最适合自己的网关接入点。同时,在连接建立之后,长连接的机制可以极大提升消息上下行的速度,并且在数据传输过程中,对数据包压缩传输,降低网络开销来提升消息收发的速度。对频繁的前后台切换和重登陆这种移动客户端场景,SDK提供自动登录和重连等机制,即在UI界面起来的同时已经提前把消息通道建立。在接入网关的选择策略中,通过并行来提升连接建立的速度。