1、多源湖仓数据集成在小米的应用与实践分享人:孙建强现状介绍01多源湖仓架构02应用实践03未来计划04目 录CONTENTS现状介绍现状介绍数据开发平台整体架构现状介绍核心问题多源异构安全合规数据质量线上业务数据库选型多用户需求多样跨团队、跨业务、跨区域数据安全隐私时效性、准确性、完整性现状介绍数据集成服务现状介绍集成服务应用规模当前支持系统17种托管任务数5万+日均实时入湖100亿+托管数据源5千+多源湖仓架构多源湖仓架构统一元数据多源湖仓架构统一元数据以前现在借助元数据服务简化数据开发、提升效率元数据服务多源湖仓架构分库分表一键同步TableSourceScanTableSourceScan
2、WriterCommitter1.逻辑生成的SQL2.实际执行的SQL3.Flink执行图分库分表结合元数据自动完成库表拆分实现一键同步入湖shop(proxy)shop_0(physical)shop_1(physical)shop_63(physical)多源湖仓架构Binlog采集稳定性MySQL(master)MySQL(slave)MySQL(slave)MySQL(slave)MySQL主从集群DBA平台MySQL集群元数据管理服务上报数据开发平台CDC Job获取集群原数据failover DBA 团队维护集群实时状态 初次启动、失败重试自动路由可用从库 屏蔽机器替换、宕机影响自
3、动路由多源湖仓架构数据清洗、转换 支持计算字段 支持 Flink SQL 内置函数 支持平台内置 UDF支持轻量级的转换操作,实现EtL集成引擎支持注册UDF,便于实现一些合理的需求,但不对用户开发,避免用户实现过于复杂的转换逻辑多源湖仓架构隐私计算释放数据价值常态下:跨部门数据融合分析、敏感数据的分析没有隐私计算环境,导致数据不可用 内外部联合分析场景,做不到不暴露原始数据和业务细节 敏感数据一刀切,不可用应用实践应用实践数据质量监控数据质量监控数据一致性保障采集任务稳定性消息队列顺序表结构字段变更同步如何说明数据是正确的?数据质量监控采集任务稳定性l建立从库自动路由机制,屏蔽 DBA 运维
4、细节如:机器替换、从库宕机等问题,心跳失联后自动 failover 到其他节点l增加巡检,主动任务元数据异常避免代理变更,导致发现错误从库l多级监控告警CDC 任务失败告警、积压告警、流量变化告警数据质量监控同步队列MySQLDB1DB2DB3CDC JobDB1 TopicDB2 TopicDB3 TopicTable TopicTable TopicTable TopicTable Topic库级别Topic表级别Topic按表分发 多级存储 Binlog 单分区消息队列,保证顺序性 失败重试 buffer 限制为1(max.in.flight.requests.per.connectio
5、n=1)消息队列使用同步生产者多源湖仓架构Schema自动同步MySQLALTER table ADD COLUMNALTER table_gho ADD COLUMN;direct schema changeonline schema changeCDC JobstoreALTER table_gho RENAME TO table;stateBinlog Topic 利用 Flink 状态处理 Online Schema change,获取实际 Schema 变更时机 下游收到 Schema 变更时,以重启任务的方式离线完成 Schema 自动同步 重启任务前预先做一次 SavePoint
6、,避免回溯数据多源湖仓架构数据监控MySQLCDCMQ数据集成DataLakemetric-1metric-2metric-3metric-4metric-1:CDC 采集到的 binlog 数量(cdc.deserialize.count)metric-2:消息队列收到的 binlog 数量(MQ.send.count)metric-3:集成任务消费到的 binlog 数量(MQ.consume.count)metric-4:湖仓侧 connector 读到的 binlog 数量(processElement.c