为什么Venice值得关注:LinkedIn开源的行星级派生数据平台完整指南
【免费下载链接】veniceVenice, Derived Data Platform for Planet-Scale Workloads.项目地址: https://gitcode.com/gh_mirrors/venic/venice
Venice 是 LinkedIn 开源的派生数据平台(Derived Data Platform),专为行星级负载(Planet-Scale Workloads)设计。它用一个系统打通离线批处理、近线流式与在线服务三个世界:数据从 Hadoop、Spark、Kafka 等高吞吐渠道异步写入,再以低于 10 毫秒甚至亚毫秒的延迟对外提供在线读取,并原生支持跨地域的 active-active 复制。对于正在搭建特征存储(Feature Store)或统一批流架构的工程师来说,Venice 是目前开源领域少数经过 LinkedIn 超大规模生产验证的选择。
一、什么是 Venice:一句话理解它的定位
可以把 Venice 理解为「有状态的派生数据服务层」:
- 数据不是原始数据,而是由其他系统计算派生而来——比如聚合结果、机器学习特征、物化视图;
- 它横跨离线(offline)→ 近线(nearline)→ 在线(online)三个层面,一份存储同时承接批量全量、增量推送与实时流写入;
- 对上层应用(尤其是 AI 推理、实时推荐)而言,它就是一个「写入快、读取更快」的键值数据服务。
官方文档中将其核心能力概括为五点:高吞吐异步摄入、低延迟在线读取、跨地域 active-active 复制(基于 CRDT 冲突消解)、单地域内多集群、以及多租户弹性扩展。
二、Venice 的 5 个核心亮点:为什么值得你关注
- 🚀批流一体写入:批量全量推送、增量推送、流式写入三种模式可混用(Hybrid 混合存储),天然适配 Lambda/Kappa 架构;
- ⚡极致读性能:三种客户端可选,延迟从 < 10ms 一路降到 < 1ms 甚至微秒级;
- 🌍行星级复制:跨地域 active-active 复制 + CRDT 冲突自动消解,全球多地写入互不冲突;
- 🔄零停机更新:数据集版本化(versioned),全量推送生成新版本后原子切换,线上流量无感;
- 🧩读写解耦:写入用哪条链路,读取端 API 完全一致,业务代码无需改动即可平滑升级客户端。
这也是它特别适合做Feature Store 的有状态存储层的原因——ML 训练产出灌入 Venice,在线推理直接从 Venice 取特征。
三、Venice 写入路径:5 种数据摄入方式怎么选
Venice 的写入路径覆盖不同新鲜度与规模的需求,常见模式对比如下:
| 写入模式 | 适用场景 | 典型数据源 |
|---|---|---|
| 批量推送(Batch Push) | 全量数据集替换 | Hadoop、Spark |
| 增量推送(Incremental Push) | 大批量追加,不替换全量 | 批任务产出 |
| 流式写入(Streaming Writes) | 实时事件驱动更新 | Kafka、Samza、Flink |
| 写计算(Write Compute) | 部分字段更新、集合合并 | 任意增量/流链路 |
| 混合存储(Hybrid Store) | 批 + 流融合,可配置回溯时间 | 上述任意组合 |
几个值得记住的机制:
- 全量推送会创建一个「future」新版本在后台加载,完成后原子切换为「current」,旧版本降级为「backup」——这就是零停机更新的秘密;
- 增量推送与流式写入会同时写入所有现存版本(backup / current / future),保证多版本一致性;
- 混合存储通过配置「回溯时间(rewind time)」控制流数据在新版本上重放的起点,实现批流结果的自然融合。
相关源码与文档入口:推送任务实现在clients/venice-push-job/目录,写入模式详解可见docs/user-guide/write-apis/目录下的系列文档。
四、Venice 读取路径:3 种客户端 + CDC,延迟一路压到微秒级
Venice 最有意思的设计之一:所有客户端共享同一套读取 API(get、batchGet、compute),升级性能无需改业务代码。
| 客户端 | 网络跳数 | 典型 P99 延迟 | 状态占用 |
|---|---|---|---|
| Thin Client(瘦客户端) | 2 跳(经 Router) | < 10 ms | 无状态 |
| Fast Client(快速客户端) | 1 跳(直达 Server) | < 2 ms | 仅路由元数据 |
| Da Vinci Client(本地缓存) | 0 跳(本地读取) | < 1 ms | 有界内存 + 全量 SSD |
选择建议非常直观:
- 先跑通:用 Thin Client 两跳查询,集成最简单;
- 降延迟:换 Fast Client,感知分区直连 Server;
- 要极致:上 Da Vinci Client,数据本地化,全内存模式下可低至< 10 微秒。
此外还有CDC(变更数据捕获)客户端,以流的形式输出所有插入/更新/删除,常用于构建客户端侧索引、缓存同步与 ML 特征检索。三种客户端源码分别位于clients/venice-thin-client/、clients/venice-client/(Fast Client 在fastclient包)与clients/da-vinci-client/目录。
五、3 步快速部署:用 Docker 跑起第一个 Venice 集群
官方提供了开箱即用的 Docker 镜像,单机环境部署只需三步(详细步骤见docs/getting-started/deployments/quickstart-single-dc.md):
第 1 步:获取项目(如需要源码中的 compose 文件与示例数据)
git clone https://gitcode.com/gh_mirrors/venic/venice第 2 步:启动集群
在docker/目录下找到docker-compose-single-dc-setup.yaml,执行 compose 启动命令。容器会自动拉起 Kafka、ZooKeeper、Venice Controller、Router、Server 与 Client,并创建名为venice-cluster的测试集群。
第 3 步:建 Store → 推数据 → 查数据
进入venice-client容器,使用示例脚本完成闭环(脚本与示例数据均在docker/venice-client/目录):
# 1. 用 key/value 的 Avro schema 创建 store ./create-store.sh http://venice-controller:5555 venice-cluster0 test-store \ sample-data/schema/keySchema.avsc sample-data/schema/valueSchema.avsc # 2. 批量推送 100 条示例数据 ./run-vpj.sh single-dc-configs/batch-push-job.properties # 3. 查询验证 ./fetch.sh http://venice-router:8888 test-store 1如果想体验跨数据中心 active-active 复制,官方同样提供了docker/docker-compose-multi-dc-setup.yaml多 DC 编排文件。
六、项目结构巡礼:源码从哪里读起
Venice 采用 Gradle 多模块工程,主干结构对新人相当友好:
| 模块路径 | 职责 |
|---|---|
services/venice-controller/ | 控制面:集群、Store、版本管理 |
services/venice-router/ | 读流量入口与路由 |
services/venice-server/ | 存储与摄入引擎(数据分片所在层) |
clients/ | 各客户端与推送任务(thin / fast / Da Vinci / push-job) |
internal/venice-common/ | 核心公共库:schema、序列化、Helix 元数据等 |
docker/ | 全套 Docker 镜像与单/多 DC 部署编排 |
docs/ | 官方文档站点源码(架构、快速上手、运维手册) |
学习路径建议:先读docs/getting-started/learn-venice/architecture-overview.md建立概念,再跑一遍单 DC 快速上手,最后对照services/下三大服务源码理解「Controller 编排 → Server 摄入 → Router 服务」的完整链路。社区贡献规范见docs/contributing/目录。
七、总结:Venice 适合谁?
如果你满足以下任意一条,值得把 Venice 加入技术雷达:
- ✅ 正在建设Feature Store,需要一个承接 ML 特征的高性能在线存储;
- ✅ 受困于批流割裂,想在一份存储上同时跑批量全量与实时流更新;
- ✅ 业务需要全球多地域读写,又希望冲突消解交给基础设施自动完成;
- ✅ 追求读延迟从毫秒压到亚毫秒甚至微秒,且不想为此重写业务代码。
Venice 带来的不仅是性能数字,更是一套经过 LinkedIn 行星级负载验证的「派生数据」工程范式——这正是它开源后持续受到关注的原因。
【免费下载链接】veniceVenice, Derived Data Platform for Planet-Scale Workloads.项目地址: https://gitcode.com/gh_mirrors/venic/venice
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考