安装 gRPC
项目地址:https://github.com/grpc/grpc-go
关于grpc方面功能演示为了简便期间,统一使用非加密方式
首先确保安装了grpc 安装,安装步骤
go mod 安装方式
开启 go mod export GO111MODULE=on
开启代理 go mod export GOPROXY=https://goproxy.io
安装grpc go get -u google.golang.org/grpc
安装proto go get -u github.com/golang/protobuf/proto
安装protoc-gen-go go get -u github.com/golang/protobuf/protoc-gen-go
遇到命令不存在 command not found: protoc
缺少protobuf预先安装导致的问题。protoc-gen-go相当于只是protobuf的一个语言支持。安装protobuf参照资料mac下brewinstallprotobufwindows下https://blog.csdn.net/qq_41185868/article/details/82882206linux下https://blog.csdn.net/sszzyzzy/article/details/89946075
遇到 I/O Timeout Errors
$goget-ugoogle.golang.org/grpcpackagegoogle.golang.org/grpc:unrecognizedimportpath"google.golang.org/grpc"(httpsfetch:Gethttps://google.golang.org/grpc?go-get=1:dialtcp216.239.37.1:443:i/otimeout)
要么翻墙解决问题
要么设置 export GOPROXY=https://goproxy.io
遇到 permission denied
goget-ugoogle.golang.org/grpcgogetgithub.com/golang/protobuf/protoc-gen-go:open/usr/local/go/bin/protoc-gen-go:permissiondenied
要么给目录增加读写权限 chmod -R 777 /usr/local/go/
要么设置重新设置一下GOROOT地址指向非系统目录 比如 mac 下面 vim ~/.bashrc
#exportGOROOT=/usr/local/go#exportGOBIN=/usr/local/go/bin#exportLGOBIN=/usr/local/go/binexportGOROOT=/Users/niuyufu/go_1.12exportGOBIN=/Users/niuyufu/go_1.12/binexportLGOBIN=/Users/niuyufu/go_1.12/bin
构建grpc测试server与client
首先编写 echo.proto
运行IDL生成命令,(如:遇到命令不存在 command not found: protoc 请参照上文帮助)
protoc -I . --go_out=plugins=grpc:proto ./echo.proto
使用生成的IDL单独构建 server 与 client 即可
测试
go run pratise/proxy/grpc/grpc_server_client/server/main.go
go run pratise/proxy/grpc/grpc_server_client/client/main.go
构建grpc-gateway 测试服务端让服务器支持http
安装参考
https://github.com/grpc-ecosystem/grpc-gateway
开启 go mod export GO111MODULE=on
开启代理 go mod export GOPROXY=https://goproxy.io
执行安装命令
goinstallgithub.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gatewaygoinstallgithub.com/grpc-ecosystem/grpc-gateway/protoc-gen-swaggergoinstallgithub.com/golang/protobuf/protoc-gen-go
构建grpc-gateway 测试服务端
编写 echo-gateway.proto
运行IDL生成命令
protoc-I/usr/local/include-I.-I$GOPATH/src-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis--go_out=plugins=grpc:protoecho-gateway.proto
删除 proto/echo.pb.go 防止结构体冲突 rm proto/echo.pb.go
运行gateway生成命令
protoc-I/usr/local/include-I.-I$GOPATH/src\-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis--grpc-gateway_out=logtostderr=true:protoecho-gateway.proto
使用生成的IDL单独构建 server
使用浏览器测试 server
curl'http://127.0.0.1:8081/v1/example/echo'-d'{"message":"11222222"}'