直播课堂下海外加速

又换工作了,去了一家新公司好未来。我本人是十分不看好当前环境下的在线教育,疯狂招人、各种扩张。不出意外的话明年又是一地鸡毛,但是没有办法,别的公司不要我。
说说新部门的环境吧,也还行。整体环境比不上马蜂窝但是工位大了一些,但是入职竟然不是发MAC,总体差评。加班么?基本不加班。
回到正题,当前正赶上巨变的时候。学而思这边准备融合之前收购的一些公司。VIPX,DaDa英语等,而我所在的部门的前身是大海1对1。从规模上而言大海+VIPX DaDa和大海还是有很大的差异的,DaDa专注于外教,大海都在国内。所以从底层上而言,直播课堂要具备一个海外<=>国内的一个高速互通网络,而这个是大海以及网校所谓的中台部门所不具备的。
关于海外场景,首先应该关注用户分布。假如海外用户都是在美国,其实也简单,搞个专线把国内和美国互通,然后美国再部署几个边缘节点足以。所以整个加速网络如下


加速网络.png

如图所示,用户就近接入,美国访问美国节点,中国访问中国节点。每个地区都有自己的中心节点,中心节点基于跨国专线同步。美国的中心节点会去中国的中心节点获取数据。这样相当于中国是全球中心节点。so fine,看起来问题不大。当都是美国用户的时候美国的中心节点也可以直接提供服务。
ok,那我们看看DaDa的用户分布吧


用户分布.png

简直了,我觉得微信可能也不用考虑这么多的节点。基于我们上面的方案我们需要在全球130多个国家都去部署这么一套东西。我觉得问题不大,反正互联网嘛,就是花钱花钱花钱。能不能挣再说。
说干就干,所以就马不停蹄的去找运维。运维说好办,我们都是阿里云,分分钟搞定。然而打开之后才发现,阿里云国外只有19个地区。瞬间觉得不美好了。
所以我们把需要加速的东西归下类吧
加速.png

对于静态资源而言,其实是最容易解决的。找个CDN厂商放到CDN上就完美了。事实上这么做足以。但是阿里云却不足以完成这个重任,在某些偏远地区,比如非洲等基本上不可用。此处使用的Akamai的CDN。(但是Akamai不支持国内到国内的加速场景)
API接口的要求其实也不高,能通就行。三四秒的响应时间也无所谓。所以此处也直接使用Akamai的加速服务。

对于RTC和信道,基本上特别关注时延。有个200ms+的响应就会有一堆投诉。哎,难搞哦。Akamai表示对于这种场景他们只能做最基础的路由优化,加速效果很不明显。
回过头来看看上面的方案,先基于现状吧,不管采用什么方式先在全球能建节点的地方都建吧。运维也很给力,噼里啪啦在全球建了40多个节点,并和阿里云打通了。按照上面的方案我们需要在每个地区还需要一个中心节点,但是也没啥用。我们基本上老师在海外,学生在国内。这么多节点肯定还是覆盖不全的。但是肯定有能连上的节点吧。
所以我们需要一个测网的环节。这个环节主要是用来看看能不能连上我们的服务器。

  1. 获取到所有的边缘节点列表
  2. 并发请求,看看能不能通,延时多少
  3. 排序选择最优节点
  4. 缓存结果到本地,万一有的用着用着就没法用了呢

在这样的设计下我们进行了简单的联通性测试,发现还可以。
但是还会有些问题,某个节点连的设备太多了,使用这个节点的设备开始明显卡顿,这个时候需要一个动态切换节点的方案。也比较简单,服务端通过信道push到客户端,客户端重新完成一次测网即可。

image.png

本文没有对一些细节展开。比如如何实现负载均衡,课堂的录制回放以及视频流处理相关细节。

你可能感兴趣的:(直播课堂下海外加速)