
1) 【一句话结论】
好未来数据平台(数据中台)采用分层解耦架构,分为数据采集层(多源数据接入与清洗)、计算层(实时流处理与离线批处理)、服务层(存储与数据服务),关键技术选型贴合教育行业需求(如Flink处理用户行为实时分析、ClickHouse提供分析服务),通过Kafka等标准接口实现各层解耦,支撑用户行为分析、业务报表等核心业务。
2) 【原理/概念讲解】
数据中台的核心是“分层解耦”,通过分层降低数据流转的耦合度,实现数据资产的统一管理与服务复用。架构分为三层:
3) 【对比与适用场景】
| 层级 | 组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|---|
| 数据采集层 | Flink CDC | 实时数据库变更捕获工具 | 支持高并发、低延迟(毫秒级),捕获行级变更 | 业务数据库(如MySQL)的实时数据采集 | 需配置数据库代理,可能影响数据库性能 |
| Canal | 开源数据库变更捕获工具 | 轻量级,支持多数据库,数据格式灵活 | 业务数据库的实时数据采集 | 需部署在数据库或独立服务器,配置数据库用户 | |
| Flume | 多源采集工具 | 支持多源(文件、网络、系统日志),支持数据聚合 | 日志系统、应用日志采集 | 需配置采集规则,高并发日志需分片 | |
| 计算层 | Flink | 实时流处理引擎 | 支持状态计算、窗口计算,低延迟、Exactly-Once语义 | 实时用户行为分析(如登录、学习行为) | 需配置状态后端(如Redis、HBase),处理状态一致性 |
| Spark | 批处理、交互式分析引擎 | 支持分布式计算、内存计算,支持SQL、流处理 | 离线报表(如周报、月报)、数据挖掘 | 内存占用高,需合理配置资源 | |
| 服务层 | HDFS | 分布式文件存储系统 | 高容错、高扩展,适合海量数据存储 | 数据湖(存储原始数据、中间数据) | 读取速度慢,适合批量处理 |
| HBase | 列式存储系统 | 支持实时查询、随机访问,高并发 | 实时数据存储(如用户实时行为日志) | 写入性能高,读取受列族影响 | |
| ClickHouse | 列式数据库 | 高性能分析,支持SQL,支持实时查询 | 数据仓库(分析报表、数据集市) | 需合理设计表结构(列族),优化查询性能 |
4) 【示例】
以数据采集层(Flink CDC采集MySQL用户行为数据)为例,展示流程:
伪代码示例(简化):
from flink import Flink
from flink.sink import KafkaSink
from flink.util import DataValidator
flink = Flink()
cdc = flink.cdc()
cdc.set_source("mysql", "host: localhost, port: 3306, user: cdc_user, password: cdc_password, db: business_db")
cdc.set_table("user_action")
validator = DataValidator()
validator.add_rule("user_id", "not_null")
validator.add_rule("action_type", "in_list", ["login", "study", "submit"])
sink = KafkaSink("topic: user_action_cdc")
cdc.connect(sink)
cdc.apply_validator(validator)
cdc.start()
5) 【面试口播版答案】
各位面试官好,好未来数据平台(数据中台)采用分层架构,分为数据采集层、计算层和服务层。数据采集层负责从业务系统(如MySQL数据库、日志系统)采集原始数据,常用Flink CDC(实时捕获行级变更)、Canal(轻量级多库捕获)等工具,比如从业务库实时捕获用户行为数据。计算层分为实时(用Flink处理高频数据,如用户实时登录行为分析,低延迟毫秒级)和离线(用Spark处理海量数据,如生成周报、月报),服务层用HDFS存储原始数据(数据湖),HBase存储实时数据(如用户实时行为日志),ClickHouse作为数据仓库(提供分析报表)。各层通过Kafka等标准接口解耦,实现数据资产的统一管理,支持实时与离线计算,满足教育行业用户行为分析、业务报表等业务需求。
6) 【追问清单】
7) 【常见坑/雷区】