grpc无缝接入的数据序列化反序列化协议就是protobuf,所以先讲解一下protobuf
安装
参考文档
目录结构图

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>
为了防止不一致,将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