thrift,gRPC,rpcx,motan,dubbox等rpc框架对比 - Go语言中文社区

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


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

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xuduorui/article/details/77938644
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 21:16:28
  • 阅读 ( 2736 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢