今天的新知系列课,我们邀请到了来自腾讯云即时通信IM团队的技术导师 —— 陈锐龙,为大家介绍腾讯云即时通信IM是如何构建低延时高可靠高稳定以及高安全方面的通信能力,以及底层的核心技术支撑跟技术特性。本次分享分为4个部分,包括产品介绍 ,产品通信底座RT-ONE™ for IM 核心技术特性介绍,IM的应用场景以及如何快速集成我们的通信服务。
接下来的几周,每周四晚上7:30,我们都会在腾讯云音视频视频号、开源中国、InfoQ、51CTO、云 社区等多个平台进行课程直播,大家千万不要错过哦~
- 什么是即时通信IM -
腾讯云即时通信IM是基于QQ底层能力开放出来的PaaS服务,只要将客户端SDK植入您的App,同时在服务端侧简单集成 REST API 接口和第三方回调接口 ,即可拥有:
- QQ、微信的群聊、单聊以及收发富媒体功能;
- 腾讯会议的在线会议功能 ;
- 斗鱼的弹幕功能;
- 微视的短视频评论功能 ;
- 企业微信的企业通讯录功能;
- 达到比肩QQ、微信的稳定可靠通信能力。
腾讯云即时通信IM这个产品是如何诞生的呢?我们发现随着移动互联网的快速发展,大部分客户开发的App都对IM有强诉求,但如果自己独立开发一个IM产品,会面临着开发量大,单聊、群聊、弹幕、文本、图片点赞等功能都要自己实现,另外对于IM的高稳定性、高可用性、高连通性方面,由于缺少经验,往往都处理不好,同时也无法应对线上用户突发带来的各种服务器高负载问题。基于上面的原因,我们决定把QQ底层能力开放出来,给客户使用,让客户只需要简单植入SDK,就能具备和QQ一样的高可用、高稳定、高连通、高抗突发能力,也就有了腾讯云即时通信IM这个产品。
那这个产品能够给客户带来什么样的价值呢?首先,集成IM SDK后,在消息传输方面,即时通信IM支持文字、图片、视频、语音等富媒体信息,以及客户自定义消息和表情,也支持消息漫游、撤回转发、回调等扩展能力,同时我们跟安全团队合作,也提供对消息内容做各种模型审核跟打击的功能,为客户构建稳定安全的消息通道。在会话管理方面,IM提供了一系列TUIKit组件,简单集成这些组件,就可以轻松实现会话指定、会话列表展示、未读消息技术、历史消息漫游展示等功能。关于群组管理,我们提供了群成员管理、自定义字段、群资料跟公告变更展示与群置顶等能力,并提供了工作群、社交群、会议群跟直播群等多种群组类型,满足客户的个性化群组需求。最后在资料关系链方面,我们支持设置用户资料,更改头像、可配置好友关系,提供好友验证选项等能力,适配您的业务场景。总之,集成腾讯云即时通信IM SDK,我们当前的能力可以适配您对IM的绝大部分场景诉求,您只需要关注业务方面的交互就可以,我们帮您解决底层传输、存储等问题。
IM基础架构
IM整体架构,由SDK、接入、业务逻辑和存储等4层构成,最上面是SDK层,SDK层主要负责网络连接、登陆上线和数据收发功能,同时提供了多种平台接入能力,下一层就是我们的接入层,包括全真即时通信加速网、SSO业务分发模块,这一层次主要负责通信加速、数据加解密和业务分发,为了防止某个客户端版本实现出现bug,导致收发消息出现死循环而影响到其他客户,接入层还提供了频控容灾能力。下来就到了业务逻辑层,这里包括资料关系链、状态、C2C单聊、群组管理、群聊等业务模块,同时我们还和公司安全团队天御合作,为IM客户提供了定制化的内容审核及多种模型打击能力。最下面一层是数据存储层,包括MangoDB、Redis以及腾讯自研的存储服务Grocery,即时通信IM的账号、资料关系链跟聊天消息绝大部分都是存在Grcoery里面。我们自研的Grcoery服务具备多地最多11份备份实时同步跟容灾功能,确保数据不会因为某个网络故障或机器硬件故障而出现数据丢失问题。
IM产品优势
腾讯云即时通信IM提供了包括Windows、Linux、Andriod、iOS、小程序、Web等全平台的接入能力,覆盖了泛互联网、电商、企业办公、教育、传统行业如金融、保险、银行等场景。在网络质量方面,利用我们基于QQ多年经验搭建起来RT-ONE for IM通信网,使得App具备了从接入、到中间传输,再到数据回调给服务端的全链路全方位加速能力。在业务特性上,腾讯云即时通信IM提供了诸多业界领先的特性,包括提供全员精准快速推送能力、支持10W人 大群,特别说明一下,这里的10W人 大群功能跟QQ群或微信群一样,收发消息、聊天记录存储、漫游都没任何限制,和经常听到的聊天室或直播群方案设计完全不一样,后面这两种群会存在上行条数限制,不存储聊天内容等问题。
全真即时通信网RT-ONE™ for IM
的核心技术特性
众所周知,对于所有通信加速网,节点数以及分布广度绝对是底层基础,RT-ONE™ for IM通信网在全球主要国家均有部署加速节点,总节点数超过2100个,节点之间两两互联,最终构建成一张Full-Mesh全网图。同时加上我们自研的公网质量评测中心、应用层自研的智能调度路由、各个加速算法以及网络感知自动剔除能力,RT-ONE™ for IM通信网能够提供比普通专线更稳定、更抗抖动、更低时延的数据通信能力。下面,我们会详细介绍第一公里端侧最优接入以及RT-ONE™ for IM通信网的各种加速特性。
第一公里端侧最优接入
对于第一公里最优接入问题,大家经常会困惑,地理距离就近接入是不是就是最优接入?答案是:不是的,因为不管国内还是海外,都存在地理最近但网络绕行的情况。举2个真实例子,浙江移动,从距离来看,应该是接到上海最优,但我们通过公测平台并结合ABTset以及QQ等业务的实际测试发现,浙江移动只有约55%的IP接到上海最优,还有45%走到广东跟天津才是最优的。河北移动,按距离应该接到天津最优,但从平台来看,只有不到80%的IP到天津是最优接入,还有20%接到上海更优。另外公网网动,运营商割接等等,都会让就近接入大打折扣,再举个例子,几年前的某个一天,我们发现重庆移动用户到深圳移动接入点的效果从凌晨起突然变差,后面通过跟运营商多方沟通,最终发现是因为重庆移动当天凌晨割接后路由配置有问题引起的。
综合上面这些实例,要实现端侧最优接入,不能简单按地域就近接入,必须通过公网质量评测中心,构建以网关IP维度生成的最优调度信息,才能真正实现对任一用户都能够提供最优接入,从而达到整体最优。正是在这种背景下,腾讯云即时通信IM搭建了公网质量评测平台,结合用户网关到各个节点的时延 丢包率信息并利用同运营加权,最终生成以网关IP为维度的最优调度库。每天定期更新,发现公网抖动时还可以实时生成干预库。
腾讯云即时通信IM公网评测中心的三个核心特性。
- 评估因子计算,通过数学推导并结合多个业务进行ABTest最终确定评估因子。
- 针对一些小网关比如中小运营商的小样本量引起的调度不准问题,我们借用了TCP中计算srtt的原理,彻底解决了小网关调度问题,并通过ABTest实测发现,利用这个算法,业务登陆成功率在小网关上有差不多20%的提升。
- 解决了NAT多出口导致调度不准问题,所谓的NAT多出口,意思就是说,同个用户在同个网络下,如果访问的是移动服务器的话,后台看到的网关IP就是移动的,但如果访问的是联通或电信的服务,那么后台看到的网关IP就变成联通或电信了。这种情况下,由于无法知道用户的真实身份会导致调度不准,针对这个,我们公网质量评测中心利用虚拟网关原理,把这些网关都当做同个网关处理,最终在这些网关下都生成同分最优列表,彻底解决NAT多口出问题。
RT-ONE™ for IM通信网的各种加速特性
通过公网质量评测中心,调度用户到我们的最优接入点后,就进入了RT-ONE™ for IM通信网,也就是我们通常说的第二公里加速问题。经过多年的研发,腾讯云即时通信IM加速网具备了很多加速特性。
自研的带成本因子的最优路由算法:从香港到南非约翰内斯堡,有两条链路,一条是公网直连,大概要467毫秒,另一条则是通过RT-ONE™ for IM加速网,在马尼拉中转,整条链路时延可以降低到298ms。相比公网直连,走我们的加速网络,可以快169毫秒,整体时延降低了36%,效果非常明显。另外我们知道每个加速节点都是有成本,比如带宽或流量,所以腾讯云即时通信IM还提供了一种能力,如果客户觉得走最优加速成本偏高,那么可以通过个性化定制成本因子,接到次优的链路去,达到成本跟性能的最佳平衡。
支持多路无状态传输能力:每个加速节点之间都预先建立了多条连接,用户数据到达其中一个节点后,会将数据包通过多条连接,同时发送给下一节点。RT-ONE™ for IM通信网还针对IM中视频、文件以及图片这种大数据大包传输的特点,通过将大包拆分成小包再多路并发传输的方式,达到最优传输效率。
支持极致传输模式:RT-ONE™ for IM通信加速网络支持回程跟去程走不同线路,能够在网络出现频繁抖动时提供最优传输效率。
在通信协议方面,我们调研过多种加速算法,包括SRT、WebRTC,KCP、UDT、Quic 以及自研加速协议。最终发现google开源的Quic协议,不管可靠性、加速效果、通用性还是集成难度方面,相对其他协议,都有一定优势,所以我们最终采用Quic 作为加速节点间的通信协议。确定协议后,我们从Chromium项目,剥离出Quic源码,定制封装成四层支持全双工通信的Quic协议库,并应用在通信网的节点传输上,作为加速网络高可靠传输的保障。
高安全性也是通信网的核心特性之一,我们在端侧采用了QQ同款的加密级别,同时数据加速节点后,又加了一层Quic自身加密算法,双重加密,确保数据在公网传输时更难被检测跟解密,数据传输更安全更有保障。
另外,公网比较容易出现抖动,所以加速节点出现异常时快速发现并自动剔除,也成了我们整个加速网的又一个核心特性。举例来说,拉各斯到香港,刚开始最优路径是通过拉各斯 - 法兰克福 - 北京 - 香港,但当拉各斯到法兰克福的线路因为某种原因出现异常时,加速网会快速发现并广播到其他节点去,这样其他节点就不会再通过这节点进行中转,同时拉各斯节点也会重新计算到香港的最优路径,最终发现通过马德里中转最优。同理,当拉各斯到马德里线路又出现异常时,这时又会快速重新计算最优路径,此时整条路径变成通过马尼拉到香港最优。
除了加速节点异常自动剔除外,通信网还支持APP端侧到接入节点异常探测与快速容灾。如图所示,当马尼拉节点机房因为停电导致节点故障时,我们的通信网很快就检测到,并在一分钟内做了自动剔除处理。
下面是从国内到印度,走我们加速网络发送富媒体跟直连情况的速度对比,从效果来看,走了我们加速后,效果远远要好于没加速的情况。
我们还统计了平台中所有客户海外联网登陆时延的分布情况,发现走了加速,第50分位时延与没加速相比,有接近40%的降低。第90分位的提升效果更明显,降低了差不多一倍。
最后总结一下:通过通信网提供的公网质量评测平台,结合应用层最优路由算法、多路传输、极致传输、协议优化、双重加密以及异常剔除等技术特性,RT-ONE™ for IM通信网能够给APP提供一个低延时、高可用、高可靠以及高安全的底层通信能力,为APP提供快速可靠的访问体验。
应用场景及接入指南
在泛互联 社交、知识分享、娱乐游戏直播、在线教育、直播电商、企业通信等场景,腾讯云即时通信IM都能够提供相应的能力支持。
那么,怎么快速接入腾讯云即时通信IM产品呢?
这里有一个一分钟跑通demo的视频,大家只要按照视频方法来集成,基本一分钟之内就能够快速集成并开发。
如果大家需要了解更多的详细文档,可以直接到打开https://cloud.tencent.com/document/product/269/42440,或者在腾讯云官网上搜索即时通信IM并跳转过去,即时通信IM所有相关的信息都在文档里面。
关于新知
随着行业数字化转型加速,线上线下一体化、数字技术与真实世界融合的全真互联时代正加速到来。腾讯云音视频技术导师将在新知栏目中分享在全真互联时代下新的行业趋势、新的技术方向以及新的应用场景与大家共同探索视界,创见未来!
每周四晚上7:30,连续6周,我们将在腾讯云音视频视频号、开源中国、InfoQ、51CTO、云 社区等多个平台进行课程直播,千万不要错过哦~
点击文末「阅读原文」可以前往云 社区,查看往期完整内容。
腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备 RT-ONE™ 全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并通过腾讯云视立方 RT-Cube™ 提供All in One 的终端SDK,助力客户一键获取众多腾讯云音视频能力。腾讯云音视频为全真互联时代,提供坚实的数字化助力。