首页>>后端>>Golang->grpc构建server与client & 问题处理

grpc构建server与client & 问题处理

时间:2023-11-30 本站 点击:0

安装 gRPC

项目地址: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.gogo 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 防止结构体冲突

rmproto/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"}'


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Golang/4552.html