A Rust library for the rpcx microservice framework, enabling Rust functions to be exposed as cross-platform RPC services.
rpcx-rs is a Rust library for the rpcx microservice framework that enables developers to expose Rust functions as remote procedure call (RPC) services. It simplifies building microservices by providing a minimal API, support for multiple serialization formats, and integrated service discovery. The framework solves the complexity of creating cross-platform RPC services, making it accessible even for those new to distributed systems.
Rust developers building microservices or distributed systems who need a simple, efficient way to create RPC services. It's also suitable for teams requiring cross-language interoperability, such as those integrating Rust services with Go-based systems.
Developers choose rpcx-rs for its extreme simplicity—transforming Rust functions into RPC services with minimal code—and its robust feature set including service discovery, load balancing, and fault tolerance. Its compatibility with the broader rpcx ecosystem allows seamless integration with services written in other languages like Go.
rpcx microservice framework in Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The register_func! macro exposes Rust functions as RPC services with minimal boilerplate, as shown in the example code where functions like add and mul are registered in just a few lines.
Supports JSON, MessagePack, and Protobuf, allowing developers to choose serialization based on performance or compatibility needs, with configurable serialization types in the client.
Includes built-in load balancing (e.g., RandomSelect, RoundRobin) and fault tolerance modes (e.g., Failover, Failfast), providing resilience out of the box for distributed systems.
Clients can interact with services implemented in other languages like Go, leveraging the rpcx ecosystem for polyglot microservice architectures, as mentioned in the README examples.
At version 0.2.x, key features like Consul support, plugins, and comprehensive documentation are incomplete per the roadmap, making it less stable for production use.
Compared to frameworks like gRPC, rpcx-rs has a smaller community and fewer third-party tools, which can hinder integration and troubleshooting in complex projects.
Full functionality, such as dynamic service discovery, requires external systems like etcd, adding deployment complexity and operational overhead beyond the core library.