Golang实现GRPC的tcp示例(windows环境为例)

背书:rpc是一个高效的序列化工具类似json,xml,grpc是google开发的跨平台和语言的rpc框架

1.安装grpc包:

go get github.com/golang/protobuf/proto

go get google.golang.org/grpc

go get google.golang.org/protobuf/cmd/protoc-gen-go

go install google.golang.org/protobuf/cmd/protoc-gen-go

go get google.golang.org/grpc/cmd/protoc-gen-go-grpc

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc

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

注意:GOPATH 不明白是啥玩意的请自行百度


2.下载protoc.exe到GOPATH的bin目录:

windows平台编译受限,很难自己手动编译,直接去网站下载一个,

地址:https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.0

,同样放在GOPATH/bin下


3.编写proto描述文件:

  项目包路径:local.com/blog 一个博客项目为例,

这里随便写一个:hello.proto,放在local.com/blog/proto文件目录下,提供一个SayHello服务:

golang实现grpc的tcp示例_golang

4. 编译生成.pb.go文件

使用命令生成编译后的go文件(进入proto文件目录),执行如下两个命令:

protoc --go_out=. hello.proto

protoc --go-grpc_out=. hello.proto

不出问题的话会生成如下两个go文件:

golang实现grpc的tcp示例_客户端_02

 第一个包含了服务的定义,第二个包含请求和返回参数的定义。这两个文件客户端和服务端都需要直接拷贝给客户端服务和服务端服务即可正常使用。

5.实现grpc的服务端(这里以tcp协议为例):

golang实现grpc的tcp示例_golang_03

golang实现grpc的tcp示例_golang_04

6.grpc客户端(比较简单):

golang实现grpc的tcp示例_golang_05

Grpc的认证,拦截器,trace调用追踪,http服务等这里不做介绍,可以参考:

​https://www.topgoer.com/%E5%BE%AE%E6%9C%8D%E5%8A%A1/gRPC/OpenSSL%E5%AE%89%E8%A3%85.html​