作者|莫景国(新东方教育科技集团云课堂直播平台技术总监)、浩正(阿里云Serverless架构师)新东方教育科技集团定位于以学生全面成长为核心,以驱动为核心的综合性教育集团通过技术。新东方在线教育业务云课堂系统支持视频直播、转码、点播等新东方在线教育全场景。随着业务量的增加,由于直播转码和视频转码任务处理平台的峰谷特征明显,自建机房的资源利用率低成为业务的核心痛点。为了提高计算资源的利用率,进一步实现降本提效的目标,经过多次尝试,新东方走上了Serverless的实践之路。以下内容由新东方教育科技集团云课堂直播平台技术总监莫景国在云启大会上分享。如何应对不可预知的业务量?除了将云课堂平台用于自身的在线教育业务,新东方还通过美客云直播对外开放了新东方的直播能力。云课堂直播平台主要支持四种商业模式:云课堂:在线直播互动课堂,注重互动性。云点播:录播课。云直播:大型直播,主播为主。智慧课堂:软硬件结合,提供类似于双师的教育模式。直播+录播是新东方主推的授课模式。直播课程互动性强,可以实现良好的课堂互动,激发学生的学习兴趣;教师可以根据学生的课堂反馈或互动直接与学生进行互评,便于教师及时对教学环境进行微调,从而使教学过程更有针对性;通过互动和课堂问答,保证教学过程和效果,直播课程更适合低年龄段的学生。面对高中及以上的学生,录播课程更适合。录播课程的特点是学习时间灵活,学生可以自主检索学习内容,进行选择性学习。一般适合高中生。年龄段以上的学生。录播课程的优势在于可以不断对教学内容进行打磨和剪辑,制作出高质量的课程,需求量逐渐增加。最初,团队采用本地录制技术方案,将客户端的屏幕录制下来,以录制老师的直播,方便学生反复观看。但是该方法错误率高,CPU占用率高,无法灵活自定义录制UI布局。能看到什么,记录什么,这种方式只能满足低龄儿童的课程需求。今年,新东方开始对接大学生在线教育业务,对录课质量提出了更高的要求。团队开始考虑使用服务器端录制来解决问题。服务器端录制的两个核心点是现场录制和视频标准化制作。我们的商业模式决定了我们很难准确预测业务量。因此,新东方的关键技术任务是实现计算弹性。三种方案,函数计算脱颖而出针对服务端记录的问题,团队有三种可选的技术路线:直接使用ECS自建,这种方案的优点是比较灵活,但问题是计算不灵活,虽然云厂商提供了弹性分配ECS资源的API,但是要实现整个计算弹性,需要开发量巨大。同时,后续运维复杂,资源成本高,难以实现标准化。云录屏SaaS方案,该方案优点是服务标准化,研发投入少,运维工作少,但问题是灵活性差,资源成本高,难以进一步优化表现。我们希望找到成熟的SaaS厂商提供服务,快速支撑业务,但经过试用,这些平台的成熟度和技术指标都不能满足我们的需求。使用阿里云函数计算FC,我们发现阿里云的函数计算产品可以完美满足计算的弹性需求。我们只需要专注于特定的需求,在平台上发展。研发投入小,免运维,开发过程自主可控。灵活性高,可以按需使用,大大降低了使用成本,也比较容易实现标准化。但是,函数计算是一个比较新的技术,团队需要一段时间来熟悉它。经过反复比较,新东方团队选择用函数计算来解决服务端录制问题。新东方的Serverless实战录播转码,函数计算小测我们先在录播转码场景下进行了尝试。录播转码的核心需求是对直播流进行实时转码,并保存为标准的视频格式,方便后续处理使用。在这个场景中,我们第一次体验到了函数计算FC带来的弹性优势。老师进屋发起转码请求后,可以快速启动功能实例进行转码。下课后,转码任务结束,临时音视频结果上传到云存储,函数实例可以立即释放,不会浪费计算资源。有了函数计算在录播转码项目中的应用经验,我们对函数计算方案更有信心。在函数计算直播流合流转码解决方案之后,我们启动了云录制项目。使用Chrome浏览器加入直播间,浏览器界面截图。这个解决方案的关键是灵活地提供浏览器实例。因此,我们使用阿里云函数计算启动Linux容器,在Linux容器上运行Chrome浏览器,弹性提供浏览器实例。整个录制过程如下:老师进入教室后,开始推送音视频和操作白板。同时,录制平台发起录制请求,启动功能处理,开始接收课堂音视频流和白板操作,并在浏览器中展示整个课堂画面,同时进行截图。课程结束后,平台发起结束录制请求,函数计算平台将优雅终止实例。终止前,实例会将临时结果上传到云存储,然后销毁函数实例,不会造成任何资源浪费。开箱即用的可观察性我们认为可观察性对于功能计算平台至关重要。首先,业务高峰期需要启动大量的功能实例。因此,需要完整的指标、日志和痕迹才能有效监控大量实例。其次,由于函数计算实例是按需创建,任务完成后销毁,平台必须保存完整的日志,以便开发者发现问题后进行排查。我们在开发录制服务的过程中遇到的问题是:功能实例启动后,Chrome浏览器需要访问直播服务。这个时候网络出了问题,导致录制失败。后来我们使用阿里云SLS日志平台查看日志,发现Chrome浏览器内核对网络处理过于敏感。找出问题后,我们对症下药,加上重试机制,问题就解决了。超出预期,函数计算带来更多惊喜在使用函数计算技术之前,我们期待它能够在100毫秒内拉起数万个实例,定时预热彻底解决冷启动难,帮助我们承载直播转码和录屏服务的业务高峰.有效应对大规模突发上线流量,按量付费,提高资源利用率,资源成本降低20%,大幅降低运维成本,让我们只专注于业务创新。在实际使用过程中,我们发现函数计算不仅可以完美满足我们的需求,还带来了惊喜:我们的开发者只需要掌握几个新概念,使用几个API,就可以轻松使用平台。函数计算方案运行一段时间后,云资源的成本已经大大降低。另外,函数计算可以让你根据自己的业务场景创建模板,供其他业务方使用,这也给我们带来了意想不到的收获。点击阅读原文,查看新东方完整视频讲座!
