业务介绍
新东方教育科技集团定位于以学生全面成长为核心,以科技为驱动力的综合性教育集团。集团由1993年成立的北京新东方学校发展壮大而来,拥有短期培训系统、基础教育系统、文化传播系统等业务。
在互联网大潮中,新东方在IT技术上也不断重构,持续投入大数据建设,研发大数据的相关技术和应用,从而快速而精准地响应业务需求,并用数据为集团各级领导提供决策依据。新东方的大数据应用主要包括两部分:
- 企业应用端的业务场景(B端):包括交易,教学,人员等数据,数据规模为TB级。数据会被按照不同的条件和学校层级等,形成营收、教学、客服、财富人事等实时报表,为CRM系统的成千上万名业务顾问提供线索和商机的明细报表查询,同时也供各级管理人员了解业务的运行情况,辅助业务决策。
- 互联网直接面向用户场景(C端):主要为招生引流类、云教室等应用,包括网页版,App端,H5等,数据量为PB级。这部分数据记录了用户(学员和潜在用户)在新东方的教学闭环轨迹,C端数据除了生成常规的运营报表外,还会绘制用户画像,进而开发推荐系统和圈选等应用,改善C端各种应用的用户体验,进一步精细化运营。
数仓建设和应用痛点
为了满足日益增长的业务需求,集团开始投入数仓建设。在数据仓库建设的初期,以业务驱动为主。通过阿里云的MaxCompute为核心构建数据仓库,直接集成业务库数据以及WEB应用的OSS日志等,然后在数据仓库中分析业务数据并产生统计分析结果。初期的架构如下:
根据业务需要,将中小型规模的结果导入MySQL并支持数据更新。数据规模较大的只读结果则导入 MongoDB。
然后Web服务层查询MySQL和MongoDB并向用户提供服务接口, Web服务层也可以通过Lightning加速接口直接查询MaxCompute的数据,
Lightning协议是MaxCompute查询加速服务,支持以PostgreSQL协议及语法连接访问MaxCompute数据,相比MaxCompute提供的odps jdbc接口速度要快得多。原因是后者把每次访问作为一个Map-Reduce处理,即使很小的数据量查询响应时间也要超过10秒,而 Lightning能将延时降到百毫秒内,满足业务结果报表的展示需求。目前Lightning服务进入服务下线阶段,新的加速服务由Hologres加速集群替代。
使用这套架构可以在较短的时间内满足报表开发、用户画像和推荐服务等需求,为新东方的日常运营和招生引流提供较好的数据支持。但是随着业务的开展,这套架构越来越难以满足用户的需求,主要体现在:
- 实时性,业务希望能够达到1分钟级甚至秒级的实时性,而使用MaxCompute只能完成批量处理,一般只能提供分钟级(一般5分钟以上)的延时
- 来自Web服务层的高并发查询,MaxCompute的大数据量查询只能支持到100左右的QPS,满足不了来自C端应用的高并发查询
- 复杂逻辑的大数据量分析和Ad-hoc查询,随着分析数据迅速从数百G上涨到TB级,在多个数亿行以上的数据进行复杂报表开发,单实例MySQL难以支持;而MongoDB无法使用标准的SQL进行复杂查询,同时MongoDB本身复杂的查询业务,开发效率很低。
- Lightning接口虽然支持标准的SQL并且某些场景上速度比较快,但是Lightning开始逐渐下线,需要找到替换的方法。
实时数仓选型
要解决以上的业务痛点,就需要找到能满足实时数仓建设需求的产品。大数据团队调研了多种实时数仓方案,基于新东方的数据和应用特点进行选型,方案比对如下:
产品 | Ad-hoc查询 | 高并发支持(QPS) | SQL支持 | TP(交易)支持 | 与MaxCompute/Flink集成 | 文档和技术支持 |
---|---|---|---|---|---|---|
ClickHouse 20.1 | 支持PB级以上 | 默认支持100的并发查询,qps取决于单个查询的响应时间 | 单表查询支持较好,复杂报表查询支持较弱 | 通过mutation支持update,较弱 | 支持 | 文档丰富,社区支持较好 |
Doris 0.9 | 支持PB级以上 | 数百 | 兼容MySQL | 不支持 | 通过兼容MySQL与MaxCompute集成,与Flink的集成 不明确 | 文档和社区都较差 |
Hologres 1.1 | 支持PB级以上 | 数万以上 | 兼容PostgreSQL | DDL支持 | 与MaxCompute直接在存储层集成,并且都兼容PostgreSQL,提供Flink Connector集成 | 阿里在线文档和技术支持 |