好未来(NYSE:TAL)是一家以智慧教育和开放平台为主体,在全球范围内服务公办教育,助力民办教育,探索未来教育新模式的科技教育公司。好未来的前身学而思成立于 2003年,2010年在美国纽交所正式挂牌交易。好未来以“爱和科技让教育更美好”为使命,致力成为受尊敬的教育机构。当前,好未来已构建起从工具、平台到内容的多元化教育生态,满足从-1岁到 24岁各年龄段人群个性化学习需求。目前,好未来旗下拥有学而思素养、学而思网校、彼芯、美校、学而思国际、学而思文创出版中心、学而思大学生、妈妈帮等品牌,并战略投资了赫石少儿体能等多个品牌。集团业务覆盖素质教育、技术服务、海外教育服务、数字内容出版、教育硬件、托管服务等领域。
学而思网校,纽交所上市公司好未来旗下在线教育品牌,为6-14岁的孩子提供素质教育服务。2008年成立至今,积累了十余年教研经验和学习数据,陪伴千万孩子成长,在家长间口口相传。学而思网校首创“直播+辅导”的双师教学模式,大力投入AI和全真互联网等前沿技术,持续推动教育创新。2021年学而思网校全面升级素养体系,推出人文美育、科学创想、编程与机器人等热门素养课程。
网校实时数仓发展背景介绍
网校实时数仓1.0从2019年开始搭建,基于Kudu OLAP引擎构建,前期承载业务不多,任务量不大,运行稳定、性能也很高,比较适合前期的技术选型;自2020年后,网校进入业务快速发展期,实时开始承接更多的业务需求,包括营销域、交易域、教学域等数据域的建设以及实时大屏,随着需求增多,实时数仓任务量、数据量也不断攀升,Kudu开始遇见技术瓶颈,无法快速满足业务需求,运维难、成本贵等问题也开始凸显。
与此同时,2021年7月教育行业遭受“双减”,公司业务开始面临业务缩减以及转型等业务变化,大量学科类、无效任务空跑,造成资源的极大浪费,成本治理提升日程,开始着手调研建设成本更低的实时数仓OLAP引擎。经过市面上几款OLAP引擎的对比,最终选型Hologres,并于2022年1月开始实时数仓升级,经过半年多的成本治理以及数仓建设,网校实时数仓迈入2.0阶段,相比于1.0版数仓,更加稳定、可靠,建设成本也更低。此次升级主要是针对实时数仓的底层OLAP引擎的升级,使用阿里云Hologres替换Kudu,实现实时数仓降本增效,助力业务更加精细化增长。
实时数仓1.0支撑着网校大部分的线上数据,用于报表分析,精准营销等多个场景,其业务数据流程如下图:
整个实时数仓1.0都是基于Kudu来建设的。其背后的技术架构如下图:
根据业务的时效性,将网校的场景分为分钟级场景和实时秒级场景。
1)准实时数仓模型(分钟级):
在分钟级实时数仓中,会通过Spark/Flink对数据进行预处理后写入Kudu,并在Kudu中根据ODS、DWD、DWS分层计算,然后将数据写入ADS层的PolarDB或者MySQL,最后对接实时大屏、报表等业务。
2)实时数仓模型(实时秒级):
在实时秒级的场景中,对数据的时效性要求非常高,采用Flink+Kafka架构,DWD明细数据同时会落地一份到Kudu,DWS层计算过程中 关联Kudu维表、以及历史DWD数据来完成汇总模型构建,输出结果数据到ADS层的PolarDB、MySQL、Kafka消息队列等,最后对接线上服务。
网校实时80%左右场景,使用分钟级实现;20%场景使用秒级实时链路实现。当然也有部分场景可能使用混合链路实现,比如实时在线、出勤,Flink程序实时接入心跳明细数据到数仓DWD层,然后在DWS层进行分钟级汇总班级出勤、在线等数据,在ADS层进行数据的输出。
实时数仓1.0中,Kudu作为底层OLAP引擎,使用Impala进行数据加载、运算,当业务上量时,Kudu的技术瓶颈开始凸显,主要表现在以下几个方面:
综上,基于Kudu实时数仓,正逢“双减”,面临着业务快速变化、成本压力以及运维困难等一系列的内、外部挑战,我们迫切的希望能够找到一款OLAP产品将Kudu进行替换,解决当前遇见的各种问题,搭建一个更加简洁、易用、运维便捷、资源动态伸缩容的数仓底座。
基于实时数仓1.0的技术痛点,在对市面上的多种OLAP引擎进行调研以及对比后,我们最终选择了阿里云Hologres替换Kudu搭建网校实时数仓,即实时数仓2.0版本。
根据业务,我们梳理了对OLAP引擎的需求如下:
同时我们也对比了市面上常见的OLAP引擎,如下表所示,最终选择了Hologres为新的OLAP引擎
选择了Hologres作为实时数仓的主OLAP引擎之后,通过Hologres替换了Kudu的所有数据处理链路,同时也通过Hologres读写分离部署的方式,以只读从实例(简称从库)替换了原PolarDB/MySQL等查询引擎,以此构成了实时数仓2.0。数据链路如下:
实时数仓1.0计算在Kudu中,算完之后把结果同步到查询引擎PolarDB或者MySQL中,实时链路相对来说比较长,而且数据移动成本也很高,对实时数据的稳定性有一定的影响。
实时数仓2.0中,我们采用Hologres共享存储多实例的高可用部署方案,Hologres主实例承载数据的加载、计算,从库共享主库的所有表和数据承载数据查询,实现读写分离方案,并且从库作为实时数仓唯一的数据出口,统一数仓技术架构。这种方案的好处是减少了ADS层数据同步导出链路的维护,降低了开发成本。
Hologres的共享存储多实例的高可用部署方案如下图所示:
实时数仓2.0查询引擎统一升级切换到Hologres从库后的数据流转图前后对比如下:
同时,我们计划对外开放Hologres从库ADS层,分析师或者懂SQL的产品老师后期可通过集团T-Query平台查询工具对实时数据进行探索、分析,自满足部分临时需求,减少人工需求、释放实时数仓开发人力。
实时数仓2.0经过半年多的建设,在成本治理上取得了非常好的效果,同时基于Hologres的实时数仓架构在集团推广应用上也有比较成功的案例:
未来规划:
最后谈一谈,在Hologres使用过程中碰到一些问题以及对Hologres的期待
相信Hologres未来会变得越来越好用,变成一款功能更全面、更加强大的OLAP引擎!我们也希望通过Hologres建设出更加优秀的实时数仓,赋能更多的业务。
作者:刘标新,好未来网校实时数仓开发工程师、负责人。王洋,好未来网校实时数仓开发工程师
参考文章:
学而思网校:https://touch.xueersi.com/
实时数仓Hologres核心技术揭秘:https://developer.aliyun.com/article/779118
实时数仓Hologres共享存储实例介绍:https://help.aliyun.com/document_detail/360394.html