A high-performance Go RPC framework supporting two-way calling, notifications, and broadcast for effective network communication.
ARPC is a Go framework for building high-performance network applications with rich communication patterns like two-way calling, notifications, and broadcast. It solves the need for flexible, efficient remote procedure calls in distributed systems and real-time services.
Go developers building distributed systems, microservices, real-time applications (like chat or gaming servers), or any network service requiring bidirectional RPC.
Developers choose ARPC for its combination of high performance, bidirectional communication support, and extensibility through middleware and customizations, without the overhead of larger frameworks.
More effective network communication, two-way calling, notify and broadcast supported.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports two-way calling and notifications, allowing both clients and servers to initiate requests and fire-and-forget messages, as detailed in the Features table for interactive directions.
Emphasizes performance with benchmarks and optimizations like batch writes, making it suitable for real-time applications, though the README advises running tests yourself for accurate results.
Offers router and coder middleware for logging, recovery, compression, and encryption, enabling easy customization without modifying core logic, as shown in the Router Middleware and Coder Middleware sections.
Includes publish-subscribe patterns out of the box for event-driven architectures, with examples provided in the Pub/Sub Examples section, reducing the need for external libraries.
Allows custom protocols, codecs, loggers, and queue management, providing a foundation for tailored network applications, as demonstrated in sections like Custom Net Protocol and Custom Codec.
Lacks built-in support for common distributed systems features like automatic load balancing or service discovery, requiring manual implementation for production-grade microservices.
Examples and extensions are split into a separate repository (arpcex), which can make it harder to find integrated documentation and increase setup complexity for newcomers.
Compared to established frameworks like gRPC or rpcx, ARPC has fewer third-party tools, plugins, and community contributions, which may limit support and integration options.
The emphasis on customization and minimal core means more boilerplate code is needed for basic setups, such as implementing authentication or error handling from scratch.