实时数据中心建设思路与企业实践
这是我参与「第四届青训营 」 笔记创作活动的第15天
1.企业数据架构
企业整体数据架构:基础引擎、数据集成/生产/服务、开发和治理工具
计算/存储引擎:
- Flink、Spark、ClickHouse、Doris、Kafka、Hive...
数据集成:
-
业务数据收集(数据库CDC、业务日志等)、Flink Connector体系
- 数据库CDC数据流向:业务数据库->数据系统
- 业务日志数据Log收集数据流向:client/server log -> 数据系统
- 系统间同步传输: 基于Flink丰富的connector体系 (数据系统内)
数据生产:
- 实时和离线生产pipeline (数据系统内)
- 数据流向:原始数据 -> 数据处理pipeline
数据服务:
- 统一数据服务架构(数据系统->业务系统)
- 数据流向:数据系统 -> 业务系统
数据治理:数据质量、数据安全、数据生命周期...
数据开发:大数据开发工具套件、发布运维工具、元数据管理工具...
2. 数据中心案例
本案例以房产业务为例讲述数据中心建设
- 以房产业务举例说明数据中心建设目标和要求
- 房产业务介绍:房产服务平台、经纪人、客户
- 数据中心核心指标分析:供需、过程、结果
- 数据中心查询要求:查询条件、数据结果、技术要求
-
房产数据中心
- 供需、过程、结过等数据
- 数据查询的要求:查询条件、数据展示,技术要求
3. 实时数据生产
3.1 数据分析:
-
案例生产方案分析:数据探查、明确指标口径和产出粒度、生产架构、计算难点
- 用户想要什么数据,根据业务场景,数据库设计进行处理
-
数据探查:分析数据信息是否齐全,即基于原始数据计算指标可行性
- 数据生产可行性,生产逻辑
3.2 计算分析
-
目标:开发效率、资源成本、数据质量
-
生产计算架构:Lambda架构、全量计算效率Flink:用实时引擎来计算所有的数据,确定合适的生产架构方案
目标 Lambda架构 全量计算架构 开发运维效率 效率低;存在实时离线开发任务和merge逻辑 效率高;只存在一套实时任务 资源效率 计算资源占用高:离线全量(例行任务)+ 实时增量 状态存储成本相对高;全量首次冷启动+增量 数据质量,实时,准确 符合要求 符合要求
-
数据源获取:全量能力
- Hybrid Source(逻辑全量表,hive+kafka,成熟存储方案)
-
计算:正确、效率,核心是算子选择+优化
-
正确
- 处理更新/重复:rownumber + retract机制
- 乱序:join reorder
-
效率:
- 实时性换效率:Minibatch(聚合,join)
-
质量:稳定性监控、数据监控
- 任务稳定性:消费LAG、JVM、资源、算子
- 数据正确性:和离线比对、趋势比对、异常值占比
-
-
计算引擎:讲述流计算核心业务问题解决方案
- Hybrid Source:nightlies.apache.org/flink/flink…
- Dynamic Table&Retract机制:nightlies.apache.org/flink/flink…
- Minibatch优化:nightlies.apache.org/flink/flink…
- Catalog相关:nightlies.apache.org/flink/flink…
3.3 数仓建设
- 数据复用,减少重复开发
-
实时数仓:数据仓库、数仓分层(ODS、DWD、DWS、APP)...
- 数据分层:数据复用,减少重复开发
- 数据管理:格式、元数据
4. 数据服务
- 整体架构:查询引擎、查询优化和执行、稳定性、元数据
4.1 引擎选择
- redis:指定key,查询value,类似于hashMap
- clickHouse,Apache Doris,进行分析join、Log
-
如何更快的查询
-
原始信息筛选和关联效率,单表筛选够不够快,信息关联度快否
- 根据日期快速筛选
- primary key 查找
- 原始信息关联 - io 优化
- 执行计划优化:RBO、CBO
- OLAP引擎索引方案
-
计算处理效率,注意聚合函数的使用
- 计算向量化
-
只关注目标所需数据,不需要的信息不关注
- select from; 行会有大量的io,列存直接取出对应的列文件
-
-
应用层优化
-
预关联:原始信息关联
- 宽表构建,Local Join
-
预计算:提前聚合到特定力度
- 提升信息密度:bit化、bitmap
-
-
查询稳定性
- 熔断:设定触发侧罗,触发直接返回失败
- 限流:根据出巡客户端,借口等配置查询限额
- 降级:主备存储/服务集群,降级预案
- 元数据管理:指标口径管理、查询生成
总结
整体上了解企业数据平台架构,围绕一个数据中心案例,学习了实时数据生产和数据服务的实践方案。