Repolode
smallnest

smallnest/rpcx

A Go RPC framework for building microservices, with pluggable service discovery, multiple transports and codecs, and cross-language access over HTTP.

Stars
8,319
Forks
1,173
Open issues
4
Last commit
2 months ago

What is it?

rpcx is an RPC framework written in Go, modeled after Alibaba Dubbo, for splitting applications into services that call each other over the network. Go functions can be exposed as RPC methods directly, without writing proto files, and clients call them with a simple API that includes load balancing and failover options.

The framework supports TCP, HTTP, QUIC and KCP transports, and codecs including JSON, Protobuf, MessagePack and raw bytes. Service discovery can use peer-to-peer configuration, zookeeper, etcd, consul or mDNS, and load balancing offers random, round-robin, consistent hashing, weighted and other strategies. Services can also be called from other languages through an HTTP gateway, and Java and Rust implementations are available.

Features such as authorization, metadata passing, compression, heartbeats, bidirectional communication and backup requests are included. Some plugins, including etcd, zookeeper and consul, have moved to separate repositories since version 1.7.6.

Key features

  • 01Turns plain Go methods into RPC endpoints without proto files.
  • 02Supports TCP, HTTP, QUIC and KCP transports.
  • 03Offers JSON, Protobuf, MessagePack and raw byte codecs.
  • 04Provides service discovery via peer-to-peer, zookeeper, etcd, consul or mDNS.
  • 05Includes load balancing strategies and failover, failfast and failtry fault tolerance modes.

Use cases

  • Splitting a Go backend into microservices that call each other over RPC.
  • Letting services written in other languages call Go services through the HTTP gateway.
  • Building internal service-to-service communication that needs service discovery and load balancing.

In collections

Topics

FAQ

What is rpcx?
A Go RPC framework for building microservices, with pluggable service discovery, multiple transports and codecs, and cross-language access over HTTP. rpcx is an RPC framework written in Go, modeled after Alibaba Dubbo, for splitting applications into services that call each other over the network. Go functions can be exposed as RPC methods directly, without writing proto files, and clients call them with a simple API that includes load balancing and failover options.
Is rpcx free to use? What license does it have?
rpcx is open source under the Other license. Check the license terms before using it in commercial products.
Is rpcx still maintained?
Updated within 6 months. The last commit to rpcx was on Sep 3, 2026.
What can I use rpcx for?
Splitting a Go backend into microservices that call each other over RPC. Letting services written in other languages call Go services through the HTTP gateway. Building internal service-to-service communication that needs service discovery and load balancing.
Where can I get rpcx?
The source code and installation instructions are on GitHub: https://github.com/smallnest/rpcx

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects