不得不承认Zeroc Ice是RPC王者: 完爆Dubbo,Thrift,谷歌RPC
ice-dubbo-thrift-grpc性能测试对比,本次测试过程中还发现了一个支付宝的秘密,附件文档中会详细说明。测试说明
本测试只是个人为了对rpc进行技术选型,测试可能不够严谨,对某些rpc的参数可能也不是最优,如果你知道更优的参数配置或者改进意见等,欢迎反馈给我 [email protected]。另外代码有些地方只是为了测试方便,不作为平时编程的范例。所有测试源码和运行均一起提供在附件里。
测试源码工程可用idea打开,其中dubbo,grpc需要maven支持。运行只需要运行对应bat脚本。如果想测试更多场景,可以直接改脚本的并发数和调用次数。
测试人
南哥 mycat核心commiter http://mycat.io/
系统环境
Jdk:jdk1.8.0_51x64
Ice:ice3.6
Dubbo:dubbox 2.8.4
Thrift:0.9.2
Grpc:0.7.1
测试结果
1客户端
测试结果如下所示:
Rpc
|
并发客户端
|
每客户端调用次数
|
总调用次数
|
执行时间
|
每秒调用数tps
|
ice
|
1
|
300000
|
300000
|
16s
|
18329
|
dubbo
|
1
|
300000
|
300000
|
52s
|
5675
|
thrift
|
1
|
300000
|
300000
|
23s
|
12832
|
grpc
|
1
|
300000
|
300000
|
77s
|
3896
|
从数据可以看出ice,thrift的tps最高,ice是thrift的1.4倍,是dubbo的3.2倍,是grpc的4.7倍
5客户端并发
测试结果如下所示:
Rpc
|
并发客户端
|
每客户端调用次数
|
总调用次数
|
执行时间
|
每秒调用数tps
|
ice
|
5
|
300000
|
1500000
|
20s
|
71575
|
dubbo
|
5
|
300000
|
1500000
|
77s
|
19371
|
thrift
|
5
|
300000
|
1500000
|
31s
|
47041
|
grpc
|
5
|
300000
|
1500000
|
95s
|
15722
|
从数据可以看出ice,thrift的tps最高,ice是thrift的1.5倍,是dubbo的3.6倍,是grpc的4.5倍
20客户端并发
测试结果如下所示:
Rpc
|
并发客户端
|
每客户端调用次数
|
总调用次数
|
执行时间
|
每秒调用数tps
|
ice
|
20
|
300000
|
6000000
|
68s
|
87375
|
dubbo
|
20
|
300000
|
6000000
|
256s
|
23354
|
thrift
|
20
|
300000
|
6000000
|
94s
|
63708
|
grpc
|
20
|
300000
|
6000000
|
382s
|
15675
|
从数据可以看出ice,thrift的tps最高,ice是thrift的1.3倍,是dubbo的3.7倍,是grpc的5.5倍
50客户端并发
测试结果如下所示:
Rpc
|
并发客户端
|
每客户端调用次数
|
总调用次数
|
执行时间
|
每秒调用数tps
|
ice
|
50
|
300000
|
15000000
|
165s
|
90679
|
dubbo
|
50
|
300000
|
15000000
|
676s
|
22157
|
thrift
|
50
|
300000
|
15000000
|
255s
|
58765
|
grpc
|
50
|
300000
|
15000000
|
987s
|
15186
|
从数据可以看出ice,thrift的tps最高,ice是thrift的1.5倍,是dubbo的4倍,是grpc的5.9倍
100客户端并发
测试结果如下所示:
Rpc
|
并发客户端
|
每客户端调用次数
|
总调用次数
|
执行时间
|
每秒调用数tps
|
ice
|
100
|
300000
|
30000000
|
361s
|
83014
|
dubbo
|
100
|
300000
|
30000000
|
1599s
|
18760
|
thrift
|
100
|
300000
|
30000000
|
597s
|
50211
|
grpc
|
100
|
300000
|
30000000
|
2186s
|
13721
|
从数据可以看出ice,thrift的tps最高,ice是thrift的1.6倍,是dubbo的4.4倍,是grpc的6倍
总结
从测试结果可以看出ice的tps遥遥领先,而且并发越高tps比其他越高,其次thrift,而dubbo和grpc则差了很多。Grpc最差估计跟用了HTTP2有关。从功能完备性来说ice和dubbo都算比较完备,都有大型生产案例,thrift的服务化功能比较缺失,grpc可能还不够成熟。
Dubbo的插件化机制的确不错,ice初次接触有些概念比较晦涩,经过封装和有详细的资料后要好上许多。另外dubbox还支持rest,官方测试rest比kyro要慢1.5倍,本次未对rest测试。
另外《Zeroc Ice权威指南》作者Leader-us对ice的测试结果如下:
Leader-us测试结果Ice则是2.5万,性能差不多是Avro的一倍,综合起来看Avro和thrift的性能应该差不多。
本帖只摘录了一部分内容,完整测试报告以及源码详见附件的word文档。
由于论坛限制,完整文档下载 http://pan.baidu.com/s/1eQIY9xg,文档比较大因为包含了源码和运行程序
如果百度云的连接失效,请到mycat的qq群共享里下载,群号:228044360