一、grpc的golang环境配置
protoc的安装比较简单,golang使用protoc-gen-go进行protobuf生成golang代码,由于国内某种原因,因此需要进行以下的设置:
export http_proxy=http://127.0.0.1:1087
export https_proxy=http://127.0.0.1:1087
使go install走对应的代理,然后参考:https://github.com/grpc/grpc-go 进行相关依赖的按照
然后书写grpc的protbuf文件,并用protoc生成即可。
二、grpc的介绍
- 简单模式(Simple RPC):客户端发起请求并等待服务端响应。
- 服务端流式(Server-side streaming RPC):客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流,直到里面没有任何消息。
- 客户端流式(Client-side streaming RPC):与服务端数据流模式相反,这次是客户端源源不断的向服务端发送数据流,而在发送结束后,由服务端返回一个响应。
- 双向流式(Bidirectional streaming RPC):双方使用读写流去发送一个消息序**列,两个流独立操作,双方可以同时发送和同时接收。
三、grpc中的protobuf简单介绍
protobuf中对应到grpc的使用,主要有rpc变量用以声明方法为rpc的方法、stream 对象表明传输是流式的(客户端/服务端),其他方面的格式无太大的特殊
rpc ListFeatures(request) returns (stream response) {}
四、grpcurl调试工具
调试工具安装:
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
grpcurl使用
- 查看服务列表
grpcurl -plaintext localhost:8899 list
- 查看指定服务的接口列表
grpcurl -plaintext localhost:8899 list tenant.Tenant
- 查看某一个 rpc 接口的实际情况
grpcurl -plaintext localhost:8899 describe tenant.Tenant.get_tenant_detail
- 查看具体某一个结构体的详情
grpcurl -plaintext localhost:8899 describe .tenant.TenantDetailRsp
- 服务调试
grpcurl --plaintext -d '{ "name": "World" }' localhost:8899 helloworld.Greeter/SayHello