A simple, fast, and scalable Go RPC library optimized for high-load microservices.
Gorpc is a high-performance RPC library for Go designed to handle high-load scenarios and microservices efficiently. It minimizes system overhead and network bandwidth by optimizing connection and message handling through features like connection pipelining, message batching, and efficient buffering. This makes it suitable for production environments serving thousands of queries per second.
Go developers building high-load microservices or RPC systems that require efficient resource usage and scalability, such as those serving thousands of queries per second. It is also suitable for teams needing to reduce network bandwidth and OS overhead in distributed systems.
Developers choose Gorpc over alternatives like Go's net/rpc for its focus on minimizing OS syscalls and network resource usage, which leads to reduced CPU load and bandwidth consumption. It provides out-of-the-box features like automatic reconnection, graceful shutdown, concurrency throttling, and a flexible Dispatcher API, making it a robust choice for production-grade RPC systems.
Simple, fast and scalable golang rpc library for high load
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements connection pipelining and message batching to reduce connect(), send(), and recv() syscalls, lowering CPU load and network bandwidth—evidenced by cutting bandwidth from 300 Mbit/s to 24 Mbit/s in production.
Includes automatic reconnection, response timeouts, graceful shutdown, and concurrency throttling out of the box, eliminating custom code for high-load scenarios as per the README.
Supports TCP, TLS, and Unix socket transports by default with extensibility for custom implementations, allowing easy integration of authentication and encryption via callbacks.
The Dispatcher API simplifies converting standard Go functions and struct methods into RPC handlers, making it easy to adapt existing codebases without complex refactoring.
Uses a custom RPC protocol lacking native support for industry standards like gRPC's HTTP/2 or JSON-RPC, which can hinder interoperability with other languages or tools.
Being a specialized library, it has fewer third-party integrations, plugins, or community-contributed middleware compared to more popular frameworks like gRPC, requiring manual setup for advanced features.
Requires explicit setup for features like custom transports or authentication, whereas other libraries offer more pre-configured options or opinionated defaults, increasing initial development time.