【流量录制】基于grpc协议的流量录制
一、场景
由于公司的车云交互,采用的是grpc协议,所以希望在进行接口测试和流量录制
二、方案
目前开源的方案,并没有太多直接支持的工具,调研了goreplay, nginx-mirror, MoonBox, JVM-sandbox-repeater, tcp-replay等
基本上没有直接支持grpc协议的,基本都需要proto文件
goreplay, 开源版本只支持http协议, 基于原始网络流量录制。
ngx_http_mirror_module,只支持http协议。
MoonBox,基于JVM-sandbox-repeater, 支持java生态, 但是我们的服务有python服务。
tcp-replay, 基于原始数据流量, 部署比较麻烦。
三、可用方案
1、基于原始流量(需要自定义开发)
GitHub - yuwendoris/goreplay-grpc
2、基于原始流量及反射机制(相对完善)
https://github.com/vearne/grpcreplay
3、基于tcpdump录制数据包和proto文件解析(需要自定义开发)
基于python的网络库解析数据包和grpc库的转换方法实现
需要了解http2协议和协议帧
关于http2协议
grpc-go彻底弄清http2协议如何解析_reauired settings preface not received-CSDN博客
参考链接:
grpcreplay package - github.com/google/go-replayers/grpcreplay - Go Packages
在 Kubernetes 中实现 gRPC 流量的镜像和对比 | Yeqown
【亲测免费】 Google Go Replay 工具集使用指南-CSDN博客