rpcx是一个类似阿里巴巴 [Dubbo](https://www.oschina.net/p/dubbo) 和微博 [Motan](https://www.oschina.net/p/motan-weibo) 的分布式的RPC服务框架,基于Golang net/rpc实现。
[![吞吐率](https://static.oschina.net/uploads/img/201701/31092925_nmK2.png)](https://github.com/smallnest/rpcx/blob/master/_documents/throughput.png)
[![超低的延迟Latency](https://static.oschina.net/uploads/img/201701/31092926_r7Bh.png)](https://github.com/smallnest/rpcx/blob/master/_documents/benchmark.png)
与gRPC比较,完胜gRPC, 更不用说其它的"老"的RPC框架了。
谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。
不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源了,官方的代码使用的spring还停留在2.5.6.SEC03的版本,dubbox的spring也只升级到3.2.9.RELEASE。
不管怎样,dubbo还是在电商企业得到广泛的应用,京东也有部分在使用dubbo开发。
本项目[rpcx](https://github.com/smallnest/rpcx)的目标就是实现一个Go生态圈的Dubbo,为Go生态圈提供一个分布式的、多插件的、带有服务治理功能的产品级的RPC框架。
Go生态圈已经有一些RPC库,如官方的[net/rpc](https://golang.org/pkg/net/rpc/)、[grpc-go](https://github.com/grpc/grpc-go)、[gorilla-rpc](http://www.gorillatoolkit.org/pkg/rpc)等,为什么还要开发**rpcx**呢?
原因在于尽管这些框架都是为Go实现的RPC库,但是它们的功能比较单一,只是实现了点对点(End-to-End)的通讯框架。缺乏服务治理的功能,比如服务注册和发现、
负载均衡、容灾、服务监控等功能。因此我基于Go net/rpc框架实现了一个类似Dubbo的分布式框架。
和rpcx比较类似的Go RPC框架是[go-micro](https://github.com/micro/go-micro),但是rpcx提供了更丰富的功能,基于TCP的通讯协议性能更好。