ice-dubbo-thrift-grpc性能测试对比
测试说明
本测试只是个人为了对rpc进行技术选型,测试可能不够严谨,对某些rpc的参数可能也不是最优,如果你知道更优的参数配置或者改进意见等,欢迎反馈给我magicdoom@gmail。另外代码有些地方只是为了测试方便,不作为平时编程的范例。所有测试源码和运行均一起提供在附件里。
测试源码工程可用idea打开,其中dubbo,grpc需要maven支持。运行只需要运行对应bat脚本。如果想测试更多场景,可以直接改脚本的并发数和调用次数。
测试人
南哥mycat核心commitermycat.io/
测试环境
测试程序
由于各rpc所自带的基准测试大多跟自己的rpc耦合性比较高,不太适合拿来对多个rpc同时进行公平的测试。所以写了个简单的并发测试程序,且对个rpc保持一致性。
系统环境
Jdk:jdk1.8.0_51x64
Ice:ice3.6
Dubbo:dubbox 2.8.4
Thrift:0.9.2
Grpc:0.7.1
测试准备
Ice:提前安装好ZeroC ICE3.6,在path中设置好bin的路径。
Dubbo:准备好zookeeper
关闭杀毒软件防火墙之类以及其他一些后台程序
测试参数
所有jvm参数均设置为java -Xms2G -Xmx2G
Ice:
Dubbo:<dubbo:protocolname="dubbo" serialization="kryo" threads="200"/>
Thrift:
Grpc:
测试场景
分别并发1、5、20、50、100个客户端程序,每个客户端程序执行300000次调用。
服务方法均通过传入一个Order对象然后原样返回。
struct Order {
    1: i64 orderId
    2: string phone     
    3: string name   
    4: string orderNum
    5: i32 orderDate
    6: i32 ticketType
    7: double amount 
    8: i32 orderStatus
}
serviceMobileService {
    Order hello(1:Order order),
}
测试步骤
ice
运行registry.bat启动iceregistry
运行gridnode.bat启动icegrid节点
分别执行进行测试,测试结果在对应的benchmark*.log里
dubbo
启动好zk
运行startProvider.bat启动服务
分别运行测试,测试结果在对应的benchmark*.log里
thrift
运行startServer.bat启动服务
分别运行测试,测试结果在对应的benchmark*.log里
grpc
运行startServer.bat启动服务
分别运行测试,测试结果在对应的benchmark*.log里
测试结果
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
thrift
grpc
20
300000
6000000
382s
15675
从数据可以看出ice,thrift的tps最高,ice是thrift的1.3倍,是dubbo的3.7倍,是grpc的5.5倍

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。