替换 ClickHouse,查询并发提升 7 倍,高途教育基于阿里云 SelectDB 构建秒级实时报表

一次实时数据链路丢数排查:从 MQTT 队列积压到 SQL 统计开销 本文通过一次实时数据链路压测,排查了从MQTT到ClickHouse的端到端数据丢失问题。核心方法是为每条消息添加序号,建立独立观察点(MQTT订阅端、Kafka消费者),结合转发服务阶段统计与线程栈分析,定位到下游处理速度不足源于Druid SQL合并统计的高开销。优化措施包括关闭SQL合并、扩容代理队列、增强生产侧失败处理,并验证15分钟内实现全链路对账一致,显著缓解积压与丢包。关键收获:数据可对账、明确各阶段“成功”定义、关注客户端队列状态。 阅读详情

导读

高途教育引入阿里云 SelectDB 替换 ClickHouse、MySQL 作为核心分析引擎,统一支撑续班与行课实时分析等核心业务。通过阿里云 SelectDB MPP 架构与向量化查询引擎,结合 SelectDB 倒排索引、Bloom Filter 等丰富索引机制,实现亿级数据量秒级多表关联查询,在 700+ 高并发查询压力下 P99 延迟低于 200ms,稳定满足核心报表 2s 内响应,有力支撑高途教育业务向 "数据驱动运营" 转型。

业务背景与需求

高途教育科技集团(NYSE:GOTU,以下简称高途教育)是一家兼具教育基因和科技驱动力的科技教育公司。目前,高途集团的业务涵盖了面向中小学生、大学生与成人、出国留学人群咨询和学习的产品和服务,以及以内容和文化为内核的直播电商等业务。

本文主要介绍续班场景实时大屏及行课场景中工作台的报表分析。 在续班场景,高途教育通过续班大屏实时整合全国区域及课程品类的续班数据,为管理层与一线人员提供实时、动态的续班数据洞察,以驱动资源精准调配与潜力课程识别。在行课场景,高途教育需将数据分析大屏嵌入至教师、运营、管理者等多角色工作台,为每个角色实时提供高度定制化的行课数据视图,支撑教学质量和全流程优化。为满足双场景需求,数据分析平台具备以下能力:

  • 高并发访问能力:在续班期间,支撑全部一线员工随时随地、并发访问实时续班大屏,确保信息全员同步,打破地域限制。在行课期间, 保障所有角色在日常工作中能够流畅访问数据工作台,确保业务无缝进行。
  • 多表 Join 关联查询能力: 支持跨业务数据表 Join 关联查询,快速生成适配不同角色的专属报表视图。
  • 实时数据更新能力:由于 TP 库中数据持续更新,因此要求分析系统具备实时数据更新能力。实现大屏与工作台数据的秒级刷新,确保大屏展示的续班数据与工作台展示的行课数据即时反映最新业务动态,为快速决策提供数据基础。

业务挑战

在支撑关键业务场景的数据分析能力上,高途教育过去选择了 ClickHouse 和 MySQL 组合。在续班场景中,由于该场景对查询响应延迟以及数据实时性要求高,高途教育选择了 ClickHouse,业务上仍然面临两个挑战。

  • 查询并发能力低,服务能力受限:ClickHouse 高并发处理能力有限(仅支持约 100 QPS),导致实时报表访问受限,仅开放给管理人员和现场电视。一线人员只能在特定位置通过电视查看数据,若不在同一工区或楼层,无法实时感知续班数据变化。
  • 报表维度单一,缺乏个性化分析支持,使用场景受限:系统在处理多表关联复杂查询时效率低下,仅能提供预设的单一维度报表,难以根据不同岗位(如管理层、运营、销售)提供差异化的分析视角,进而导致前线业务场景使用受限。

在行课场景中,由于 ClickHouse 无法支撑 2B 业务所需的高并发访问,系统最初采用了基于 MySQL 的定制化数据方案。各类报表需经过 ODS → DW → DM 的多层数据加工,再按业务场景进行定制化聚合开发。业务上遇到了数据定制流程复杂、响应慢、灵活性差的挑战。具体问题包括:

  • 高度耦合的加工链条:每一张报表都需要经过 ODS → DW → DM 的多层数据加工过程,一旦有字段、逻辑或口径的调整,不仅需要同步修改各层数据加工逻辑,还会影响多个报表,造成修改成本高、风险大。
  • 开发效率低,维护复杂:展示层的变更往往涉及前后端联动开发,不具备低成本快速迭代能力,无法支撑业务快速变化下的灵活调整需求。
  • 难以支撑多角色、差异化的数据需求:报表设计通常以固定场景为主,缺乏统一的数据服务能力,不易复用,难以满足不同岗位对数据的个性化分析需求。

基于阿里云 SelectDB 升级实时报表

明确架构瓶颈后,高途教育联合阿里云与飞轮科技,选定基于 Apache Doris 内核的 阿里云 SelectDB 作为新一代实时分析引擎,实现 ClickHouse 与 MySQL 的全面替代,构建统一的实时分析平台。

阿里云 SelectDB 优势

SelectDB 凭借以下核心优势,精准匹配了高途教育对 "高并发、高灵活性、低延迟" 的分析需求:

  1. 高并发支撑能力:支撑千级别并发访问:通过倒排索引、ZoneMap、Bloom Filter 等多级索引机制,结合分区分桶技术,SelectDB 能在查询时快速裁剪无关数据,显著降低计算与 I/O 负载,稳定支撑成千上万用户同时在线访问。
  2. 秒级复杂查询响应:彻底解决多表 Join 性能瓶颈:SelectDB 支持秒级响应的多表 Join 与宽表查询,显著优于 ClickHouse 的复杂查询能力,满足实时业务对多维数据灵活组合分析的需求,提升业务场景适配性与数据服务能力。
  3. 实时更新能力:支持实时写入与高性能查询并存:借助 Unique Key 模型,SelectDB 实现了强一致语义下的实时更新与查询能力,在数据频繁变更场景下依然保持极高的查询性能,相比 ClickHouse 提供更强的数据鲜活性支持。
  4. 企业级可运维性:降低数据平台使用门槛:SelectDB 提供白屏化运维界面,内建 SQL 审计与查询追踪能力,大幅降低数据平台的运维与使用成本,支持开发人员专注业务逻辑开发,提升整体数据交付效率。

基于阿里云 SelectDB 数据架构

基于阿里云 SelectDB 数据架构.png

实时数据使用 Flink 快速写入 SelectDB,离线数据使用 SeaTunnel 写入 SelectDB。SelectDB 作为查询的统一入口,BI 通过查询入口接入。

阿里云 SelectDB 实践和调优

  • 功能适配性:阿里云 SelectDB 集群管理、账号管理、实时监控预警、数据安全管理等企业级功能能够覆盖高途教育对集群的功能需求。此外,阿里云 SelectDB 逻辑视图功能实现计算与存储解耦,当业务需新增分析维度时,仅需改写视图 SQL,无需重构底层数据管道,解决行课场景 MySQL 数据库 "牵一发而动全身" 的耦合问题。
  • 使用倒排索引:基于阿里云 SelectDB MPP 架构与向量化查询引擎,对亿级订单、课程、用户表进行实时多表 Join。针对高频查询字段启用阿里云 SelectDB 倒排索引功能,结合 Bloom Filter 预过滤无效数据,在 700+ 高并发查询压力下 P99 延迟低于 200ms,稳定满足核心报表 2s 内响应,相比 ClickHouse 性能提升 7 + 倍。

实践中我们积累了部署与查询过程中的调优经验,特此分享:

  • 尽可能使用原字段形式进行过滤:比如过滤时间字段,尽量使用原格式进行过滤,不要针对时间格式转化后过滤,否则扫描量裁剪的效果不佳。
  • 避免使用 Not In 的语法,Not In 的语法会进行全表的扫描,涉及计算的数据量较大,CPU 占用率也随之上升,集群稳定性易受到影响。
  • 尽可能将不同业务线的查询拆分为不同的集群,隔离资源的互相影响。
  • 这部分放到 SelectDB 中,实时任务的原因主要是,我们一开始的维表在 HBase 中,但是由于维度更新原因,我们把这部分放到了 SelectDB 中。

阿里云 SelectDB 实践和调优.png

应用收益

阿里云 SelectDB 有效支持了高途教育续班及行课期间的实时报表场景,为高途教育带来了分析性能提升、架构灵活性突破、成本降低等收益:

  • 分析性能提升 :在 700+ 高并发查询压力下 P99 延迟低于 200ms,稳定满足核心报表 2s 内响应。全部一线人员可秒级获取动态续班与行课数据,查询并发相比 ClickHouse 提升 7+ 倍,大幅提升运营决策、一线支持效率。
  • 架构灵活性突破:实现查询逻辑与数据模型解耦,解决行课场景原 MySQL 架构需求变更需全链路改造的痛点,需求迭代周期大幅缩短。通过阿里云 SelectDB 多表 Join 查询能力,提升开发和交付效率,数据使用更为灵活。
  • 整体成本降低 :阿里云 SelectDB 白屏化运维、SQL 审计和追踪,大幅简化高途教育运维开发流程,提升 70% 运维效率。此外,阿里云 SelectDB 统一了高途教育分析引擎,大幅降低多分析引擎导致的资源浪费。
【WRF-Chem工具】anthro_emiss 详解:生成人为排放数据 anthro_emiss 详解:生成人为排放数据 阅读详情

相关推荐

新买的USB无线网卡插上没反应?保姆级排查指南:从设备管理器到网络列表

本文提供USB无线网卡无法识别的全流程排查手册,涵盖硬件检测、驱动管理和网络配置三大维度。重点解析设备管理器中的设备状态诊断和驱动解决方案,特别适用于Realtek芯片的无线网卡(如RTL8188GU、RTL8812BU等),帮助用户快速解决网卡插上无反应的问题。

weixin_29876033的博客 498

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 407

强化学习Q值迭代的几何视角:从策略区域到快速收敛

在强化学习中,Q值迭代是求解最优策略的核心算法,其理论基础建立在贝尔曼不动点定理之上。该算法通过迭代更新Q函数,使其逐步逼近最优值函数。从几何视角看,整个Q函数空间可被视为一个高维流形,每个Q函数对应流形上的一个点,而贝尔曼最优算子则定义了流形上的变换轨迹。理解这一几何结构,特别是由策略超平面划分出的凸多面体区域,对于分析算法的收敛行为至关重要。在实际工程中,传统Q值迭代可能在高维或稀疏奖励环境下收敛缓慢,甚至陷入策略高原。通过引入策略区域缓存与自适应学习率等几何启发方法,可以更高效地导航策略空间,加速策略

weixin_30444111的博客 317

Elasticsearch ingest pipeline 被禁用之后:性能代价、安全治理与数据入库时间的四种替代方案

生产环境为什么禁用 Elasticsearch ingest pipeline?写入路径同步执行的开销、Painless 脚本的安全治理是根因;而 _ingest.timestamp 出不了 pipeline,ES 8/9 也没有原生入库时间字段。本文给出四种替代方案:采集端注入时间戳、bulk 响应后回写、refresh=wait_for 近似、最小 set pipeline 白名单,附选型对比与踩坑清单。

Sayai的专栏 341

Linux内核4.14版本——drm框架分析(1)——drm简介

drm框架分析

yangguoyu8023的博客 1万+

Mac Studio M5 Ultra本地部署大模型实战:从内存原理到Ollama开发工作流

大模型推理的性能瓶颈往往不在算力,而在于内存能否装下整个模型、带宽能否持续供得上。Transformer架构每生成一个token都需要把权重完整扫一遍,决定了这本质上是内存密集型任务——统一内存架构因此成为本地部署的关键通路,超大容量与高带宽并行,让“装得下”和“跑得快”同时成立。模型量化技术(如Q4_K_M)则是另一项决定性软件策略,用轻微精度损失换取更低的硬件门槛,也是Ollama本地部署从7B到70B各类模型必做的前置功课。当本地推理服务跑起来后,借助VS Code等开发工具的OpenAI兼容API接

weixin_29043895的博客 446

Day3 - Flink 窗口与时间语义:从滚动窗口到迟到数据处理

水位线是一个特殊的时间戳,代表"小于这个时间戳的数据都已经到齐了比如水位线推进到 10:00:05,就告诉 Flink:10:00:05 之前的数据应该都到了,如果还有晚于这个时间到达但时间戳小于 10:00:05 的数据,就是"迟到数据"。窗口大小固定,窗口之间不重叠,数据只属于一个窗口。时间线: 0 10 20 30 40 50 60窗口1: [--------)窗口2: [--------)窗口3: [--------)窗口4: [--------)

YEEMOLY的博客 227

SWIPT技术(无线通信携能技术)的简介与架构——(后续补充无人机SWIPT方向)

SWIPT一、SWIPT(无线通信携能)技术简介1.1、组成:1.2、与传统无线通信的区别:1.3、SWIPT 的集成接收器架构设计1、单独的接收器2、TS架构——时间开关(Time switching,TS)3、PS架构——功率分流(Power splitting,PS)4、天线开关接收器主要两种架构的区别参考文献SWIPT的发展 一、SWIPT(无线通信携能)技术简介 SWIPT(Simultaneous Wireless Information and Power Transfer )是各种WPT技术

Blue 1万+

智能问诊的流程

本文介绍基于FastAPI构建的医疗多Agent系统MediAgent,通过症状分析、诊断推理与治疗建议等模块协同,实现从问诊到报告生成的完整工作流。系统采用前后端分离架构,结合MySQL、RabbitMQ与Docker实现工程化部署,支持异步化验结果接入。虽当前状态暂存于内存,但已具备可扩展性,未来可通过Redis持久化、消息队列联动及医疗安全机制完善,应用于慢病管理、辅助决策等场景,推动AI在医疗流程中的落地应用。

Joey 的工作空间~ 417

302.QoS实现工具之MQC

QoS 技术可以对网络中报文进行分类处理,根据优先级提供不同的差分服务,如何实现这种差分服务呢?我们有一种强大的配置方法 - 模块化 QoS 命令行 MQC(Modular QoS Command-Line)。下面就来介绍一下 MQC。

迷逝 1391

WiFi偏门协议(四):增强的传输机制802.11aa

区分Unicast和Multicast的优先级,以及设定不同的重传次数,以细化EDCA机制。 SCS(StreamClassification Service) 如上图,在VI,VO内各自又增加了一个queue, 对应不同的MAC header。VI和VO内的两个queue可以分别对应UC和MC。这样就提供了同一个AC内的更细粒度的优先级区分。当然还可以使用Drop Eligibility Indication子域来区分不同的重传次数。 改善Multicast数据传...

reekyli的专栏 1790

行业研究报告采购避坑指南:从需求拆解到机构选型的实操逻辑

先说结论:买行业研究报告这件事,坑不在“哪家便宜”,而在“你拿到的数据能不能回答你的问题”。作为一个经常帮企业做采购决策的顾问,我见过太多花了几万块买回一堆PDF却用不上的案例。这篇文章把采购流程拆成五步,每一步告诉你该看什么、该避什么,尽量帮你少交学费。

2601_96585642的博客 221

2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题5)-网络部分解析-附详细代码

2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题5)-网络部分解析-附详细代码

bfq05234214的博客 415

代购系统改造:服务无状态化、分级隔离

代购系统因链路长、流量脉冲、写放大等特点,高可用设计需聚焦“消灭单点”。通过服务无状态化、分级隔离、数据库与消息队列容灾、监控告警与混沌工程验证,实现MTTR降至3分钟内,支付成功率超99.9%。核心经验:缓存雪崩防于过期策略,跨地域用短TTL GeoDNS,支付降级必须幂等。高可用本质是持续检验“无单点”假设的闭环体系。

2601_95706522的博客 161

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ubuntu安装hadoop系统

本文详细介绍了基于VMware克隆虚拟机搭建三节点Hadoop分布式集群的全过程:使用同一Ubuntu镜像克隆出master、worker1、worker2三台虚拟机,依次配置主机名、固定IP(如192.168.82.10/11/12)、SSH服务及免密登录,确保节点间网络互通。随后安装Java,下载配置Hadoop并分发至各节点,最终初始化启动集群,验证其存储与计算功能,实现高效的大数据环境部署。

qq_43592674的博客 319

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Elasticsearch:稠密向量字段类型

dense_vector字段用于存储稠密向量,支持k近邻搜索(kNN),默认启用索引并使用余弦相似度。可接受浮点数数组或Base64编码字符串输入,支持自动量化(如int8、int4、bbq)以降低内存占用。通过index_options配置索引类型(如hnsw、bbq_disk),并可启用过采样与重新评分提升精度。向量默认不存储于_source中以节省空间,可通过fields或_source.exclude_vectors显式返回。支持bit向量及GPU加速索引,适用于高维向量场景。

Elastic 中国社区官方博客 258

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【消息队列】ACK确认了什么:消息队列可靠投递的完整链路

本文剖析消息系统中ACK机制在生产者、Broker、消费者三段链路中的作用,指出即使三段确认均正确配置,系统仍只能提供“至少一次”可靠性。原因在于重试、崩溃、重平衡等场景会导致重复投递,而“恰好一次”需依赖业务侧幂等性保障。关键结论:ACK仅保证不丢,不重复需靠唯一键、去重表或状态机等业务设计实现。

2503_94545876的博客 678

Day2 - Flink DataStream API 与转换算子:从 Source 到 Sink

实现或@Override// 发射数据@Override// 使用用自定义逻辑聚合,比 sum/min/max 更灵活。// 求每个用户的总消费金额reduce 的输入和输出类型必须相同。Flink 会把满足条件的相邻算子合并成一个 Task,在同一个线程里执行,减少线程切换和网络开销。合并条件上下游并行度相同;分区策略是 Forward;没有被用户手动断开。

YEEMOLY的博客 138

kafka指定分区消费

【代码】kafka指定分区消费。

hy_208的博客 52

数据科学与大数据技术专业有哪些比较好考的证书?

如果目前还没有明确方向,建议先完成Python与SQL基础学习,再选择一张与目标岗位最接近的证书。不要为了增加简历条目,在同一阶段同时准备多个不同技术方向。以数据分析方向为例,可以参考2025版CDA证书大纲安排基础学习:先掌握业务数据结构、数据库应用和统计分析,再进入指标体系、看板和用户分析。具备一定项目经验后,再学习二级涉及的统计检验、模型评估及数据治理。2025版教材介绍强调了思维、技术和实践的结合,适合用于组织学习;2027年的具体考试范围、报名条件和安排,则应依据届时发布的信息制定计划。

YangYang9YangYan的博客 308

如何在用户认证系统中使用 ElasticSearch 提升

本文介绍了如何在一个典型的企业级应用——用户认证与权限管理系统内引入并运用 ElasticSearch 技术来提高查找效率并降低数据库负载压力。读者可以通过了解其基础架构原理、正确配置方式以及典型应用场景从而掌握该工具的基本用法。如果你正在寻找一种更灵活高效的检索方案用于自己的项目当中,请考虑从以下几个方面入手实践: 1. 确认是否有必要引入新的全文搜索引擎;2. 设计好适用于该项目的数据模型以及索引规则;3. 持续优化你的 DSL 查询语句并监控运行状态;

wuchangjian的专栏 168

【Kafka】零基础学习教程

Kafka 是一个「只能追加、可以重复读」的分布式日志,不是传统意义上「读完就删」的队列。生产者写进去,消费者按自己的进度读。每个消费组自己记一个 offset(读到哪了),互不干扰。Kafka 快,是因为顺序写磁盘 + 批量 + 零拷贝;Kafka 难,主要难在「分区、副本、消费组」这几个概念和运维。Kafka 是一个分布式的、只能追加的日志(append-only log),生产者往里写,消费者按自己的进度读,消息按策略保留而不是读完就删。分布式:可以多台机器组成集群,水平扩展。只能追加。

2503_94545876的博客 300

头部车企基于 EMR Serverless Spark 的多模态大规模打标实践

某汽车头部客户基于阿里云 EMR Serverless Spark AI Function,在分合流、红绿灯等场景中开展多模态数据处理,并将向量化结果衔接至下游数据库,为后续场景检索、样本筛选及训练数据集构建提供支撑。

科技很有意思 178

BI(商业智能)

区分【通用 BI】和【时序 / 地图 IoT 专用可视化】

160

最新大数据毕业设计选题推荐-基于大数据的蛋黄酱零售价格区域与时间多维数据可视化分析-大数据-Spark-Hadoop-Bigdata

本文介绍《基于大数据的蛋黄酱零售价格区域与时间多维数据可视化分析》系统,适用于大四计算机专业毕业设计。系统采用Hadoop+Spark进行分布式数据处理,结合Django/Spring Boot后端与Vue+ECharts前端,实现从数据采集、清洗、存储到多维分析与可视化展示的全流程。功能涵盖时间走势、规格对比、区域分析等,支持按时间、区域、规格多维度下钻,界面清晰,技术路线完整,适合作为大数据方向实践课题,提供源码及文档支持。

IT研究室的博客 360

大数据Spark(八十五):Stage及Spark计算模式

本文详解Spark中Stage的划分机制与Pipeline计算模式。Stage依据RDD宽依赖(Shuffle)划分为ShuffleMapStage和ResultStage,同一Stage内通过迭代器串联多个RDD,实现数据内存流转,减少落盘开销,提升效率。并行度由最后一步RDD的分区数决定,可通过Shuffle算子调优。结合SparkUI可直观分析性能瓶颈,是优化作业的关键基础。

Lansonli(蓝深李)的博客 650
上一篇: Apache Doris Summit 2025 圆满收官,一文速览峰会高光时刻!
下一篇: Apache Doris 自动分区:如何应对分布式环境下的复杂并发挑战|Deep Dive
SelectDB技术团队
博客等级 码龄4年 2119粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值