作者 | 么敬国(新东方教育科技团体云教室直播平台技术负责人),灏正(阿里云 Serverless 架构师)
新东方教育科技团体定位于以学生全面成长为外围,以科技为驱动力的综合性教育团体。新东方线上教育业务的云教室零碎反对了视频直播、转码、点播等新东方所有在线教育场景。随着业务量的增大,因为直播转录及视频转码工作解决平台具备显著的 波峰波谷个性 ,自建机房较低的 资源利用率 成为了业务的外围痛点。为了晋升计算资源利用率,进一步实现降本提效指标,在几次尝试之后,新东方踏上了 Serverless 实际之路。以下内容是由新东方教育科技团体云教室直播平台技术负责人 么敬国 在云栖大会的分享。
如何应答难以预测的业务量?
新东方除了本人的线上教育业务应用云教室平台以外,还通过美刻云直播对外开放了新东方的直播能力。云教室直播平台次要反对四种业务模式:
- 云教室:在线直播互动课,考究互动性。
- 云点播:录播课。
- 云直播:大型直播,以主播为主。
- 智慧教室:软硬件联合的计划,提供相似于双师的教育模式。
直播 + 录播是新东方主推的课程交付模式。直播课程互动性强,能够实现良好的课堂互动,激发学生的学习趣味;老师能够基于学生的课堂反馈或互动间接与学生进行互评,便于老师及时对教学环境作出微调,从而让教学过程更有针对性;通过互动和课堂答疑,能够让教学过程和成果更有保障,直播课程比拟适宜低幼年龄段的学生。
而面对高中及高中以上年龄段的学生,录播课更为适合,录播课特点为学习工夫灵便,学生能够自主对学习内容进行检索,进行有选择性的学习,个别实用于高中和高中以上年龄段学生。录播课的长处在于能够对授课内容一直进行打磨、编辑,制作精品课程,需求量逐渐加大。
最后团队采纳地录制技术计划为客户端录屏,将老师的直播进行录制,不便学生重复观看,但这样的形式出错率高,CPU 占用率也较高,无奈对录制 UI 布局进行灵便定制,只能是看到什么录什么,这样的形式仅能满足低幼年龄段的课程需要。
往年,新东方开始对接大学生线上教育业务,对录播课程的品质提出了更高的要求。团队开始思考采纳服务端录制的形式解决问题。服务端录制的两个外围点在于直播录制和视频标准化生产。咱们的业务模式决定了咱们很难精确预测业务量,因而,新东方要害的技术工作是实现计算弹性。
三种抉择,函数计算怀才不遇
要解决服务端录制的问题,摆在团队背后的有三个可选的技术路线:
- 间接应用 ECS 自建,该计划的劣势是灵活性比拟高,但问题在于计算没有弹性,尽管云厂商提供了弹性调配 ECS 资源 API,然而本人实现整个计算弹性须要微小的开发量,同时后续运维比较复杂,资源老本高,难以做到标准化。
- 云录屏 SaaS 计划,这个计划的劣势是具备标准化的服务,研发投入比拟少,运维工作也较少,然而问题在于灵活性差,资源老本极高,难以进行进一步的性能优化。咱们心愿寻找一家成熟的 SaaS 厂商提供地服务以疾速反对业务,然而通过试用,这些平台的成熟度和技术指标等均无奈满足咱们的需要。
- 采纳阿里云 函数计算 FC,咱们发现阿里云的函数计算产品能够完满满足计算的弹性需要,只须要关注具体需要在平台上做开发即可,研发投入小同时免运维,开发过程自主可控,灵活性高,可按需应用极大升高了应用老本,实现标准化绝对容易。不过函数计算是一个比拟新的技术,团队须要一段时间来相熟。
通过重复比对,新东方团队抉择应用应用函数计算来解决服务端录制问题。
新东方的 Serverless 实际
录播转码,函数计算小试牛刀
咱们首先在录播转码场景下进行了尝试。录播转码的外围诉求是对直播流进行实时转码,保留为规范的视频格式,不便后续加工应用。
在这个场景中,咱们第一次感触到了函数计算 FC 带来的弹性劣势。在老师进入房间发动转码申请后,可疾速启动函数实例进行转码。在上课完结后,完结转码工作,将长期音视频后果上传至云存储后即可立刻开释函数实例,不会存在任何计算资源的节约。有了在录播转码我的项目中利用函数计算的教训当前,咱们对函数计算计划有了更大的信念。
初露锋芒,函数计算直播合流转码计划
之后,咱们启动了云端录制我的项目。应用 Chrome 浏览器退出直播房间,对浏览器界面进行截屏录制,该计划的关键在于 弹性提供浏览器实例。
因而,咱们利用阿里云函数计算启动 Linux 容器,在 Linux 容器运行 Chrome 浏览器实现 弹性提供浏览器实例。整个的录制流程是这样的:老师进入教室当前,开始进行音视频推流以及白板操作。同时,录制平台发动录制申请,启动函数解决,开始接管教室的音视频流和白板操作,并在浏览器展示整个教室的画面,同时做截屏。课程完结后,平台发动完结录制申请,函数计算平台会优雅地终止实例。终止之前,实例会将长期后果上传至云存储,随后函数实例被销毁,不存在任何资源节约。
开箱即用的可观测能力
咱们认为,可观测能力对于函数计算平台至关重要。首先,业务高峰期须要启动大量函数实例,因而,必须要残缺的 metrics、log 和 trace 能力无效对海量实例进行监控。其次,因为函数计算实例按需创立,实现工作之后被销毁,平台必须保留残缺的日志,以便发现问题后开发人员进行排错。
咱们曾在开发录制服务的过程中面临的问题是:启动函数实例当前,Chrome 浏览器要拜访直播服务,此时网络呈现问题,导致录制失败。后续咱们应用阿里云 SLS 日志平台查看日志,发现 Chrome 浏览器内核对网络解决过于敏感。找出问题后,隔靴搔痒,退出了重试机制,问题得以解决。
超出预期,函数计算带来更多惊喜
在应用函数计算技术之前,咱们冀望它能通过百毫秒拉起上万个实例,定时预热彻底解决冷启动艰难,帮忙咱们承载直播转码和录屏业务业务洪峰。有效应对大规模突发在线流量,按量付费,进步资源利用率,缩小 20% 资源老本开销,极大水平升高运维老本,让咱们能够只专一业务翻新。在理论应用的过程中,咱们发现函数计算岂但可能中咱们完满满足咱们的需要,还带来了惊喜:让咱们的开发人员只需把握几个新概念、应用几个 API,即可轻松应用平台。函数计算计划运行一段时间以来,云资源费用失去较大升高。另外,函数计算容许依据本人的业务场景制作模板,并且可供其余业务方应用,也为咱们带来意外播种。
点击浏览原文,查看新东方残缺视频讲说!