通信网络架构(稳健、可靠全真即时通信网的架构与应用)

通信网络架构(稳健、可靠全真即时通信网的架构与应用)

通信架构(健壮可靠的实时通信网络的架构和应用)

支撑真正互联网的基础网络包括实时音视频通信网络、即时通信网络和流媒体分发网络。随着社会的进步,人们对低延迟即时通讯的需求越来越大。本次LiveVideoStackCon 2021上海站发布会邀请了负责腾讯云千亿级底层通信网络的刘冉,与我们分享全真即时通讯网络的健壮可靠架构和应用实践。

文/刘冉

组织/直播视频堆栈

各位下午好。我是刘冉,来自腾讯云通信的后台R&D。刚才提到的全真互联网和“三位一体”的基础网络RT-ONE,具体包括实时音视频通信网络、即时通信网络和流媒体分发网络。雪迪已经向您介绍了实时音视频通信网络。接下来我就分享一些即时通讯网络的技术点和应用场景。

今天将从即时通讯网络介绍、核心技术、融合场景解决方案、典型应用场景四个方面进行分享。

01即时通讯网络简介

即时通讯网络可以用来做什么?包括信令消息、两人或多人音视频通话的邀请请求、上下车小麦的请求、教育白板中的白板轨迹、直播场景中的红包、点赞、礼物等。除此之外,我们还有社交场景——单人聊天、群聊、直播大房间,以及图文、语音、视频和自定义消息。终端方面,支持全平台多功能覆盖,支持微信、QQ、支付宝、百度、头条等类似小程序。从数据上看,腾讯云IM的月活跃度已经超过QQ,海外用户数千万,遍布200多个国家和地区。

上图是腾讯云即时通讯的基础架构。SDK层可以分为网络连接层、逻辑层、数据层和监控层。在这之上是API接口层,然后是面向开发者的TUIKIT,这是aPaaS非常方便的一个能力。除了SDK,还有很多后端模块。除了顶层的接入层,还有业务逻辑层、数据存储层,以及一些与操作系统相关的逻辑。做IM要考虑的点很多,包括高可靠性、高性能、高可用性、可扩展性、安全性等。,以及日常开发、运营和维护成本。

如何快速搭建一个IM系统?现在集成腾讯云SDK就可以轻松实现。腾讯云提供全平台、多终端的SDK,与腾讯云后台对接后,可以与业务后台进行交互。腾讯会议这种在疫情中扮演重要角色的明星产品之所以能够抓住机遇,是多种因素共同作用的结果。其中很重要的一点是,腾讯大会底层使用了我们全套的通信能力,包括实时音视频、IM、PSTN、TPNS等。基于这些基础能力的支撑,腾讯大会可以更专注于核心能力的打造,这也是我们PaaS服务的初心——将基于多年积累的基础能力产品化、商业化。除了腾讯大会,还有几十个产品在腾讯使用,国内外有几十万开发者和客户。

02核心技术点分享

我简单介绍了一下IM,接下来我会详细讲解里面设计的核心技术点。今天的主题是全真互联网,所以无论是IM、音视频流媒体,还是实时音视频,都离不开互联网。

2.1 IM全球加速网络

现在跨国通信有两种,一种是卫星通信,一种是海底光缆通信。卫星通信由于成本高、带宽低,目前还没有得到广泛应用。因此,大多数通信方式依赖于海底光缆。

我国海底光缆的现状有三点:一是国际网络环境复杂,容易出现抖动和丢包。其次,中国出口的带宽很小。CNNIC第47期《中国互联网报告》提到,整个中国的出口带宽大概是11.5T,虽然每年的增长速度很快,但是和去年全球400T的规模相比还是很小的。世界总人口70多亿,互联网人口只有40多亿,中国可能只占10多亿。通过对比可以发现,我国人均带宽很低,经常出现拥堵。最后一次国际访问往往要绕道,直连延迟高。在这种背景下,IM会出现登录慢、断网、消息延迟等现象。

上图是腾讯云测得的广州到雅加达的路由数据。这个数据是绕路,260ms左右。一般情况下,通过腾讯云自己的网络,比如从广州直接连接到香港或者新加坡,再到雅加达,也不过50+ ms左右,差距明显。好消息是不久前腾讯云在雅加达正式开放,腾讯在这里自建的数据中心可以覆盖我们在东南亚更多的能力。

2.2 IM全球网络加速能力

目前,腾讯云的全球加速能力已覆盖六大洲主要国家,包括120个接入点和2100+个节点,提供全球服务。十几二十年前,中国企业更多的是设备制造商出海,比如华为、联想、TCL。移动互联网的到来,促使更多的工具公司出海。猎豹移动是一个比较成功的案例。之后,与电商、社交、游戏、短视频相关的出海越来越多。虽然现在国际形势紧张,但是全球化对中国来说是一个非常好的机会。我希望你能抓住这个机会,在全球范围内拓展你的业务。

2.3系统架构和加速原理

如果你想建立一个高速网络,你不仅需要知道如何选择最近的点,还需要知道如何在路由之间快速切换才能到达自己的源站。核心点有三个——如何选择最佳接入,如何选择最快路由,如何提高传输速率。

2.3.1准确的IP调度

在接入点方面,腾讯云有自己的公网评测平台,实时计算各个加速点的数据,然后生成调度平台。当用户接入时,根据调度平台为用户选择最佳接入点。同时因为这个平台是实时的,用户会实时介入。找到最优路径后,平台会将调度信息推送到用户端,用户下次再选择最优路径。

上图右侧是我们实时干预后的效果展示。当马尼拉的网络出现故障时,立即生成邮件报警,平台立即封锁马尼拉的路径,并自动选择其他路径进行调度,使其对用户端不敏感,也大大提高了访问质量和运行效率。

2.3.2通信协议优化

找到最佳接入点后,我们对路由之间的协议进行了一些修改。首先通过TCP或UDP传输用户,然后通过QUIC加速来中转路由。QUIC的0RTT,连接复用,拥塞控制算法都很优秀。在数据安全方面,大部分客户在做业务时都有自己的数据包加密。腾讯云的路由也有数据加密,会有预连接等技术,这里就不详细介绍了。

最佳路线位置

那么如何选择路线呢?比如上图中迪拜到圣保罗可能有两条路径:一条是公网路径,一条是全球加速路径。如果走公网,虽然看起来距离会更短,但是数据延迟是459ms;通过腾讯云、伦敦、迪拜中转仅需304ms。我们把每个加速点看成一个节点,加速点之间有边连接。根据时延和丢包率,我们计算一条等比边,然后根据边的长度选择一条最优路径。同时,如果回来时有另一条最优路径,则选择这条最优路径,而不是上一条,以保证回程和出发程的双面加速。最后,我们在公网和专线之间选择一个最优的网络,并不代表一定会走专线。

2.3.4多通道无状态传输

路径选定后,我们需要考虑如何提高传输速率。方法是将大包智能拆分成小包,小包通过多通道并行传输,最终到达源站。这种方法可以提高效率,在某些场景下,一些小数据包会合并成大数据包。两边都会有状态,但是在链接中间是无状态的。如果节点间有抖动,可以秒踢出去。此外,还有路径之间的预连接和连接复用技术。

上图是实际效果,部分区域效果非常明显——通过腾讯云的加速,可以将时延从200ms以上降低到30ms以上。通过测试,全局链路延迟小于300ms,实际验证可以降低平均延迟24%,而请求成功率提高17%。

2.4可靠的消息系统

对于IM来说,路由选择完成后,保证信令消息和其他普通消息的可靠性是必不可少的。接下来给大家分享一下腾讯云消息系统的机制。你可能从网上知道QQ和微信的一些做法。微信采用的是书写扩散的方式,但无论是书写扩散还是阅读扩散,都是在一定的商业场景下考虑的。

腾讯云选择了阅读扩散的模式。从上图可以看出,对于收件人来说,消息存储在收件人维度;对于组,消息存储在组维度中。消息有三种状态:已确认、未确认和待分发。消息接收采用推拉方式。当有消息出现时,会将消息内容和通知发送到接收端,接收端会上传和拉回消息。会有顺序或者腾讯云自己的cookie控制顺序的问题。对于群聊来说,目前是一种阅读扩散的模式。如果群小,写扩散确实方便,但是当群数越来越多,比如微信群上限500人,就可以用写扩散,而微信视频号和直播用写扩散模式是不可行的,很多都改成了读扩散模式。腾讯云不仅可以支撑500人的群体,还可以支撑2000人甚至10000人的大群体。

上图是我们自主研发的消息存储引擎,分为索引层和数据层。这是拉消息的基本机制。目前腾讯云自身的能力已经可以支持多副本存储。所有的索引都存在于内存中,数据可以分为冷数据和热数据。热数据会存储在SSD盘,冷数据会继续下沉到云硬盘。此外,腾讯云还支持数据加密,同时我们在拉取数据时会更加灵活,支持指定SEQ拉取和指定时间段拉取。

2.5亿级状态系统

对于IM来说,状态系统也是非常重要的一点。举个例子来了解状态系统,比如在线和离线——最初的PC QQ是否在线。当你需要推送消息的时候,首先要检查它是否在线。如果是在线,可以通过自己的推送渠道。如果不是线上,就必须通过厂家的线下推送渠道。对于状态系统,采用共享分片的模式。通过uin,进行一致哈希,分片一个一个的划分。SHARD支持横向扩展,对于每个SHARD,也可以支持纵向扩展。比如现在有三台机器,随着业务量越来越大,可以扩展到四台或五台,所以扩容是非常高效的。除了在单个区域,腾讯云可以实现多AZ或者跨区域同步状态。比如为了提高系统的稳定性,可以在上海部署一个,在广州部署一个。消息真正传播的时候,并不是去远程查询(常规的做法是状态存储在Redis中,通过RPC进行查询)。腾讯云会分成多个SHARD,每个SHARD只负责某个版块的账号。当信息被请求时,只需通过本地查询就可以发送下来,效率非常高。

我做微信视频号的时候提到过如果把一亿人拉进一个群会怎么样。要读扩散的模式,写扩散完全不行。这也是腾讯云IM的一个特点——人数不限的直播群,会有很多客户使用。这是一个基本的互动逻辑,看似是一个比较简单的系统发送和接收,其实里面是有多级扩散的。当收到消息时,它通过逻辑层传播,并存储在类似于数据存储层的结构中——这个数据存储层可以存储2分钟或5分钟内的所有消息,当用户来拉它时,它将以最近的方式被拉。这里采用一次写,多读的方法。特定消息是一个循环缓冲区,它记录消息的偏移量。还包括直播群的群号、群ID和群消息的范围。另外,网络通信中会出现抖动和丢包,所以我们制定了一个自底向上的策略,将消息保存在一个高安全性、可靠的存储系统中。当在消息的SEQ中发现故障时,可以对其进行补充,从而保证消息的高可靠性。

上图是实际的拉动机构。除了以微小的粒度维护索引之外,还对消息进行优先级排序。一个百万人或者几千万人的直播群的消息量是非常大的。可以在消息中设置优先级,比如将红包设置为高优先级消息,将点赞、礼物、弹幕设置为低优先级消息,这样可以保证红包不会因为消息太多而丢失。腾讯云对此有淘汰机制。高优先级消息会被全额保存,这样客户来拉消息的时候可以跳过非关键的弹幕数据,直接合并高优先级数据发送到用户终端,保证用户体验。

03融合场景解决方案

前面介绍了腾讯云的三大核心能力。对于IM来说,很多时候不是单独使用,而是和其他能力结合使用。

上图是腾讯云的底层能力。在通信层,拥有IM、移动推送、实时音视频、直播、点播、CDN等能力,为教育、电商、金融、政企等各行业客户提供服务。服务主要分为三类:一是企业内部员工的办公,二是企业与客户之间,三是用户与用户之间。此外,腾讯云还有PSTN、一键登录、云呼叫中心、短信等其他通信能力。从行业来看,腾讯云已经是国内最大的综合通信服务商。

3.1直播解决方案

上图是IM和其他业务场景的一些组合,包括TRTC、直播、点播等。这是用于低时延的互动直播,也支持多人音视频通话、低时延直播、两端PK连播等类似场景。

3.2在线课堂解决方案

上图是教育白板相关的在线互动课堂解决方案。其中使用了腾讯云的实时音视频、IM、CDN、白板能力。一对一小班或一对多大班,甚至10万人的直播课,结合腾讯云的通信PaaS和白板能力,可以快速开发在线课堂产品。

04典型应用场景

最后,我简单介绍一些使用IM的典型场景。

4.1企业内部场景

大会底层,腾讯深度利用了腾讯云通信的能力,包括主机管理、消息和文件共享等等。在疫情期间,平安保险的内训也通过直播的方式融入了腾讯云的IM。钉钉,企业微信提供标准化的SaaS产品,但很多客户会因为业务场景而有更多的诉求和定制化的需求。要满足这些需求,需要整合腾讯云的IM和TRTC,基于业务场景灵活开发产品,比如企业内部的沟通场景。

4.2企业和用户场景

用户和企业之间最常见的场景是客服。之前的客服模式是每个公司都有专门的客服团队,通过这个团队服务公司的所有产品。有了互联网红利的消息,业务增长转向了存量客户运营。客户服务将是未来非常重要的一部分。同时,场景会更加分散,不再局限于某个部门。每个产品可能会建立自己的小型客户服务团队。建立这样的呼叫中心和客户服务系统是非常复杂的。腾讯云呼叫中心可以轻松为客户搭建客服系统。

在金融方面,虚拟营业厅、证券、保险与直播互动结合越来越紧密,所以会有私人支付群、互动、推送场景。

另外,除了前面提到的腾讯云在线教育计划,医疗也是一个不错的方向。医疗问诊、实时音视频交流、病例上传分享都是非常好的使用场景。

4.3用户和用户场景

有用户的场景会更多,比如线上社交直播,电商直播等等。电商直播会需要更多不限人数的直播间,会有优惠券、抽奖、礼物、货物装卸、购物车等需求。陌生人的社交场景会有附近人的需求,陌生人的交流,精准匹配,个性装扮等等。除此之外,在游戏交互方面也有很多应用场景。其实无论是直播、电商、陌生人社交还是游戏,都有一个趋势:过去仅仅是提供一个产品给客户使用就够了,而未来更多的是将产品作为社区,以此来维系与客户的关系。通过腾讯云的IM和TRTC,可以轻松构建社区的传播能力。

以上就是由优质生活领域创作者 嘉文社百科网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~