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
1: i64 orderId
2: string phone
3: string name
4: string orderNum
5: i32 orderDate
6: i32 ticketType
7: double amount
8: i32 orderStatus
}
8: i32 orderStatus
}
serviceMobileService {
Order hello(1:Order order),
}
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小时内删除。
发表评论