
Zenoh is a pub/sub/query protocol that unifies data in motion, data at rest, and computations in a single abstraction. It was designed to address the fragmentation in IoT and distributed systems where multiple protocols are typically stitched together to cover different use cases.
The protocol supports peer-to-peer, client-server, and mesh topologies that can be configured at runtime. Applications can publish and subscribe to data using path-based addressing, query stored data from geo-distributed storage backends, and register queryable endpoints that execute computations on demand.
Zenoh achieves its efficiency through a minimal wire format with as little as 5 bytes of overhead per message. It can operate directly on OSI Layer 2 for constrained networks and has implementations ranging from 300 bytes of flash on 8-bit microcontrollers to full-featured routers in Rust.
The project originated from the Eclipse Foundation and has seen adoption in robotics (ROS2 RMW implementation), autonomous vehicles, and telecommunications. It is often positioned as an alternative to MQTT for scenarios requiring peer-to-peer communication without broker bottlenecks, and as a lighter alternative to DDS for resource-constrained environments.
Zenoh and Apache Kafka both handle distributed messaging but target different ends of the spectrum.
Zenoh and Mosquitto both provide pub/sub messaging for IoT, but differ in architecture. Zenoh uses peer-to-peer by default while Mosquitto requires a central broker.
Zenoh and NATS both provide lightweight messaging with multi-language support, but differ in topology flexibility and query capabilities.