A pure Rust client library for Apache ZooKeeper, built on MIO for asynchronous I/O.
rust-zookeeper is a pure Rust client library for Apache ZooKeeper, a distributed coordination service. It provides a native Rust interface for managing distributed configuration, synchronization, and naming, enabling Rust applications to participate in ZooKeeper-based ecosystems without relying on Java clients.
Rust developers building distributed systems or microservices that require coordination, configuration management, or service discovery via ZooKeeper.
It offers a safe, idiomatic Rust alternative to the official Java client, with asynchronous I/O via MIO and plans to implement higher-level recipes similar to Apache Curator.
Pure Rust library for Apache ZooKeeper built on MIO
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Written entirely in Rust with no Java or C dependencies, ensuring idiomatic integration and reduced bloat for Rust projects, as stated in the README's 'Pure Rust Implementation' feature.
Leverages MIO for non-blocking network operations, providing performance benefits for distributed systems, highlighted in the 'MIO-based Asynchronous I/O' feature.
Aims for equivalence with the official Apache ZooKeeper Java client API, ensuring reliability and smooth integration with existing ZooKeeper clusters, per the project's stated philosophy.
Includes an implementation of the PathChildrenCache pattern for caching child nodes, a useful high-level recipe that addresses common ZooKeeper use cases, as noted in the README.
Only PathChildrenCache is implemented; other Curator-like features are planned but not available, forcing developers to build their own solutions for patterns like distributed locks, as admitted in the README.
Building and testing requires Maven for the ZooKeeper cluster, adding unnecessary complexity for Rust developers who typically use Cargo, as seen in the 'Build and develop' section.
Documentation is hosted on gh-pages and may lack depth for advanced use cases, relying on examples and community contributions rather than comprehensive guides.