rpcx alternatives and similar packages
Based on the "Distributed Systems" category.
Alternatively, view rpcx alternatives based on common mentions on social networks and blogs.
go-micro9.9 8.9 rpcx VS go-microA Go microservices framework
grpc-go9.9 9.7 rpcx VS grpc-goThe Go language implementation of gRPC. HTTP/2 based RPC
Nomad9.8 9.9 rpcx VS NomadNomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
go-zero9.7 9.5 rpcx VS go-zerogo-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity. [Moved to: https://github.com/zeromicro/go-zero]
micro9.7 8.3 rpcx VS microAPI first development platform
tendermint9.5 8.8 rpcx VS tendermint⟁ Tendermint Core (BFT Consensus) in Go
raft9.5 4.0 rpcx VS raftGolang implementation of the Raft consensus protocol
ringpop-go9.4 5.2 rpcx VS ringpop-goScalable, fault-tolerant application-layer sharding for Go applications
Serf9.4 4.5 rpcx VS SerfService orchestration and management tool.
Kitex9.3 9.2 rpcx VS KitexGo RPC framework with high-performance and strong-extensibility for building micro-services.
dht9.2 9.3 rpcx VS dhtFull-featured BitTorrent client package and utilities
torrent9.2 9.3 rpcx VS torrentFull-featured BitTorrent client package and utilities
KrakenD9.2 2.1 rpcx VS KrakenDUltra performant API Gateway with middlewares. A project hosted at The Linux Foundation
dragonboat9.1 4.5 rpcx VS dragonboatA feature complete and high performance multi-group Raft library in Go.
Dkron8.9 7.2 rpcx VS DkronDkron - Distributed, fault tolerant job scheduling system https://dkron.io
emitter-io8.9 0.0 rpcx VS emitter-ioHigh performance, distributed and low latency publish-subscribe platform.
glow8.8 0.0 rpcx VS glowGlow is an easy-to-use distributed computation system written in Go, similar to Hadoop Map Reduce, Spark, Flink, Storm, etc. I am also working on another similar pure Go system, https://github.com/chrislusf/gleam , which is more flexible and more performant.
gleam8.8 0.0 rpcx VS gleamFast, efficient, and scalable distributed map/reduce system, DAG execution, in memory or on disk, written in pure Go, runs standalone or distributedly.
DHT8.7 0.0 rpcx VS DHTBitTorrent DHT Protocol && DHT Spider.
Olric8.5 6.8 rpcx VS OlricDistributed in-memory object store. It can be used both as an embedded Go library and as a language-independent service.
liftbridge8.4 0.0 rpcx VS liftbridgeLightweight, fault-tolerant message streams.
gocelery8.4 0.0 rpcx VS goceleryCelery Distributed Task Queue in Go
hprose7.9 2.7 rpcx VS hproseHprose is a cross-language RPC. This project is Hprose for Golang.
Dragonfly7.9 9.1 rpcx VS DragonflyDragonfly is an open source P2P-based file distribution and image acceleration system. It is hosted by the Cloud Native Computing Foundation (CNCF) as an Incubating Level Project.
go-doudou7.9 8.0 rpcx VS go-doudougo-doudou（doudou pronounce /dəudəu/）is OpenAPI 3.0 (for REST) spec and Protobuf v3 (for grpc) based lightweight microservice framework. It supports monolith service application as well.
redis-lock7.5 3.5 rpcx VS redis-lockSimplified distributed locking implementation using Redis
go-health7.3 0.0 rpcx VS go-healthLibrary for enabling asynchronous health checks in your service
rain7.2 5.0 rpcx VS rain🌧 BitTorrent client and library in Go
arpc7.1 0.0 rpcx VS arpcMore effective network communication, two-way calling, notify and broadcast supported.
gorpc7.1 0.0 rpcx VS gorpcSimple, fast and scalable golang rpc library for high load
resgate6.9 0.0 rpcx VS resgateA Realtime API Gateway used with NATS to build REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.
consistent6.8 0.0 rpcx VS consistentConsistent hashing with bounded loads in Golang
digota6.7 0.0 rpcx VS digotaecommerce microservice
Temporal6.6 10.0 rpcx VS TemporalTemporal Go SDK
go-peerflix6.6 0.0 rpcx VS go-peerflixGo Peerflix
go-sundheit6.5 0.0 rpcx VS go-sundheitA library built to provide support for defining service health for golang services. It allows you to register async health checks for your dependencies and the service itself, provides a health endpoint that exposes their status, and health metrics.
go-jump6.2 1.1 rpcx VS go-jumpgo-jump: Jump consistent hashing
sleuth6.1 0.0 rpcx VS sleuthA Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services
jsonrpc5.1 0.0 rpcx VS jsonrpcThe jsonrpc package helps implement of JSON-RPC 2.0
dynamolock4.8 0.0 rpcx VS dynamolockDynamoDB Lock Client for Go
outboxer4.7 0.0 rpcx VS outboxerA library that implements the outboxer pattern in go
Maestro4.4 0.0 rpcx VS MaestroTake control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC.
doublejump4.2 2.1 rpcx VS doublejumpA revamped Google's jump consistent hash
celeriac3.8 0.0 rpcx VS celeriacGolang client library for adding support for interacting and monitoring Celery workers, tasks and events.
dot3.8 0.0 rpcx VS dotdistributed data sync with operational transformation/transforms
drmaa3.6 1.3 rpcx VS drmaaCompute cluster (HPC) job submission library for Go (#golang) based on the open DRMAA standard.
go-mysql-lock3.3 0.0 rpcx VS go-mysql-lockMySQL Backed Locking Primitive
go-pdu3.1 5.2 rpcx VS go-pduGo implementation of PDU - A decentralized SNS backbone
flowgraph3.0 0.0 rpcx VS flowgraphFlowgraph package for scalable asynchronous system development
gmsec2.3 0.0 rpcx VS gmsecA Go distributed systems development framework
Access the most powerful time series database as a service
Do you think we are missing an alternative of rpcx or a related project?
- stable branch: v1.7.x
- development branch: master
Official site: http://rpcx.io
since rpcx 1.7.6, some plugins have been moved to the independent project:
etcdplugin has been moved to rpcx-etcd
zookeeperplugin has been moved to rpcx-zookeeper
consulplugin has been moved to rpcx-consul
redisplugin has been moved to rpcx-redis
influxdbplugin has been moved to rpcx-plugins
opentelemetryplugin has been moved to rpcx-plugins
A tcpdump-like tool added: rpcxdump。 You can use it to debug communications between rpcx services and clients.
you can use other programming languages besides Go to access rpcx services.
- rpcx-gateway: You can write clients in any programming languages to call rpcx services via rpcx-gateway
- http invoke: you can use the same http requests to access rpcx gateway
- Java Services/Clients: You can use rpcx-java to implement/access rpcx servies via raw protocol.
- rust rpcx: You can write rpcx services in rust by rpcx-rs
If you can write Go methods, you can also write rpc services. It is so easy to write rpc applications with rpcx.
install the basic features:
go get -v github.com/smallnest/rpcx/...
If you want to use
kcp registry, use those tags to
go get 、
go build or
go run. For example, if you want to use all features, you can:
go get -v -tags "quic kcp" github.com/smallnest/rpcx/...
- quic: support quic transport
- kcp: support kcp transport
Which companies are using rpcx?
rpcx is a RPC framework like Alibaba Dubbo and Weibo Motan.
rpcx is created for targets:
- Simple: easy to learn, easy to develop, easy to intergate and easy to deploy
- Performance: high perforamnce (>= grpc-go)
- Cross-platform: support raw slice of bytes, JSON, Protobuf and MessagePack. Theoretically it can be used with java, php, python, c/c++, node.js, c# and other platforms
- Service discovery and service governance: support zookeeper, etcd and consul.
It contains below features
- Support raw Go functions. There's no need to define proto files.
- Pluggable. Features can be extended such as service discovery, tracing.
- Support TCP, HTTP, QUIC and KCP
- Support multiple codecs such as JSON, Protobuf, MessagePack and raw bytes.
- Service discovery. Support peer2peer, configured peers, zookeeper, etcd, consul and mDNS.
- Fault tolerance：Failover, Failfast, Failtry.
- Load banlancing：support Random, RoundRobin, Consistent hashing, Weighted, network quality and Geography.
- Support Compression.
- Support passing metadata.
- Support Authorization.
- Support heartbeat and one-way request.
- Other features: metrics, log, timeout, alias, circuit breaker.
- Support bidirectional communication.
- Support access via HTTP so you can write clients in any programming languages.
- Support API gateway.
- Support backup request, forking and broadcast.
rpcx uses a binary protocol and platform-independent, which means you can develop services in other languages such as Java, python, nodejs, and you can use other prorgramming languages to invoke services developed in Go.
There is a UI manager: rpcx-ui.
Test results show rpcx has better performance than other rpc framework except standard rpc lib.
The benchmark code is at rpcx-benchmark.
Listen to others, but test by yourself.
- CPU: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz, 32 cores
- Memory: 32G
- Go: 1.9.0
- OS: CentOS 7 / 3.10.0-229.el7.x86_64
- the client and the server on the same server
- 581 bytes payload
- 500/2000/5000 concurrent clients
- mock processing time: 0ms, 10ms and 30ms
mock 0ms process time
ThroughputsMean LatencyP99 Latency
mock 10ms process time
ThroughputsMean LatencyP99 Latency
mock 30ms process time
ThroughputsMean LatencyP99 Latency
You can find all examples at rpcxio/rpcx-examples.
The below is a simple example.
// define example.Arith …… s := server.NewServer() s.RegisterName("Arith", new(example.Arith), "") s.Serve("tcp", addr)
// prepare requests …… d, err := client.NewPeer2PeerDiscovery("[email protected]"+addr, "") xclient := client.NewXClient("Arith", client.Failtry, client.RandomSelect, d, client.DefaultOption) defer xclient.Close() err = xclient.Call(context.Background(), "Mul", args, reply, nil)
Welcome to contribute:
- submit issues or requirements
- send PRs
- write projects to use rpcx
- write tutorials or articles to introduce rpcx
Apache License, Version 2.0
*Note that all licence references and agreements mentioned in the rpcx README section above are relevant to that project's source code only.