共计 7700 个字符,预计需要花费 20 分钟才能阅读完成。
导读:2021 年 10 月 21 日,「QCon 寰球软件开发大会」在上海举办,网易智企技术 VP 陈功作为出品人发动了「AI 时代下的交融通信技术」专场,邀请到多位技术专家与大家一起分享相干技术话题。
从本期开始,咱们会针对四个演讲专题逐个进行介绍与分享,本期是咱们的第一期,交融通信技术趋势和演进方向。
嘉宾介绍:曹佳俊,网易云信资深服务器开发工程师,毕业于中国科学院,硕士毕业后退出网易,负责网易云信 IM/RTC 信令等业务的服务器开发。专一于即时通信、RTC 信令以及相干中间件等技术,是云信开源我的项目 Camellia 的作者。
前言
近年来通信技术出现成熟的趋势,与人工智能和 5G 紧密结合,在新冠疫情的催动下,已利用于各行各业中。定位在一站式交融通信云服务的网易云信,为业务层面带来了新的气象。本次 QCon2021 云信专场将为大家带来交融通信技术的前沿摸索和落地实际。
本次分享的内容如下,首先介绍交融通信的概念,其次介绍交融通信的技术演进方向以及云信在技术架构演进过程中做的一些技术摸索,最初介绍网易云信在交融通信多行业场景下的落地实践经验。
交融通信的概念
交融通信的概念最早论述为企业办公场景下的对立通信。对立通信指的是传统通信技术(如短信、传真、电子邮件等)和互联网技术交融后产生的一种新的通信形式,对立通信的外围概念是指能够在任意工夫和任意地点,通过任意的网络和任意的设施获取到咱们想要的信息,比方文本、图片、声音、视频等等。随着通信技术的倒退,交融通信的概念也在一直的扩大。目前曾经逐步造成了以 IM 和 RTC 为外围的,交融多种通信形式的,内容十分丰盛的概念。
对于交融通信来说,它的外围概念当然是交融。对于交融,咱们能够从两个方面来了解。首先是业务的交融,对于一款利用来说,不论是娱乐社交也好或者是金融也好,业务逻辑的实现往往依赖一些底层的通信技术的交融。其次是技术的交融,咱们只有做好了技术的交融,买通底层的技术,这样业务刚才可能更轻易更高效的通过咱们交融通信的技术去实现本人的业务逻辑。
交融通信具体的内容包含哪些呢?从网易云信或者交融通信云服务商的角度来说,交融通信能够划分为六个方面:
首先是业务场景。所谓的业务场景指的是,在线教育、音乐教学、企业办公等场景。咱们会提供各种各样针对各行各业的一站式解决方案,用来升高客户的接入老本。
其次是利用组件层。利用组件能够了解成对通用的场景化解决方案的进一步升华。通用的业务场景比如说视频会议等,网易云信会提供从客户端到服务器的一站式残缺的组件服务,通过屏蔽一些底层的技术细节,来升高客户接入的老本,晋升研发效率。
第三层是客户端层。网易云信提供了全平台笼罩的 SDK,并且咱们的 SDK 致力于提供统一的性能以及统一的体验。
第四层是服务层。我简略划分了几个类型,包含即时通讯、RTC、直播、运营商能力等。对于服务模块来说这不是简略的性能划分,而是蕴含了深度交融的过程。
举个例子,比方对于即时通讯和 RTC 来说,即时通讯给 RTC 提供了信令的能力;RTC 和直播点播的交融则带来了互动直播、低延时直播这样交融通信的能力;再比方运营商能力和 RTC 能力的交融,通过底层能力的买通再联合即时通讯的能力,在音视频呼叫场景下能够无效进步呼叫的成功率。
服务层之下是咱们的外围能力层,这里的外围能力层我特地提一下 AI 这部分,网易云信组建了专门的 AI 算法团队来负责 AI 算法在各个业务服务场景的落地。
以运营商外面的呼叫核心为例,其中可能蕴含了智能机器人,这依赖于底层 AI 的 NLP 算法能力;再比如说往年网易云信推出了重磅产品安全通,平安通是一个面向交融通信的一站式内容平安解决方案,通过平安通,咱们能够在享受交融通信技术便当的同时,加上一道内容平安的保障。
最初是基础设施。其中包含网易和网易云信自研的组件和平台,同时也包含开源我的项目的引入,此外对于一些底层的通用能力,网易云信也在打算做一些开源来回馈技术社区,后续能够关注咱们的微信公众号、技术博客、技术社区等,咱们会第一工夫公布相干信息。
交融通信的技术演进方向
本次分享的核心内容是交融通信的技术演进方向。独自看这个话题有点大,我这里列了一些关键词,比方 5G、AI 的技术倒退显然带动了交融通信技术进一步的倒退;比方物联网技术,随着智能硬件的衰亡,物联网成为了交融通信新的技术舞台。而本次分享将围绕全球化和单元化这两个关键词,介绍网易云信在交融通信技术架构演进过程中的一些技术摸索。
为什么要做单元化和全球化
对于这个问题,这里列了三个关键词,能够局部解答这个问题。
首先是容量。随着交融通信整个市场规模的扩充,网易云信的规模也在持续增长,随着零碎规模的不断扩大,繁多的机房甚至繁多的城市都可能成为限度零碎程度扩大能力的瓶颈,对于该问题,单元化和全球化是一个很好的解决办法。
其次是危险。同样随着零碎规模的不断扩大,笼罩的终端笼罩的群体越来越大,如果咱们这个零碎产生任意的抖动,它的影响是十分大的。比方往年国庆期间,不晓得大家有没有关注,facebook 旗下的业务全站宕机了六小时以上,影响十分大。对于这种全局性的危险,单元化是很好的策略,能够防止单点故障,而且能避免故障蔓延到整个零碎。
最初是品质。对于通信服务来说,是否更快的送达,是咱们掂量一个通信服务质量的重要的指标之一。终端和终端之间的通信,如果是跨国的或者间隔很边远的,物理间隔实际上是一个很难克服的问题。对于这个问题,单元化提供了一种十分好的解决方案,既然无奈克服,那就离你更近一点。
说完痛点,那单元化和全球化具体有哪些劣势呢?
晋升零碎整体的承载能力。在单元化的架构下,多单元的程度扩大能力将无效晋升零碎整体的承载能力。
可能扩散危险。单元化架构的设计准则之一就是单元之间要放弃逻辑的独立甚至是物理的隔离。单元化的架构,能够无效的防止单点危险,并且能够防止危险在整个零碎外面的蔓延,如果这个单元宕机了,那么把它切走就能够了。
异地容灾能力。在单元化的架构下,咱们通过单元互备的形式,提供了异地容灾能力,从而晋升了服务的整体可用性。
优化最初一公里。只有单元化的架构能力做到真正的就近接入。
单元化和全球化的前置条件
具体要怎么做单元化、全球化的通信服务,在讲这个问题之前,我先讲一下我认为很要害的两个点,或者说是做好单元化、全球化的前置条件。
首先是传输通信网。在一个单元化的架构下,咱们遍布寰球的边缘节点以及布在各大洲的数据中心,它们之间的网络传输问题将间接影响到整个通信网络的传输品质。
其次是服务质量监控零碎。在一个单元化全球化的通信零碎外面,终端遍布寰球并且是海量的。服务器也是遍布寰球,如何去收集来自海量终端以及世界各地服务节点的数据,对监控和改善咱们整个服务的品质十分重要。
传输网络
对于传输网络,网易云信构建了一个寰球实时传输网络——WE-CAN。WE-CAN 是一个架设在公共互联网上的,通过对各种资源智能调度来实现进步数据传输品质、升高数据传输老本指标的简单网络系统。下图是 WE-CAN 简略的架构图。
为了让大家了解它的工作原理,举一个简略的例子。图上的右边是一个终端,左边也是一个终端,比方从上海发到新加坡,假如须要传输一个报文,它的传输门路是怎么样的呢?
首先客户端须要通过对立调度零碎 dispatcher 去获取到边缘减速节点,咱们叫他 edge,edge 获取到报文后,会传输给同机房或者同一个单元内的 delay 节点,随后通过一条或者多条的路由达到新加坡对端的边缘 edge 节点,最终再传输给指标终端。
整个传输过程能够分为两局部,一部分是终端到 edge,咱们叫最初一公里。次要是通过后面说的调度零碎,配合 edge 的心跳负载信息来实现最佳接入;第二局部是网内传输,也就是 relay 节点之间的智能路由,这个次要依赖于 contrller 服务,该服务会收集 relay 节点间的网络探测数据,造成一份动静的智能路由表。
WE-CAN 的设计准则和指标能够演绎成几句话:
Faster than CDN
Checker than SD-WAN
More versatile than RTN
前两个比拟好了解,最初一个是什么意思呢,什么叫多功能,这其实也是 WE-CAN 区别于个别的 RTN 网络的中央,WE-CAN 大网不仅能够传输流媒体的媒体数据,同时还能够提供一种牢靠传输的模式,咱们叫 msgbus。所谓的牢靠传输,首先是保障音讯必达,其次保障消息传递的有序性,msgbus 曾经广泛应用在云信的音讯、数据、信令等的传输。
针对单元化和全球化场景,WE-CAN 解决了两个要害的问题,一个是网络减速和动静路由的问题,通过 WE-CAN 外部的智能节点调度,能够帮忙咱们抉择节点和节点之间,就是边缘节点和核心机房之间的边缘门路,并且能够对网络上的单点故障做一个主动避障性能。
还有就是最初一公里的问题,WE-CAN 通过动态配置以及参考动静的负载信息的上报来实现就近接入,进步服务的接入品质,此外在一些非凡场景下,比方一个 RTC 的大型房间,调度零碎还会有节点汇聚的性能来缩小跨节点的网络传输,从而缩小老本。
服务质量监控零碎
在全球化的架构下,建设服务质量监控零碎时有一个点很重要,也能够说是难点,就是如何去实时收集遍布全世界的终端和服务器的数据。下图是整个架构简图。
右边展现的是数据源,一类是 SDK,还有咱们的服务器,包含边缘节点也包含异地的数据中心。
对于 SDK 来说咱们会依据数据的类型和特点的不同,抉择 http 或者 websocket 协定进行数据的上报,服务器次要是通过日志 +agent 的形式进行采集,随后通过 websocket 协定进行上报。
对于数据源来说,在上报之前会先申请调度零碎获取到边缘收集集群的接入地址,数据达到边缘收集集群后,再通过 WE-CAN 的 msgbus 把数据路由到核心集群,随后通过数据荡涤,分流到不同的数据处理单元。比方进入咱们的指标计算零碎,实时计算相干数据的指标,并对接到咱们的监控报警零碎;其余的还包含一些离线和在线的零碎进行数据分析和问题定位。
通过服务质量监控零碎,咱们能够实时的理解到咱们整个通信零碎的衰弱状态,就和跑车的仪表盘一样,能够让咱们很直观的理解到零碎运行状态,什么时候该加油,什么时候该转弯,都能高深莫测。
IM/RTC 服务器单元化 / 全球化计划
说完了单元化和全球化的两大前置条件,上面介绍咱们具体怎么构建一个单元化和全球化的零碎,我会别离介绍 RTC 和 IM 两类通信零碎的单元化 / 全球化的架构。
RTC 服务器单元化
首先是 RTC 服务器的单元化,我会通过单元化部署架构和容灾计划两局部开展。
单元化部署架构
这是一个 RTC 服务器架构的简图,对于它的部署架构,左边这三个关键词能够十分形象的形容它的整体设计理念。
首先是分层解耦。整个 RTC 服务器能够划分成三个档次,首先是信令接入层,这是整个 RTC 服务器的入口。其次是媒体信令层,这层是 RTC 服务器的控制中心,会和底下的媒体服务层进行大量的信令交互。
对于每个服务层来说,能够看到都是反对多单元的部署的。对于信令接入层来说,它的次要性能包含客户端申请的鉴权,以及一些全局或者说利用级别的的配置的下发等,信令接入层的单元划分是利用级别的,也就是说每个利用只会被一个信令接入单元解决,信令接入层收到申请后,会依据申请的一些参数信息(如客户端 ip 等)将申请转发给某个适合的媒体信令单元,媒体信令单元是以房间维度做的单元划分,次要性能包含房间治理、流治理、调度调配等,每个媒体信令单元有都一个媒体单元一一对应,对于媒体来说,各个媒体单元逻辑独立,然而物理资源是共享的。
其次是数据的隔离和同步。对于媒体信令和媒体服务来说,单元都是以房间维度做的数据隔离,而对于信令接入层来说,因为是申请的入口,还波及到数据的同步和转发。
数据的同步包含 2 种类型,首先是全局和利用级别的一些配置信息的同步,采纳了一写多读的形式,保障各个单元间数据的一致性;其次是房间相干数据的同步,次要是房间的一些鉴权信息以及每个房间到媒体信令单元的一一映射关系,这些数据是两两同步,每个单元都有一个逻辑上的备份单元;
此外,信令接入层还波及到数据的转发,通过申请转发来保障每个利用的申请只会被一个单元解决。
最初是单元的互备。能够看到,每个服务层均反对单元化的部署,通过单元间的互备,能够防止单点的故障影响全局。
单元化容灾计划
对于 RTC 服务器,包含三个档次的容灾,别离是信令层、媒体层和链路灾祸。
信令层能够细分为信令接入层和媒体信令层。对于媒体信令层来说,因为它是房间维度的单元划分,因而在某个单元不可用时,信令接入层会间接屏蔽到该单元,所有的新申请都不再转发给该单元,从而疾速复原;
对于信令接入层来说,每个单元都有逻辑上的备份单元,当一个单元不可用时,通过切换申请入口(包含网关配置、dns 等),并且配合数据的变更来把切换信息疾速扩散给所有单元,从而进行单元的灾备切换;
对于媒体服务层来说,每个媒体服务器都会定时上报心跳信息给媒体信令服务,当呈现某个节点故障时,媒体信令服务会疾速的检测到并主动下线该节点。
最初是链路的灾备,对于一个通信零碎来说,你的所有服务节点可能都没问题,然而网络链路挂了,对于链路故障的状况,咱们次要是通过 WE-CAN 大网的智能路由来感知和解决这种 case。
举个理论的例子,咱们有一个机房,它所在的省份的某个运营商的骨干网故障了,导致所有当地的该运营商的机房和终端都无奈连贯到该机房,在 WE-CAN 之前这可能就是一个大事变,然而 WE-CAN 的智能路由主动感知到了这种状况,并通过其余三线机房的路由,通过其余运营商的线路绕回来,防止了事变的产生。
IM 服务器单元化
说完了 RTC,接下来咱们聊聊 IM,不同于 RTC,IM 更加依赖数据中心,因而其单元化的架构也会有一些不同,我会分三局部开展,首先是如何构建一个寰球的即时通讯网络,其次是在寰球通信网络根底如何反对多数据中心,最初是如何进行灾备和冗余。
寰球通信网络
在 IM 寰球通信网络里,咱们的服务能够划分为两类,一类是边缘节点,下面次要部署了咱们的长连贯服务器,咱们叫 link,link 能够部署在多个单元,通过调度零碎就近调配;另一类是咱们的数据中心,承载了即时通讯的外围能力。
边缘节点和数据中心通过 WE-CAN 大网互联,当 link 服务器收到来自客户端的一个申请后,会通过 WE-CAN 的 msgbus 路由到核心机房的 bridge 集群,随后转发给咱们的协定路由服务,最初路由到咱们的服务集群,包含音讯服务、推送服务等等。
这样一个架构有什么益处呢?首先通过长连贯的前置部署,能够无效的改善接入的品质;其次是通过播送音讯下推给边缘 link 节点,能够升高核心机房的带宽压力,晋升零碎的程度扩大能力,这个在超大型的聊天室场景或者超大群场景中,成果特地显著。
多数据中心反对
在这样一个寰球即时通讯网络的架构下怎么反对多数据中心?
在这个架构外面,为了反对多数据中心的要求,咱们抽离出了两个专门的服务,其中一个租户服务,内容次要是一些全局的配置信息、利用级别的配置信息和开关等,每个数据中心以及每个边缘机房都会部署租户服务,当一个客户端申请达到某个 link 节点时,link 服务会拜访就近的租户服务,获取到该申请所属的利用归属的单元,随后通过 WE-CAN 的 msgbus 的 topic 机制,来路由到正确的数据中心;
还有一个是 lbs 服务,lbs 服务同样会多机房部署,并且通过对立的配置信息来进行对立资源的调配和调度。
在多数据中心的架构外面,有一个很重要的点是单元隔离。
能够从两方面了解,首先每个利用都会归属于一个单元,也就是说一个利用的申请只会路由到某一个数据中心,所以各个数据中心的数据是归属于不同的利用的,做到了数据的隔离。
还有一个是数据的全局惟一,以发消息为例,每条音讯都有一个全局惟一的音讯 id,这个唯一性不仅仅是单个数据中心外部的惟一,还须要保障全局的惟一,这样的益处是将来进行单元的拆分和合并时不会产生数据的抵触。
灾备和冗余
在多数据中心的架构下,如何实现灾备和冗余呢。最要害的是数据的同步,在咱们的架构里,每个利用都归属于一个数据中心,而实际上,每个利用还有一个逻辑上的备份单元,主备单元之间会有一个数据的同步,这样才能够进行切换。
数据同步咱们采纳了两种策略,依据数据的类型、特点,采取不同的策略。首先是双写同步,这个次要是解决一些有时效性的数据,比方在线状态、漫游、缓存等等,双写的逻辑是通过 proxy 服务来进行的,以便缩小对业务的侵入,对于一个写申请会被 proxy 转发给 msgbus,最终路由到备份单元进行双写同步;
其次,是针对长久化数据的同步,次要通过 dts 订阅 binlog 的形式,进行跨单元的复制,为了缩小提早,能够看到 binlog 的订阅是异地的,而同步操作则是在指标单元外部进行的。
目前咱们的同步都是单向同步配合自动化的脚本进行切换,后续会革新成双向同步的模式,那样将会进一步升高整个运维操作的老本和复杂度。
IM/RTC 服务器单元化架构的益处
整个网易云信的 IM 和 RTC 服务器单元化的架构具体有哪些益处?
优化最初一公里。对于 RTC 来说,不论是信令还是媒体,全流程的就近接入,将显著的升高提早,比方能够晋升首屏的速度;对于 IM 来说,不论是接入节点还是数据中心,单元化计划下,将能够更凑近终端,从而无效升高音讯的提早。
晋升可用性。单元化 / 全球化的架构,能够无效的晋升整个通信网络应答机房,甚至城市级别的抗危险能力。
数据隔离和危险隔离。各单元间逻辑独立,物理隔离,能够升高危险,防止故障蔓延;特地的,单元间数据的隔离,某些状况下还能够防止政策危险。
交融通信的落地实践经验
说完了单元化 / 全球化的技术架构,那么有哪些落地实际呢?
以大型直播流动解决方案为例,该计划交融了多种通信形式,在单元化的架构下,直播服务通过多机房的部署,确保了直播稳固高可用;对于连麦互动的场景,通过全球化的节点能够做到寰球多地实时互动;而对于弹幕互动,在单元化的架构下,通过扩散接入节点,云信最高能够撑持千万级的在线。
下图展现的是去年 8 月底的流动,这网易云音乐 TFBOYS 七周年演唱会,云信提供了底层的通信能力,最高同时在线人数达 78.6 万,突破线上付费演唱会吉尼斯记录,能够说充沛验证了单元化 / 全球化架构的程度扩大能力和稳定性。
下图是一个社交场景的案例,这是某款出海社交 app,通过就近单元的接入,无效的晋升了通信服务的品质和稳定性。
IM 音讯方面,相比于连贯核心机房,音讯提早升高 30%,而 RTC 点对点呼叫场景下的首屏速度也晋升了 20% 以上。
总结和瞻望
随着交融通信技术一直倒退,市场也在一直的扩充。作为一个交融通信云服务商,全球化和单元化对于云信来说是一个必经之路,网易云信也将会继续打磨技术,更好的服务咱们的客户。
交融通信的技术演进方向绝不只是单元化和全球化,AI、5G、物联网等技术的倒退都是交融通信的技术演进的重要方向。
以上就是明天分享的全部内容,谢谢大家!