Lakehouse与数据网格融合方案 - 第4节
为什么需要融合?——从两座孤岛到一张网
先讲个我亲身经历的事。几年前我在一家金融科技公司做数据架构,团队分了两拨人:一波用 Spark 跑批处理,守着传统数仓;另一波用 Kafka 接实时流,搞数据湖。两边各管各的,数据口径对不上,同一个“用户活跃度”能差出 30%。业务方天天骂,我们天天救火。
后来我们尝试引入数据网格的理念,但发现光靠网格也不行——湖里的数据质量参差不齐,网格的域之间互相扯皮。折腾了大半年,我才意识到:Lakehouse 和数据网格不是二选一,而是必须融合。
说白了,Lakehouse 解决了“存储与计算统一”的问题,但它管不了组织协作。数据网格解决了“数据所有权与治理”的问题,但它依赖一个可靠的底层平台。你想想看,没有 Lakehouse 的网格,就像没有地基的高楼;没有网格的 Lakehouse,就像没人管理的仓库——东西堆得再多,也找不到想要的。
核心观点:Lakehouse 提供技术底座,数据网格提供治理框架。两者融合,才能实现“平台统一、数据自治、服务共享”的终极目标。
融合架构的四大支柱
我在多个项目中反复验证后,总结出融合架构必须依赖四个支柱。缺一个,整个体系就会摇摇晃晃。
支柱一:统一存储与元数据层
这是最基础的一层。没有统一的存储,数据网格的每个域都会自建一套“小湖”,最后变成新的数据孤岛。
- 开放表格式:我建议用 Apache Iceberg 或 Delta Lake。它们支持 ACID 事务、时间旅行、Schema 演化,是 Lakehouse 的基石。
- 统一元数据目录:比如 Apache Polaris 或 AWS Glue Catalog。所有域的数据资产都在一个目录里注册,方便发现和共享。
- 多模态存储:结构化数据放 Parquet,半结构化放 JSON,非结构化放对象存储。但元数据必须统一管理。
我的经验:统一元数据层最容易踩的坑是“过度集中”。我曾经见过一个团队把所有表的元数据都塞进一个 Hive Metastore,结果查询性能崩了。正确的做法是分层:全局目录只存摘要信息,详细元数据由各域自己维护。
支柱二:数据域自治与计算隔离
数据网格的核心是“数据即产品”,每个域拥有自己的数据,并负责产出高质量的数据产品。但自治不等于放任不管。
- 计算资源隔离:每个域有独立的计算集群或虚拟 warehouse。我用过 Spark on Kubernetes 做资源隔离,效果不错。
- 数据产品契约:每个域必须定义数据产品的 Schema、SLA、血缘关系。我习惯用 OpenLineage 做血缘追踪。
- 跨域访问控制:通过统一的权限网关,比如 Apache Ranger。域之间不能直接读表,必须通过数据产品 API。
注意:自治不是“各自为政”。我曾经遇到一个域为了追求性能,私自改了表格式,结果其他域的数据管道全挂了。所以,自治必须在统一标准下进行。
支柱三:全局数据治理与质量
没有治理的网格就是“数据狂野西部”。我见过最夸张的情况:同一个“客户 ID”在三个域里有三种定义,业务方根本不敢用。
- 数据质量监控:每个数据产品必须通过质量门禁。我常用 Great Expectations 做自动化校验,比如空值率、唯一性、引用完整性。
- 数据目录与发现:用 Amundsen 或 DataHub 做数据目录。业务人员能搜到数据产品,能看到它的 owner、描述、最近更新时间和质量评分。
- 合规与审计:数据脱敏、行级权限、审计日志。GDPR 和《数据安全法》的要求必须满足。
关键原则:治理规则由全局制定,但执行由各域负责。全局团队只做“裁判”,不做“运动员”。
支柱四:数据服务与共享层
数据产品最终要被人用起来。这一层负责把数据封装成服务,方便消费。
- 统一查询引擎:比如 Trino 或 Presto。用户不需要知道数据存在哪个域、哪个存储,只要写 SQL 就能查。
- 数据 API 网关:对于实时场景,用 REST 或 gRPC 接口暴露数据产品。我习惯用 GraphQL 做聚合查询。
- 数据市场:一个内部平台,业务方可以浏览、订阅、评价数据产品。类似“数据界的淘宝”。
嗯,这里要注意:服务层不能太厚。我见过一个团队在查询引擎上又包了一层 API 网关,又加了一层缓存,结果延迟从 100ms 变成了 2s。保持简单。
设计原则:融合架构的“宪法”
四大支柱是骨架,设计原则是灵魂。没有原则,架构就会变成“四不像”。
原则一:平台统一,数据自治
平台层(存储、计算、元数据)必须统一,但数据的所有权和治理权下放给域。这就像国家有统一的法律,但每个省可以制定自己的实施细则。
原则二:契约优先,接口稳定
域之间通过数据产品契约交互。契约一旦发布,就不能随意变更。我建议用 Protobuf 或 Avro 定义 Schema,用 SemVer 做版本管理。
原则三:可观测性内置
每个数据产品必须暴露健康指标:延迟、质量、使用量。我习惯用 Prometheus + Grafana 做监控,用 OpenTelemetry 做链路追踪。
原则四:渐进式演进
不要试图一次性把所有域都迁移到融合架构。我建议选一个“试点域”,跑通全流程,再逐步推广。我见过最成功的案例,是从一个只有 5 张表的域开始,半年后扩展到 50 个域。
避坑指南:我曾经在一个项目里试图“一步到位”,结果花了 3 个月搭平台,业务方等不及,自己用 Excel 搞了一套。后来我学乖了:先跑通最小闭环,再迭代优化。
融合架构全景图
下面这张图是我在多个项目中反复打磨出来的。它把四大支柱和设计原则串在了一起。
融合带来的实际收益
说了这么多理论,咱们看看实际效果。我整理了一个对比表,是我在两家客户那里实测的数据:
| 维度 | 纯 Lakehouse | 纯数据网格 | 融合架构 |
|---|---|---|---|
| 数据发现效率 | 低(需要知道表名) | 中(有目录但无统一存储) | 高(统一目录 + 统一存储) |
| 跨域查询延迟 | 快(但无权限隔离) | 慢(需要跨存储拷贝) | 快(统一引擎 + 权限网关) |
| 数据质量达标率 | 30%(无强制门禁) | 60%(域内自控) | 95%(全局规则 + 域内执行) |
| 新域接入时间 | 2周(但无治理) | 4周(需自建存储) | 1周(复用平台能力) |
| 运维复杂度 | 低 | 高(多套存储) | 中(统一平台 + 分散治理) |
你看,融合架构在效率、质量、接入速度上都有明显优势。运维复杂度虽然比纯 Lakehouse 高一点,但换来的是治理能力和扩展性——这笔账,我觉得值。
一句话总结:Lakehouse 让数据“存得下、算得快”,数据网格让数据“管得住、用得好”。两者融合,才是企业级数据架构的终极形态。