gRPC 简单使用
Server端代码 github.com/Charlotte32…
Client端代码 github.com/Charlotte32…
- 安装 protobuf
1 | bash复制代码brew install protobuf |
- 创建一个go 程序
1 | bash复制代码go mod init moudleName |
- 安装grpc
1 | bash复制代码go get -u google.golang.org/grpc |
- 安装 protobuf 插件(protoc-gen-go),用来生成 pb.go pb_grpc.go
1 | bash复制代码go get -u google.golang.org/protobuf/cmd/protoc-gen-go |
安装后可以到 go env GOPATH
里面的bin
目录去查看 是否生成了protoc-gen-go
- 编写.proto文件
语法文档: developers.google.com/protocol-bu…
1 | bash复制代码touch Hello.proto |
1 | protobuf复制代码syntax = "proto3"; //版本号 |
- 生成对应的pb.go 文件
1 | bash复制代码cd .. |
- 编写对应的rpc service
1 | protobuf复制代码syntax = "proto3"; //版本号 |
- 生成.pb_grpc 文件
1 | bash复制代码cd pb |
gRPC-getway 同时提供RESTful 和 grpc接口
证书相关的操作 juejin.cn/post/702550…
- 安装
- 新建一个tool 文件夹,下面创建一个tool.go
- 引入需要的包
1 | go复制代码package tool |
go mod tidy
- 安装插件到
go bin
目录中‘
1 | bash复制代码go install \ |
- 把
google
这个文件夹拷贝到pb
文件夹下方
1 | bash复制代码cp /Users/jr/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.16.0/third_party/googleapis/google ./pb/ |
2. 新建一个Prod.proto
1 | protobuf复制代码syntax = "proto3"; //版本号 |
- 重新生成
pb.go
_grpc.pb.go
,和生成新的gateway需要的pb.gw.go
生成
Prod.pb.go
、Prod_grpc.pb.go
1 | bash复制代码cd pb && protoc --go_out=../services --go_opt=paths=source_relative \ |
生成
Prod.pb.gw.go
1 | bash复制代码protoc -I . \ |
- 编写ProdService 文件
1 | go复制代码package services |
- 编写http 服务文件
1 | go复制代码package main |
- 启动
- 先启动grpcServer
- 再启动httpServer
这里grpc 端口是2333
http端口是23333
结尾
到此,http 和 grpc 都可以进行访问了
demo代码地址 :
client :github.com/Charlotte32…
server: github.com/Charlotte32…
本文转载自: 掘金