天天看点

grpc入门

grpc无缝接入的数据序列化反序列化协议就是protobuf,所以先讲解一下protobuf

安装

参考文档

目录结构图

grpc入门

helloword.proto文件

执行命令生成protobuf文件和grpc文件

server.py代码

client.py代码

下载protoc.exe

<code>https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.1</code>

下载后解压,然后将解压的protoc.exe放在GOPATH/bin目录下(或者直接将protc.exe所在的bin目录配置到环境变量当中去也可以)

下载protoc-gen-go.exe

<code>go get github.com/golang/protobuf/protoc-gen-go</code>

上面下载好后,会在GOPATH/bin下生成protoc-gen-go.exe

安装protobuf

<code>go get google.golang.org/protobuf</code>

安装grpc

<code>go get google.golang.org/grpc</code>

先切换到helloword.proto文件所在的proto目录下,执行如下命令

<code>protoc -I . helloword.proto --go_out=plugins=grpc:.</code>

注意:<code>go语言中只生成一个文件.pb.go, 也就只有python中会生成两个文件,一个pb文件,一个grpc文件,其它的语言都生成一个文件</code>

grpc入门

为了防止不一致,将go下的helloword.proto文件复制到python下重新生成protobuf文件和grpc文件

<code>python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. helloworld.proto</code>

启动go服务端,然后用python客户端访问

启动Python服务端,然后用go客户端访问

grpc跨语言通信:so easy!

grpc的四种数据流

简单模式 simple rpc

服务端数据流模式 server-side streaming rpc

客户端数据流模式 client-side streaming rpc

双向数据流模式 bidirectional steaming rpc

流模式的proto文件定义

server.go

点击查看代码

client.go