导读:为了支持网易云信在娱乐社交领域打造融合通信云行业第一的品牌战略目标,建设覆盖全球的低延迟大规模传输网络,WE-CAN 在优化体验共享,降低传输延迟方面做了很多工作,本文将介绍 WE-CAN 全球智能路由网络的相关技术。本文为体验共享系列的第二篇。

文|Keith

网易云信服务端首席架构师

 什么是 WE-CAN?

WE-CAN(Communications acceleration network)是网易云信自研的大规模分布式传输网络,它的主要目标是通过提供低延迟,高可靠的传输服务来保障音视频互动场景中的顺滑体验。

WE-CAN 的创新之处在于它是通过在公共互联网上架设一个 overlay 来达到这一目标的,且完全由软件方案实现,不依赖专线做远距离传输。通过组织起遍布全球的数百个节点,根据实时智能路由算法挑选出一条最佳的路径。

如果做一个类比,那么 WE-CAN 就好像一个高速公路系统,不管用户在哪里,他的数据只要能进入到这个系统,就能被快速地投递到目的地。

提供一个低延迟的传输服务的关键在于两点:如何找到一个最合适的高速入口,以及如何在复杂的高速路网中挑选出一条最佳的路径,这对应了 WE-CAN 的两大核心系统:调度和路由。围绕在这两大核心系统之外的就是我们遍布全球的数百个边缘节点组成的庞大网络。

WE-CAN 的节点

 边缘节点 

要提供低延迟高可靠的音视频传输服务,第一跳的质量非常关键。尤其是在移动设备日趋增多,网络情况日趋复杂的今天,就近接入非常重要。

IDC 边缘化是保证音视频上下行质量的重要手段。节点分布得越多,地理覆盖越广,就能服务越多的用户,在全球范围内做到“无死角、全覆盖”是 WE-CAN 的目标。为此,我们建设了数百个边缘机房,覆盖了国内每个省份的三大运营商。在海外覆盖了所有大洲的人口多、经济相对发达、互联网业务较多的国家。并且在每个大洲都建设有数个中心机房用作控制、调度、状态管理等核心服务部署。

WE-CAN 不但节点众多,而且有完善的节点运营机制。通过对各节点的密切实时监控,每日数据挖掘分析,我们建立了一套赛马机制,对质量不佳的节点进行淘汰,时刻保证所有节点都能提供稳定、优质的服务。

 中转节点 

为了把边缘节点串联起来,WE-CAN 建设了一批优质、稳定的中转节点,这些节点通常占据了各大洲、各地区的“骨干网络交通要道”,并且同时会兼顾多个运营商的线路,保证各边缘节点间的互联互通。

与边缘节点要求部署灵活、本地接入质量优、专注覆盖某一个或某一些 ISP 线路不同,中转节点作为 WE-CAN 网络骨干部分,承载的是跨 ISP、跨地区、跨国甚至跨大洲的流量,对传输质量稳定性有更高的要求。

WE-CAN总体架构图

WE-CAN 的调度

WE-CAN 的调度系统负责根据 SDK 的请求,分配一个合适的接入节点。支持这一分配策略背后的主要因素有两点:地理距离和历史数据。

 由地理位置进行就近调度 

对于 SDK 的调度来说,客户端的 IP 地址是最重要的输入参数,根据 IP 地址可以解析出用户所在的地理位置和 ISP 信息,在调度时,如果我们没有针对此 IP 地址的历史数据或者数据不够充分,那么就会直接为其分配一个就近的同 ISP 节点。

 由历史数据进行择优调度 

如果 SDK 曾经跟服务器进行过通信,或者与服务器进行过探测,则我们会根据其历史通话、探测数据来进行判断。

对于曾经有连续登录失败、音视频卡顿、探测质量很差的服务器,在调度时会进行避免。对于各项指标都比较出色的服务器,调度时会优先考虑。

 调度系统的其他技术难点 

一个优秀的边缘节点调度系统不但要保证每一次调度结果都是最优的,作为一个核心服务,它本身的稳定性、使用性能、并发能力、成本优化能力等也是重要指标。

如在大频道蜂拥入会的场景下,调度系统能否抗住瞬时 QPS 压力,在兼顾频道汇聚的前提下能否防止对单台服务器进行过载保护,这些都是保证线上业务稳定的核心技术难题,WE-CAN 的调度系统在这些方面都有深厚的积累和业界领先的解决方案。

WE-CAN 的路由

WE-CAN 在全球范围内部署了数百个节点,在国内做到了省级单位三大运营商网络全覆盖,在海外的人口稠密地区、经济发达国家也都有优质本地节点部署,真正让用户做到就近接入。

将这张庞大的网络组织起来,提供基于公共互联网的低延迟传输服务是 WE-CAN 路由系统的职责。

WE-CAN 各节点会相互进行质量探测,以真实的业务数据指标为主,以人为主动探测结果为辅,可以得到各个维度的实时节点质量数据,根据这些数据在我们的控制中心通过智能路由算法可以得出各节点间 top k 的最优路径,这些路径的变化情况会及时反馈到各中转节点上去,指导路由转发策略。

WE-CAN 的路由策略是一个复杂的实时变化的结果,考虑的因素除了传输质量外还有流量限制和成本优化,并且在实际使用中也并不一定总是走最优路径。因为节点的网络状况是在不停变化的,在网络拥塞的情况下如果等到节点数据上报反馈到控制中心再经过路由计算下发到节点进行路径切换往往已经过去了数十秒甚至更久。在这种情况下需要各节点根据当前运行状况在 top k 路径上进行一定范围的动态调整。

WE-CAN路由示意图

结语

基于 WE-CAN 大规模传输网络,网易云信可以在全球范围内提供稳定、低延迟的音视频服务。我们会持续优化节点部署、接入调度,路径规划等核心技术能力,让用户得到更好的实时互动体验。

 相关阅读推荐 

  • 极致流畅体验的密码:网易云信 QoS 策略介绍 | 体验共享技术专题

  • 艾媒咨询:泛娱乐「体验共享」报告发布,网易云信多个案例领衔

WE CAN:全球智能路由网络 | 体验共享技术专题相关推荐

  1. 极致流畅体验的密码:网易云信 QoS 策略介绍 | 体验共享技术专题

    导读:近日,艾媒咨询发布了<2021年中国泛娱乐行业体验共享专题报告>,首次提出「体验共享」将成为泛娱乐行业日后发展的重要方向.针对该趋势,网易云信推出「体验共享」技术专题,从 QoS 策 ...

  2. 华为云CDN节点扩增力度加大,构建全球智能边缘网络

    华为云CDN节点扩增力度加大,构建全球智能边缘网络 CDN是一个能够让内容传输更快的分布式服务器网络.原始内容缓存在全球边缘节点上,从最近的节点为全球用户提供服务.这与仅在客户源站上存储内容的传统方法 ...

  3. 体验共享——技术实现瓶颈与突破

    虽然音视频技术日趋成熟,但是不同场景对音视频的需求有不同侧重.为了将体验做到极致,音视频技术平台也面临着很大的挑战.今天我们邀请到了即构科技邱国钦老师,为大家介绍多媒体场景中新的体验场景面临的挑战,以 ...

  4. 中国 IM 企业的新机会?揭秘融云全球通信云网络背后的技术 | 对话 WICC

    引言: 融云成立于2014 年,聚焦互联网通信云赛道,专注为开发者和企业客户提供即时通讯和实时音视频通信云能力.融云团队在即时通讯领域拥有十余年的技术研发和运营维护经验,11 月 30 日上海,融云首 ...

  5. 中国IM企业的新机会?揭秘融云全球通信云网络背后的技术 | 对话 WICC

    更多精彩内容请关注我们 融云成立于 2014 年,聚焦互联网通信云赛道,专注为开发者和企业客户提供即时通讯和实时音视频通信云能力.融云团队在即时通讯领域拥有十余年的技术研发和运营维护经验,11 月30 ...

  6. 艾媒咨询:泛娱乐「体验共享」报告发布,网易云信多个案例领衔

    近日,<2021年中国泛娱乐行业体验共享专题报告>正式发布.该报告由国内知名咨询机构艾媒咨询(iiMedia Research)深入国内众多家互联网平台调研后发布,聚焦在泛娱乐平台未来发展 ...

  7. PPIO PRoute —— 为当下全球互联网量身定做的智能路由

    PPIO 是为开发者打造的去中心化存储与分发平台,让数据更便宜.更高速.更隐私.官方网站是 https://pp.io. 我前面做过PPIO的商业化架构的介绍.PPIO 的商业服务层包括:IaaS 层 ...

  8. 体验共享已“上头”,娱乐社交咋“追风”?

    文 | 曾响铃 来源 | 科技向令说(xiangling0815) 继体验经济.共享经济火了后,在泛娱乐行业,体验共享经济正成为新风口. 据艾媒咨询发布的<2021年中国泛娱乐行业体验共享专题报 ...

  9. 全球未来网络与SDN技术大会5月18日拉开帷幕

    2015年5月18日至19日,"2015全球未来网络与SDN技术大会"(http://www.conference.cn/sdnt/2015/)将在北京隆重召开.作为全球首个专注于 ...

最新文章

  1. [2018年工作重点规划]二.max脚本加强编写能力
  2. IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常
  3. Java常用实体类--System类
  4. 03 Android应用界面编程
  5. 判断给定的二叉树是否为二叉排序树
  6. MPP 二、Greenplum数据加载
  7. java 构造函数和_Java类和构造函数
  8. php 接口继承,PHP面向对象之旅:接口的继承
  9. 如何为自己的项目在pycharm中设置debug?
  10. POJ-1384 Piggy-Bank 多重背包变形
  11. 基于jsp+Spring boot+mybatis的图书管理系统设计和实现
  12. c++语言表白超炫图形_C/C++图形界面编程打造——浪漫的表白程序!
  13. python的基本语法if语句_Python基础之条件控制操作示例【if语句】
  14. ffmpeg视频播放、格式转化、缩放等命令
  15. Flutter功能 如何给row或column布局添加手势监听?【教你一步搞定】
  16. View.Post()保证UI带你装逼带你飞
  17. 关于我2021腾讯暑期实习一面一波流这件事以及反思
  18. java生产者消费者 阻塞_java之使用阻塞队列实现生产者,消费者模式
  19. python变异系数_使用Python进行描述性统计 【目录】 1 描述性统计是什么? 2 使用NumPy和SciPy进行数 ......
  20. 论文阅读——Towards Adversarially Robust Object Detection

热门文章

  1. 自学ng2 -生命周期钩子
  2. webpack入门(四)——webpack loader 和plugin
  3. 云计算学习(2-4)云计算的案例
  4. Oxite移植到ASP.NET MVC2 BETA 笔记(关于Html.RenderPartialFromSkin)
  5. GraphPad轻松绘制配对比较图和双向柱状图
  6. JavaSE(四)——方法重写、多态、接口
  7. mysql udf禁用_Mysql数据库UDF的安全问题利用
  8. tomcat中添加直接访问的文件
  9. 计算机视觉与深度学习 | ORB特征匹配:基于OpenCV+Python(暴力匹配、FLANN)
  10. 定时采用ajax方式获得数据库,《基于Ajax的在线客服系统的设计与实现》-毕业设计论文(学术).doc...