Arion——gRPC Test Tool
Posted 搜狗测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arion——gRPC Test Tool相关的知识,希望对你有一定的参考价值。
前段时间遇到了一个gRPC压测的需求,其中用到了gRPC服务,在这里和大家介绍下。
gRPC一开始由 google 开发,基于http2.0协议,用protobuf来定义服务,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。
基于http2.0协议和http1.1协议的最大区别是多路复用。
什么是多路复用呢?
从图中可以看出,HTTP2.0允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
在gRPC基本框架如下:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型),在服务端实现调用接口,并运行一个gRPC服务器来处理客户端调用,在客户端用同样的方法进行数据解析和转换。
gRPC有以下四种通信模式:
1,简单模式:客户端发送一个对象,服务端返回一个对象
Proto文件:
rpcStudentAdd(StudentResponse)returns(ResultResponse){};//gRPC简单模式
2,客户端流模式:客户端发送Stream对象,服务端返回一个简单对象
Proto文件:
rpcGetHelloTest(streamStudentRequest)returns(ResultResponse){};//客户端流模式(客户端发送stream
3,服务器端流模式:客户端发送一个对象,服务端返回一个Stream对象
Proto文件:
rpcGetNxinMethod(StudentRequest)returns(streamResultResponse){};//服务端流模式(从服务端返回stream)
4,客户端和服务端都传输的是Stream对象
Proto文件:
rpcGetStudent(streamStudentRequest)returns(streamResultResponse){};//双向流模式
本次项目中用到的是第三种模式:服务端流模式,客户端发送的是2层加密的proto文件。
压测时主要考虑的点有:
1、 服务端同时支持的客户端连接数。
2、 服务端支持的最大请求/响应数。
经过网上查找,找到了一款Arion的压测工具,在此感谢作者dave的开源工具。
1) Arion的主要功能有:
Get information of gRPC services / endpoints / data types
Debug gRPC endpoints as curl or Postman(TM) does for HTTP
Do stress test on gRPC endpoints
Support both Unary and Streaming
2) Get Arion
$ go get -u github.com/straightdave/arion
-u option would upgrade Arion if already installed.
3) Build Arion
4) Generate postgal
5) 读取endpoint
6) 模拟10个客户端并发连接:
$./postgal -e Courier#Suggest -B grpcbin_lingxizhida.lingxizhida -h 10.142.85.77:18380 -rate 15 -worker 15 -m server -x -duration 60s -N 10
更多具体用法请查看:https://github.com/straightdave/arion
如果你也用到了gRPC服务,欢迎留言和我们一起交流。
以上是关于Arion——gRPC Test Tool的主要内容,如果未能解决你的问题,请参考以下文章