thrift,gRPC,rpcx,motan,dubbox等rpc框架对比

rpc 同时被 3 个专栏收录
2 篇文章 0 订阅
2 篇文章 0 订阅
4 篇文章 0 订阅

thrift,gRPC,rpcx,motan,dubbox等rpc框架对比

 

 

Motan

Dubbox

thrift

gRPC

rpcx

开发语言

Java

Java

跨语言

跨语言

go

分布式服务治理

Y

Y

可以配合zookeeper, Eureka等实现

可以配合etcd(go),zookeeper,consul等实现

自带服务注册中心,也支持zookerper,etcd等发现方式

底层协议

motan协议,使用tcp长连接

Dubbo 协议、 Rmi 协议、 Hessian 协议、 HTTP 协议、 WebService 协议、Dubbo Thrift 协议、Memcached 协议

tpc/http/frame

http2

tcp长链接

消息序列化

hessian2,json

hessian2,json,resr,kyro,FST等,可扩展protobuf等

thrift

protobuf

Gob、Json、MessagePack、gencode、ProtoBuf等

跨语言编程

N(支持php client和c server)

N

Y

Y

N

负载均衡

ActiveWeight 、Random 、 RoundRobin 、LocalFirst 、 Consistent 、ConfigurableWeight

Random 、RoundRobin 、ConsistentHash 、 LeastActive

Haproxy,

zookerper+客户端负载均衡等方案

负载均衡软件HaProxy等

支持随机请求、轮询、低并发优先、一致性 Hash等

容错

Failover 失效切换、Failfast 快速失败

Failover 、 Failfast 、Failsafe 、 Failback 、 Forking、 Broadcast

Failover

具有 Failover 失效切换的容错策略

失败重试(Failover)、快速失败(Failfast)

注册中心

consul

zookeeper

zookeeper

etcd,zookeeper,consul

zookerper,etcd

性能

★★

★★

★★★★

比grpc快2-5倍

★★★

比dubbox,motan快

★★★★★

比thrift快1-1.5倍

侧重优势

服务管理

服务管理

跨语言,性能++

跨语言,性能

性能++,服务治理

客户端异步调用方案

 

 

- 使用thrift IDL “oneway” 关键字(无返回结果),+callback

- tcp异步请求

- thrift IDL参数不支持函数或服务

- ping(service,req,res,callback)

- 客户端发送一个对象,服务端返回stream,客户端使用迭代处理

- 客户端发送stream对象,服务端返回一个对象

- 服务端客户端都使用stream传输

 

服务端异步处理

 

 

1、TNonblockingServer(java/c++,php); THsHaServer(java/c++); TThreadpoolServer(java/c++); TThreadSelectorServer(java/c++)

2、结合消息队列或中间件

3、swoole/goroutine等多任务支持

同上,使用stream传输。

proto支持stream对象。

Stream对象在传输过程中会被当做集合,用Iterator来遍历处理

 

 

php thrift server异步服务端开源例子(实现TNonblockingServer):

https://github.com/volca/thrift/lib/php/src

 

motan,dubbo,grpc对比参考:

http://p.primeton.com/articles/59030eeda6f2a40690f03629

 

rpcx具体参考:

http://www.udpwork.com/item/15521.html

 

thrift,grpc,motan,dubbx性能参考:

http://blog.csdn.net/zixiao217/article/details/53675678?locationNum=7&fps=1

关键信息截图:

https://github.com/smallnest/RPC-TEST

每10000请求消耗的毫秒数:

 

 

http://szelei.me/rpc-benchmark-part1/

cpu平均请求耗时(越小越好)

 

 

php thrift客户端异步调用参考:

https://github.com/yuxel/thrift-examples

 

grpc 异步参考:

http://blog.csdn.net/u011262847/article/details/75944548

 

  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值