README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
gRPC-Go
Go 的 gRPC 实现:一个高性能、开源、通用的 RPC 框架,优先支持移动设备和 HTTP/2。更多信息请参阅 [Go gRPC 文档][],或直接查看[快速入门][]。
前提条件
安装
只需在代码中添加以下导入,然后 go [build|run|test]
将自动获取所需的依赖项:
import "google.golang.org/grpc"
注意: 如果您正尝试从中国访问
grpc-go,请参阅 下方的常见问题]。
了解更多
常见问题
I/O 超时错误
golang.org 域名在某些国家可能被屏蔽。当发生这种情况时,go get 通常
会产生如下错误:
$ go get -u google.golang.org/grpc
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
要构建 Go 代码,有几种选择:
-
设置 VPN 并通过它访问 google.golang.org。
-
使用 Go 模块支持:可以使用
go mod的replace功能为 golang.org 包创建别名。 在你的项目目录中:go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest go mod tidy go mod vendor go build -mod=vendor
同样,对于所有托管在 golang.org 上的传递依赖项,也需要执行此操作。有关详细信息,请参阅 golang/go issue #28652。
编译错误,undefined: grpc.SupportPackageIsVersion
请使用
go get google.golang.org/grpc 将 gRPC-Go 更新到最新版本。
如何开启日志记录
默认日志记录器由环境变量控制。按以下方式开启所有日志:
$ export GRPC_GO_LOG_VERBOSITY_LEVEL=99
$ export GRPC_GO_LOG_SEVERITY_LEVEL=info
RPC 因错误 "code = Unavailable desc = transport is closing" 而失败
此错误表示 RPC 正在使用的连接已关闭,可能的原因有很多,包括:
- 传输凭据配置错误,握手时连接失败
- 字节流被破坏,可能是由中间的代理引起的
- 服务器关闭
- Keepalive 参数导致连接关闭,例如,如果您配置了服务器定期终止连接以 触发 DNS 查找。 如果情况如此,您可能希望增加 MaxConnectionAgeGrace, 以允许更长的 RPC 调用完成。
调试此问题可能很棘手,因为错误发生在客户端,但连接关闭的根本原因在服务器端。在 客户端和服务器 上都开启日志记录,查看是否存在任何传输 错误。