猿辅导是中国在线教育科技领先者,创建于 2012 年,公司旗下领有猿辅导、斑马 APP、猿编程等多款在线教育产品,为用户提供互动网课、智能练习、能力造就等多元化的智能教育服务。猿辅导在线教育为更多中国学生提供智能、便捷、乏味的在线学习体验。
近年来,在线教育模式增长趋势显著,线下教学培训逐步向线上演进,猿辅导次要面向不同年龄段的学生提供互动网课服务。为了保障在线教学的品质和音视频的稳固传输,猿辅导采纳自研 RTC 策略,建设技术团队反对 RTC 协定和平台开发,但对于搭建业务所须要的覆盖全国的 RTC 网络,还须要大量的计算资源来实现更凑近用户的业务部署。
火山引擎边缘计算节点产品为猿辅导在一线、二线城市提供边缘实例,用于部署在线网课业务所依赖的实时音视频通信 RTC 平台。通过将 RTC 平台的推拉流服务下沉至边缘部署,实现基于城市粒度的精准笼罩,同时也能本地接入学生、老师的音视频流量,保障在线网课的实时性和互动性。
在线教学业务激增,猿辅导业务运维面临新挑战
猿辅导技术团队负责猿辅导公司全线业务的运维保障工作,随着业务的高速倒退,传统的开发及运维模式已难以应答疾速交付的要求和运维工作总量的飙升。技术团队须要将边缘实例的 CPU、网络带宽等数据对接至公司外部监控平台,进行 7X24 小时的实时监控,从而保障 RTC 平台的稳固运行,这对交付效率、技术能力及运维保障均提出了更高的要求和挑战。
- 挑战 1:研发周期缓和 。线上业务暴发,需要沉重,猿辅导技术团队面临线上业务疾速交付和运维保障的双重压力;
- 挑战 2:可用性要求高 。监控平台须要 7X24 小时提供服务,为线上业务稳固运行提供保障;
- 挑战 3:数据定制化水平高 。Grafana 平台及插件对于可视化数据的格局有明确的规范和要求,技术团队须要对边缘计算节点的数据格式进行屡次解决,并且要可能疾速灵便地反对后续监控的扩展性要求。
4 天上线,7X24 高可用保障,Grafana 监控 + 边缘函数解决方案
为了疾速实现监控能力建设,猿辅导技术团队踊跃拥抱 Serverless 轻量级计算技术,通过火山引擎边缘函数服务来构建 RTC 平台边缘实例的监控能力,摸索运维开发新模式。
边缘函数的技术劣势
边缘函数是部署在火山引擎边缘节点的轻量级 Serverless 计算环境,用户只须要关注业务逻辑的实现,无需关怀底层基础设施和运维。火山引擎边缘函数还具备以下技术劣势:
- 超低时延 :边缘流量调度利用地理信息,就近调度。不同地区的用户流量将会进入扩散在对应地区的边缘节点解决,能够无效升高时延。
- 超高伸缩 :一经部署、全国执行,联合边缘的散布式调度,领有极高的伸缩性,且伸缩过程无需人工干预。
- 简略易用 :相较于传统的软件开发模式,能够无效缩小人力投入,缩短交付周期。
- 节约老本 :采纳轻量级运行时作为执行组件,在进步伸缩性的同时,通过细粒度的资源切割更大程度地升高用户的费用。
猿辅导边缘实例监控能力建设
为疾速构建服务,同时防止后续迭代及运维中的复杂性,团队基于猿辅导外部的 Grafana 监控平台来构建边缘实例的监控能力,在本地应用 JSON 插件作为数据源与边缘函数进行对接,通过边缘函数买通本地 Grafana 和火山引擎 OpenAPI 之间的鉴权,并进行数据处理,再通过配置指标,最终实现监控看板的搭建。
在整个计划施行过程中,猿辅导开发团队只需通过边缘函数服务创立函数,在代码中定义鉴权及数据格式解决的逻辑,实现函数公布,即可实现数据源的买通。边缘函数通过 HTTP Server 的模式,将解决后的数据对外裸露,猿辅导本地的 Grafana 与 JSON 之间通过 Basic Auth 等形式进行鉴权,从而保障数据传输安全性。
基于边缘函数的标准化能力创立并公布利用,简略高效,团队交付工夫从 10 天缩短至 4 天。同时,边缘函数底层的租户隔离和服务兜底策略为猿辅导的监控利用提供 7X24 高可用保障。此外,计划具备可扩大及规模复制的个性,鉴权、边缘数据处理、CI/CD 等定制化需要均可复用该计划,真正实现规模化的定制服务。
不止于在线教育,边缘函数更多场景利用
除了边缘申请解决场景,边缘函数在前端、CICD、CDN 定制化、小程序、网页减速等场景均有广泛应用。
1、浏览器性能优化(ESR)
通过边缘节点提供浏览器渲染能力,将动态内容和动静内容以流式先后返回给用户。企业能够利用边缘函数搭建边缘网关,当用户申请至边缘网关时,优先拜访本地 CDN 缓存返回动态内容,同时对动静局部内容申请回源,异步返回用户,对于终端用户来说,一次页面申请即可实现动态内容优先展现和动静内容异步加载,晋升用户拜访体验。
2、搭建 CI/CD 流水线
利用边缘函数在边缘节点的宽泛部署及可编程能力,企业能够在边缘打造针对 API 或者传统网站的边缘 CI/CD 流水线,用于反对 A/B 测试、基于接入地理信息的申请、申请重定向、谬误兜底降级等场景。同时,利用边缘函数的场景化 API,还能够实现边缘源站的被动健康检查、拨测、选点、竞速申请等性能。
3、源站健康检查
企业能够在边缘函数中做源站探针,自定义健康检查逻辑,当 CDN 接入的申请达到函数,能够动静抉择申请回源逻辑,同时将衰弱数据回传至核心,实现边缘源站的健康检查。