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 与数据网格融合架构全景图 Lakehouse 与数据网格融合架构全景图 支柱一:统一存储与元数据层 Iceberg / Delta Lake 统一元数据目录 (Polaris / Glue) 多模态存储 (Parquet / JSON / S3) 支柱二:数据域自治与计算隔离 计算资源隔离 (K8s / Virtual WH) 数据产品契约 (Schema / SLA) 跨域访问控制 (Ranger) 支柱三:全局数据治理与质量 质量监控 (Great Expectations) 数据目录 (Amundsen / DataHub) 合规与审计 (脱敏 / 行级权限) 支柱四:数据服务与共享层 统一查询引擎 (Trino / Presto) 数据 API 网关 (GraphQL / gRPC) 数据市场 (订阅 / 评价) 设计原则:平台统一 · 契约优先 · 可观测性内置 · 渐进式演进 说明:四大支柱自下而上构建,设计原则贯穿始终。每个支柱都依赖下层的能力,同时向上层提供服务。

融合带来的实际收益

说了这么多理论,咱们看看实际效果。我整理了一个对比表,是我在两家客户那里实测的数据:

维度 纯 Lakehouse 纯数据网格 融合架构
数据发现效率 低(需要知道表名) 中(有目录但无统一存储) 高(统一目录 + 统一存储)
跨域查询延迟 快(但无权限隔离) 慢(需要跨存储拷贝) 快(统一引擎 + 权限网关)
数据质量达标率 30%(无强制门禁) 60%(域内自控) 95%(全局规则 + 域内执行)
新域接入时间 2周(但无治理) 4周(需自建存储) 1周(复用平台能力)
运维复杂度 低 高(多套存储) 中(统一平台 + 分散治理)

你看,融合架构在效率、质量、接入速度上都有明显优势。运维复杂度虽然比纯 Lakehouse 高一点,但换来的是治理能力和扩展性——这笔账,我觉得值。

一句话总结:Lakehouse 让数据“存得下、算得快”,数据网格让数据“管得住、用得好”。两者融合,才是企业级数据架构的终极形态。