正文内容 评论(0)
12月23日,由中国计算机用户协会指导,iTechClub(互联网技术精英俱乐部)教育委员会主办的国内互联网技术领域最专业、最具影响力的大型教育科技类行业盛会“2020中国教育科技大会”在北京召开。
作业帮基础架构负责人董晓聪受邀出席本次大会,并在“运维安全——后疫情时代的在线教育挑战”分会场分享作业帮如何通过基于云原生的多云建设,破解业务发展过程中存在的稳定性、效率、成本、安全等方面问题,实现弹性、韧性、可观测、自动化、可持续的在线架构,以及通过技术改造带来的一系列收益,以真实案例深刻阐述技术变革持续推动教育产业的加速迭代发展。
以业务为导向,深入布局基于云原生的多云建设
本届大会以“新业态·新动能·新教育”为主题,互联网教育科技领域的众多专家学者、技术大咖在现场围绕中国教育科技的现状、发展、创新、变革、机遇等多方面问题展开深度剖析。作业帮作为通过充分运用新技术不断推动教育产业优化升级的领先代表,其在云原生、多云架构领域的新思考、新布局在大会现场受到各界高度关注。
目前,作业帮的核心业务主要包括作业帮主APP、作业帮直播课、作业帮口算、鸭鸭AI课、智能硬件喵喵机等多款教育产品。其中,作业帮主APP作为一款为K12学生提供全学段的学习辅导工具,目前月活用户已过亿,题库超过3亿,拍照搜题的图片识别准确率超过95%;而作业帮直播课作为一款为K12学生提供全时段在线辅导课程的产品,目前已累计服务学员超6500万,直播课APP是其学生端,在其后还有庞大的教研、教学、辅导工程体系支撑,作为一款商业化产品,拉新、转化、留存相关的营销体系也是很重要的一环。
董晓聪在演讲中表示,作业帮既有传统流量型互联网产品,也有教育全链条的产业应用,正是基于企业业务的高速发展现状,使得作业帮在稳定性、资源成本、人员效率、安全等方面面临着诸多新挑战。
“在线教育摆在我们面前不是一个个冷冰冰的UV、PV数字,而是一个个正在求知的学生,我们的稳定性一定要做到更好,所以作业帮很早就开始探索多云架构。”董晓聪指出,作业帮作为一家以业务为导向的公司,通过云原生架构,用基础设施接管业务中大量非功能逻辑,实现弹性、韧性、可观测性、自动化、可持续等特性。“基于云原生架构,解决了部署问题,我们还在此之上实现了一套可以在云之间自由迁徙的多云架构。”
容器技术部署模式升级,实现应用和资源的解耦
目前,作业帮云原生架构的全貌从大的层次来看,主要包含资源和应用两层。“虚机架构中应用和资源两层耦合,而容器技术的出现真正实现了两者的解耦。向下,提供了CRI、CNI、CSI、device plugin等一系列资源抽象能力;向上,实现运行环境的编排调度。”董晓聪表示。容器技术带来的部署模式升级,从根本上解决了虚机模式下的混部、资源碎片多种问题。
作业帮在运行环境构建这块遵循云原生的主线原则。不仅通过每个容器一个应用,避免使用特权容器,优化构建缓存等原则,实现了稳定、安全、性能方面的要求。“我们的最佳实践,对于PHP pod而言,有一个PHP主容器,以及通过socket通信的几个边车,配置通过configMap注入,数据库密码信息由secret加密存储。Golang pod也比较类似,只是不再需要日志等边车。”值得一提的是,作业帮也把前端模块容器化,这样可以一键拉起前后端项目,大幅提高研发效率。
此外,从集群视图来看,在资源拓扑上,对于CPU和异构计算GPU而言,作业帮使用了常规流量+弹性部分的架构方案。同时,作业帮根据网络隔离域划分集群,根据业务领域划分NameSpace。
突破虚机架构弊端,依托云原生升级服务治理体系
在介绍了容器技术的部署、运行环境、集群等内容后,董晓聪还重点剖析了应用层的服务治理体系,作业帮在进行了彻底的云原生改造后,其服务注册发现机制已更换为coreDNS+service机制。
如何实现新老两套机制的过渡呢?我们通过将名字服务的信息同步到k8s集群,创建endpoint指向虚机的service,进而实现控制面的打通。
而从数据面来看,虚机请求容器通过使用service域名访问东西向的ingress集群实现。容器集群因为打通了数据,访问虚机使用和容器一样的链路即可。
此外,在服务感知维度,作业帮的整体调用链路从用户端的APP、H5、小程序等,到网关层,再到业务应用,最后到中间件。我们将这些链路的日志统一收集到kafka。目前kafka集群可以支撑近千万的TPS,峰值平均延时在10s内。除了性能指标外,稳定性也是作业帮的重要考核因素,通过多级缓存来保障数据不丢。在收敛了日志采集后,下游只需要订阅kafka即可,既解决了大数据日志源的问题,也解决了Logging、tracing、metrics的相关问题。监控不再需要运行在业务机器上和应用争抢资源,应用的入向和出向日志也能绘制出调用链路。
多云架构赋能在线教育新业态,四大维度收益明显
在容器技术解决了计算及其周边的存储、网络的抽象及高可用保障之后,新的挑战则是如何把多云联通起来。传统互联网应用时代,只需要把多个云厂商联通,但是在线教育新的业务形态下,作业帮则需要把主讲、辅导老师的网络环境也纳入生产体系。
为此,作业帮选择了使用了双供应商组网方案,采用BGP+ECMP实现线路负载均衡,故障秒级自动切换,由此真正搭建完毕高可用的多云网络拓扑。
在调用拓扑层面,作业帮在不同云上部署的均是全量服务,只是流量比例不同,由此实现单云内的流量闭环。
值得注意的是,作业帮在今年完成云原生和多云建设后,公司在四大维度的收益明显。一是稳定性显著提升,不再有应用间的相互影响,单设备故障的影响时长也从分钟级别缩短到秒级别。SLA从99.95%提升到99.99%。二是运维效率的大幅提高,真正将运维规范在运行环境得到了落地,扩容效率从小时级别提升到分钟级别。三是成本的优化,既有运行环境升级带来的性能提升,也有碎片的更充分利用,以及不同业务之间的资源使用互补。四是多云部署效率得到大幅度提高,从之前的月级别缩短到现在的周级别,效率提升80%以上。
在演讲最后,董晓聪也对未来提出更多展望,他表示,作业帮希望在明年和云厂商容器、EMR团队一起进一步探索更大规模的在离线混合部署,并基于operate实现中间件服务的云原生改造,借助servicemesh实现跨语言的服务感知、流量管控方案,以及在全链路压测与AIOps上进行更多新探索。