问题标签 [grpc-go]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4105 浏览

go - 如何在 gRPC 中识别断开连接的客户端?

我正在使用 gRPC 构建一个 API,在服务器端,我想在客户端断开连接时收到通知,识别它并基于此执行一些任务。

到目前为止,我能够使用grpc.StatsHandler方法检测到客户端断开连接HandleConn。我尝试使用上下文传递值,但无法从服务器端访问它们。

客户端:

服务器端:

我想在服务器端访问从客户端传递的值。什么是正确的方法,或者有没有其他方法可以识别已断开连接的客户端?

0 投票
0 回答
1013 浏览

go - 如何解码截获的 gRPC 请求/响应以查看 golang 中发送/接收的 protobuf 消息?

我正在拦截通过 UNIX 套接字(使用cri-api的容器套接字,使用 eBPF 执行拦截)的原始 gRPC 请求/响应,并且我想弄清楚正在发送/接收的内容。我可以访问用于使用gRPC 插件生成 gRPC 接口的.proto文件,因此应该可以这样做,但我不确定如何开始,因为我不是 gRPC 连接的一部分。

我怎样才能在golang中做到这一点?

0 投票
2 回答
1643 浏览

docker - 我尝试在 docker 中部署 gRPC (go) 服务器并在本地端口中公开端口,但端口绑定不起作用

我尝试在 docker 中部署 gRPC 服务器和 mongodb。之后,我尝试将 docker 端口绑定到我的本地端口。mongodb 端口绑定工作正常。但是,gRPC 服务器端口没有绑定我的本地端口

像这样我在 docker-compose.yml 中尝试过

码头工人-compose.yml

在客户端 gRPC 文件中,我使用了主机和端口,例如0.0.0.0:50051

但它不起作用。我找不到任何错误,所以我认为我做错了什么。

0 投票
1 回答
279 浏览

ssl - gRPC 是否在 TLS 握手期间检查 CRL/OSCP 响应程序?

在使用 gRPC+protobuf 进行相互客户端-服务器身份验证期间,是否有 CRL 和/或 OSCP 响应程序检查证书状态?

我需要确保我可以撤销我的 PKI 上的证书,并且即使证书仍然有效,后续调用也会被阻止。

0 投票
2 回答
960 浏览

go - GRPC 消息结构

我正在将遗留应用程序(微服务和单体)迁移到使用 GRPC 的过程中。整个代码库目前都在 GO 中。

我已经开始为我的消息建模,它们看起来与我在应用程序代码中使用的结构非常相似。我定义了两次相同的对象似乎很奇怪,但使用消息对象作为核心结构似乎也很奇怪。不过,似乎我会有很多内存密集型数据封送处理。下面是消息和结构的示例,以及它们的相似程度。

在决定如何为我的消息建模方面是否有任何建议/最佳实践?它们应该与我的核心结构对齐吗?我不应该关心从我的 Golang 结构到消息中必须发生的所有编组吗?

如果我问这样一个基本问题,请原谅我,因为我对协议缓冲区和 GRPC 非常陌生。

消息原型定义:

结构定义:

0 投票
3 回答
14194 浏览

go - rpc 错误:代码 = 未实现 desc = RPC 方法未实现

我一直在尝试在 Go 中创建一个 grpc 客户端,并且我已按照官方grpc站点中显示的正确说明进行操作。当我启动用 node.js 编写的 grpc 服务器时,连接运行良好,但是在 Go 中编译协议缓冲区并使用正确的 grpc 客户端配置创建客户端接口时,我遇到了错误。

这是我的identity.pb.go.

这里是identity.proto

这是我的main.go

我希望传递正确的谷歌身份验证令牌的输出可以让我得到正确的用户详细信息

但得到了

这是我的 github 存储库: Go grpc 客户端Node JS grpc 服务器

0 投票
1 回答
6716 浏览

go - grpc-go over https:失败的 rpc 错误:代码 = 不可用 desc = 传输正在关闭:

注意:这是在 Kubernetes 的容器中运行的。

我已经成功地完成了这个非常简短的描述:https ://knative.dev/docs/serving/samples/grpc-ping-go/

成功:

但是,如果我在 https 的 knative 设置上从网关运行 443,它就不起作用:

示例中的客户端代码和服务器代码。服务器没有监听 tls,但是到服务器的连接是通过 https 的。

只是为了确保,我知道 https 是从一个简单的 hello-go 文本回复中磨损的。

0 投票
2 回答
7871 浏览

go - Golang 中的 GRPC 连接管理

我对 GRPC 比较陌生,想确保我使用 golang 正确地进行连接管理。我不想为每次通话都创建一个新连接,但我也不想在扩展时产生瓶颈。

我所做的是在 init 函数中创建一个连接:

然后对于每个功能,我将使用该连接来创建一个客户端:

这是处理 grpc 连接的可接受方式吗?有什么更好的方法推荐吗?

非常感谢。

0 投票
3 回答
1070 浏览

architecture - 微服务中的 grpc 组织

我正在使用微服务架构创建一个系统。有两个微服务AB,每个都存在于自己的存储库中。

有一个user.proto包含 protobuf 定义和 gRPC 方法签名的文件。A使用生成user.pb.go作为服务器。B用作user.pb.go客户(的A)。

构造它的一种方法是在 中出现 proto 定义A,并B具有对以下的代码依赖A

另一种方法是拥有另一个P包含 proto 定义的 repo,AB取决于新的 repo:

或者新的 repo 可能只包含 proto 文件,并在 A 和 B 中生成代码:

这里有什么更好的方法?

0 投票
3 回答
989 浏览

go - gRPC 服务器无故停止

我的 Go gRPC 服务器没有我自己停止就停止了。现在,每当我看到它每 30 或 60 分钟没有响应时,我都需要通过输入命令“go run server.go”来重新启动服务器。

这是正常的吗?我需要在特定时间后重新启动服务器吗?