rpcx框架介绍和简单测评

[不指定 2018/08/21 14:59 | by ipaddr ]
最近关注了go的一些新项目,发现了一个比较牛逼的框架rpcx,此项目已经不是简单的rpc框架,而是一整套微服务框架,包含了服务发现、服务治理、负载均衡、故障转移等能力。


一、简介

rpcx与Alibaba Dubbo, Weibo Motan项目类似,项目地址:https://github.com/smallnest/rpcx

主要特色:

  • 简单:非常容易使用,对比thrift,grpc来看,代码量和可读性都要优秀很多很多;
  • 高性能:官方号称性能高于grpc,实测确实比grpc性能要好,但比thrift要差一些,详见后面数据;
  • 跨语言: 可以与其它语言交互,但只是提供了一个gateway来转换协议,而thrift,grpc是可以做到跨语言直接调用的;
  • 服务发现和治理:这个确实非常不错,比thrift,grpc之类的完整太多了,基本可以开箱即用;

其它特性(来自官网):

  • 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.

二、性能测试

抽空做了个简单的性能测试,主要是评估rpc处理耗时:

1.测试环境

OS: ubuntu 16.04, kenerl 4.4.0
Go: 1.10.3
机器:Thinkpad T450
CPU:i5-5300u 2.3G
内存:8G

2.测试用例

服务端:只做简单的整数加法;
客户端:单个长连,10w次rpc请求计算总耗时;

3.数据和结论

Thrift(go):

  • 总耗时:31s
  • CPU使用率:84% (client, server使用率差不多)

gRpc(go):

  • 总耗时:120s
  • CPU使用率:87% (server cpu使用率略高一些)

rpcx(go):

  • 总耗时:70s
  • CPU使用率:70%-80% (server比client的使用率高10%)

粗略来看,Thrift性能仍能非常优秀,其次是rpcx,gRpc性能最差的;

三、小结

rpcx优点:

  • 简单易用;
  • 性能优秀;
  • 配套的服务发现和服务治理;
  • 完整的负载均衡、故障转移;

rpcx缺点:

  • 跨语言调用;
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]