eclipse-zenoh/zenoh
GitHub: eclipse-zenoh/zenoh
高性能分布式 Pub/Sub 协议,统一消息传输、存储和查询,专为低延迟边缘计算场景设计。
Stars: 2530 | Forks: 261
[](https://github.com/eclipse-zenoh/zenoh/actions?query=workflow%3ACI+branch%3Amain++)
[](https://zenoh-rust.readthedocs.io/en/latest/?badge=latest)
[](https://codecov.io/github/eclipse-zenoh/zenoh)
[](https://github.com/eclipse-zenoh/roadmap/discussions)
[](https://discord.gg/2GJ958VuHs)
[](https://choosealicense.com/licenses/epl-2.0/)
[](https://opensource.org/licenses/Apache-2.0/)
# Eclipse Zenoh
Eclipse Zenoh: Zero Overhead Pub/Sub, Store/Query and Compute。
Zenoh (读音为 _/zeno/_) 统一了运动数据、静态数据和计算。它精心融合了传统的 pub/sub、地理分布式存储、查询和计算,同时保持了远超主流技术栈的时间和空间效率。
请查看网站 [zenoh.io](http://zenoh.io) 获取更多信息及 [安装说明](https://zenoh.io/docs/getting-started/installation/)。
另请参阅 [roadmap](https://github.com/eclipse-zenoh/roadmap) 以获取更详细的技术信息。
# 仓库结构
本仓库包含以下元素:
* [zenoh](zenoh) Rust crate
该 crate 是 Zenoh 协议的主要且参考的实现。其他语言的 Zenoh 库
是此 Rust 实现的绑定,除了纯 C 实现的
[zenoh-pico](https://github.com/eclipse-zenoh/zenoh-pico) (参见下文的“语言支持”部分)。
* [zenoh-ext](zenoh-ext) Rust crate
该 crate 包含 Zenoh 的扩展组件:
* `AdvancedPublisher` / `AdvancedSubscriber` - 用于发送/接收具有高级交付保证数据的 API。
* 数据序列化支持。此序列化轻量级且适用于所有 `zenoh` 绑定,从而简化了互操作性。
* [zenohd](zenohd) router 二进制文件
Zenoh router 是一个独立 daemon,用于支持 Zenoh 网络基础设施。
* [plugins](plugins)
与 `zenohd` 中插件支持相关的 crate。
* [commons](commons)
`zenoh` 使用的内部 crate。这些 crate 不打算直接导入,其公共 API 可随时更改。
仅 `zenoh` 和 `zenoh-ext` 提供稳定的 API。
* [examples](examples)
Zenoh 使用示例。这些示例具有双重目的:它们不仅演示了如何用 Rust 编写 Zenoh 应用程序,还充当了一组用于试验和测试 Zenoh 功能的工具。
# 文档
* [Docs.rs for Zenoh](https://docs.rs/zenoh/latest/zenoh/)
* [Docs.rs for Zenoh-ext](https://docs.rs/zenoh-ext/latest/zenoh_ext/)
# 构建与运行
安装 [Cargo and Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html)。
如果您已经安装了 Rust 工具链,请确保使用以下命令将其更新到最新版本:
```
rustup update
```
Zenoh 可以使用 Rust stable (>= 1.75.0) 成功编译,但其某些依赖项可能需要
更新的 Rust 版本。`zenoh` crate 本身不会使用 "=" 锁定其依赖项,以避免冲突。
相反,我们提供了 [zenoh-pinned-deps-1-75](commons/zenoh-pinned-deps-1-75) crate,
其中 `zenoh` 的依赖项被锁定为兼容 Rust 1.75 的版本。
要构建 Zenoh,只需在遵循上述说明后输入以下命令:
```
cargo build --release --all-targets
```
`zenoh` 中有多个 feature;请在 [docs.rs](https://docs.rs/zenoh/latest/zenoh/) 上查看完整列表和说明。例如,如果要
使用共享内存,则必须显式启用它:
```
zenoh = {version = "1.5.1", features = ["shared-memory"]}
```
## 示例
[示例](examples) 可以使用 Cargo 执行,也可以直接从 `target/release/examples` 运行。使用 Cargo 运行时,请使用 `--` 将命令行参数传递给示例:
### 发布/订阅
```
cargo run --example z_sub
```
```
cargo run --example z_pub
```
### 查询/回复
```
cargo run --example z_queryable
```
```
cargo run --example z_get
```
## Zenohd Router 和 Plugins
[zenohd](zenohd) router 可以使用命令 `cargo run` 运行,也可以从 `target/release/zenohd` 运行。使用 Cargo 运行时,请使用 `--` 将命令行参数传递给 `zenohd`:
```
cargo run -- --config DEFAULT_CONFIG.json5
```
router 的目的是支持 Zenoh 网络基础设施,并使用 [plugins](plugins) 提供附加服务。
更多详情及可用插件目录请参见 [zenohd](zenohd) readme。
# 语言支持
* **Rust** - 本仓库
* **C** - 有两个具有相同 API 的实现:
* [zenoh-c](https://github.com/eclipse-zenoh/zenoh-c) - Rust 库绑定
* [zenoh-pico](https://github.com/eclipse-zenoh/zenoh-pico) - 纯 C 实现
* **C++** - [zenoh-cpp](https://github.com/eclipse-zenoh/zenoh-cpp) - C 库上的 C++ 封装器
* **Python** - [zenoh-python](https://github.com/eclipse-zenoh/zenoh-python)
* **Kotlin** - [zenoh-kotlin](https://github.com/eclipse-zenoh/zenoh-kotlin)
* **Java** - [zenoh-java](https://github.com/eclipse-zenoh/zenoh-java)
* **TypeScript** - [zenoh-ts](https://github.com/eclipse-zenoh/zenoh-ts) - 用于 [zenohd](zenohd) 中插件的 WebSocket 客户端
# 故障排除
如果遇到问题,请先查看 [此页面](https://zenoh.io/docs/getting-started/troubleshooting/),看看问题和原因是否已知。
否则,您可以在 [Zenoh Discord 服务器](https://discord.gg/vSDSpqnbkm) 上提问,或 [创建一个 issue](https://github.com/eclipse-zenoh/zenoh/issues)。标签:DDS替代, Eclipse Zenoh, IPC, JS文件枚举, Pub/Sub, RPC, Rust, 中间件, 低延迟, 分布式系统, 发布订阅, 可视化界面, 响应大小分析, 实时通信, 开源, 数据传输, 数据平面, 数据查询, 流处理, 消息队列, 物联网, 网络流量审计, 调试插件, 边缘计算, 逆向工具, 通知系统