Zenoh 介绍

Zenoh 协议(Zero Overhead Network Protocol)

Zenoh 是 Eclipse 基金会主导的开源、高性能、去中心化的发布/订阅/查询(Pub/Sub/Query)协议,核心是统一动态数据(流)、静态数据(存储)与分布式计算,主打零开销、微秒级延迟、跨域自适应、零配置组网。

发展历史

2008:创始人参与智慧城市项目,发现协议断层,萌生统一协议构想。

2015:创立 ZettaScale 公司,用 OCaml 开发原型。

2020:加入 Eclipse 基金会,成为 Eclipse IoT 项目。

2024:发布 1.0.0 正式版 “Firesong”,引入零拷贝等关键特性。

2024‑2025:被 ROS 2 采纳为非 DDS 的首选中间件。

一、核心定位与设计目标

全称:Zero Overhead Network Protocol(零开销网络协议)

核心范式:以数据为中心(Data-Centric),而非以连接为中心;数据与位置解耦,天然支持位置透明。

设计目标:

1. 统一 Data in Motion(动态流)、Data at Rest(静态存储)、Computation(分布式计算)
2. 极低开销(报文头仅 5 字节,比 DDS 少 90%)
3. 微秒级延迟(局域网≈10μs,接近 DDS)
4. 跨网适配(TCP/UDP/WebSocket/共享内存 SHM/LPWAN)
5. 去中心化、零配置、自发现、弹性扩展

二、核心概念与数据模型

1. Key Expression(键表达式)

- 类似 MQTT Topic,但更强大:层级化 + 通配符
  示例:robot/sensor/temp、sensor/**(匹配所有传感器)、**/status(所有节点状态)

- 所有数据与资源均通过 Key+Value 标识,Value 支持任意序列化格式(二进制/JSON/Protobuf 等)

2. Session(会话)

- 节点接入 Zenoh 网络的唯一入口
- 自动完成:邻居发现、连接建立、传输协议协商(TCP/UDP/SHM 自动切换)、链路保活

3. 三大交互模式

(1). Pub/Sub(发布/订阅)
  - 单向数据流:Publisher 发 → Subscriber 收
  - 支持可靠/尽力而为、优先级、分片/批量
  - 场景:传感器实时数据、日志广播、事件通知

(2). Query/Get(查询/响应,类 RPC)
  - 双向请求-响应:Get(Key) → 所有匹配 Queryable 节点返回数据
  - 支持多播查询、聚合、过滤、历史数据读取
  - 场景:配置读取、状态查询、服务发现、参数聚合

(3). Storage(分布式存储)
  - 节点可声明为某 Key 的持久化存储
  - 发布者离线后,订阅者仍可从 Storage 读取最新值/历史序列
  - 原生支持时间序列、分片、复制、最终一致性

(4). Liveliness(存活检测)
  - 自动感知节点上下线、会话断开
  - 场景:服务注册与发现、故障转移、集群管理

三、架构与节点角色

1. 从下到上:物理层 → 数据链路层 → 网络层 → 传输层 → Zenoh 会话层 → 应用抽象层(Pub/Sub/Query/Storage)

2. 三种节点角色

- Peer(对等节点):完全分布式,无中心,节点对等互联(Clique/Mesh 拓扑)
- Router(路由器):核心转发节点,级联构建广域网路由树,跨区域数据分发
- Client(客户端):轻量接入,依赖 Peer/Router 转发,适合资源受限设备(MCU/边缘节点)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值