问题标签 [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 回答
191 浏览

go - GRPC-GO:生成的 pb.go 文件中未显示客户端存根

我正在尝试从官方文档中学习 GRPC,这是我遵循grpc-go的教程

使用此命令生成原型

上述命令将helloworld.pb.go毫无问题地生成文件,但问题是生成的文件中缺少客户端存根的代码

我从客户端连接得到的实际错误是

未定义:helloworld.NewGreeterClient

这是从文件中的行发生c := pb.NewGreeterClient(conn)greeter_client/main.go

背后的原因是因为在生成的文件中没有生成客户端存根

0 投票
1 回答
6086 浏览

kubernetes - 如何在 GKE 上设置 GRPC Ingress(使用 nginx-ingress)

早上好。我有一个 GRPC 服务器,我想在 Google Kubernetes Engine 上提供服务。我的集群已经nginx-ingress安装了控制器,我目前正在使用它来提供 http/https 流量。这是我试图用来托管 GRPC 服务器的入口资源:

这是应用程序的服务/部署:

当我运行grpc_cli ls bar.foo.com:443(使用grpc_cli)时,我收到以下错误:

来自的错误nginx-controller如下:

关于这里有什么问题的任何想法?或者关于如何调试这个的任何想法?

0 投票
2 回答
126 浏览

grpc - gRPC go:在服务级别应用拦截器

gRPC 拦截器通过ServerOption. 请参阅文档 如何在服务级别应用拦截器。例如,我可能只需要为受保护的服务应用身份验证器拦截器。这可能吗?

0 投票
1 回答
1016 浏览

go - golang grpc transport.newBufWriter 和 bufio.NewReaderSize 不释放内存

我在 golang 中有一个简单的 grpc 服务器,它对对象执行 CRUD 操作。但是,当我运行它时,即使请求停止,内存也不会下降。heap show 的 pprof 有以下结果:

谁能指导我如何解决这个内存问题?服务器使用默认选项运行,我什至启用了 debug.FreeOSMemory() 函数来释放内存。

0 投票
1 回答
5637 浏览

protocol-buffers - protobuf 导入 google/protobuf/timestamp.proto

我的原型文件是:

我生成代码的命令和产生的错误是:

我的协议版本是:

我已遵循本指南并查看了此问题。如何导入众所周知的类型?我需要下载其他东西吗?我如何知道我当前安装的确切众所周知的类型是什么?谢谢你。

0 投票
1 回答
704 浏览

go - 基于 Go 的 grpc 服务器流不断堆积对 Go 客户端的响应

抱歉,如果这是一个菜鸟问题,我是 grpc 的服务器端流媒体的新手。

我现在在流向客户端的服务器上的功能中拥有什么

//跳过一些行// res, _ := http.DefaultClient.Do(req)

// 跳过一些行//

log.Println("计算要发送到客户端的总行数", len(currArrData))

// 循环响应并将其发送到客户端

对于 i := range currArrData {

// 完成后返回 nil return nil }

我面临的问题 在客户端我有接收此响应的功能,休眠 n 分钟并再次请求响应。

客户在第一次通话中确实得到了预期的响应,但是对于每个后续通话都会发生一些奇怪的事情,这是我当前的问题,我尝试以下面每个后续通话的形式进行说明:

从客户端调用 1 到服务器 --> 服务器返回 200 行

客户睡眠 n 分钟

从客户端调用 2 到服务器 --> 服务器返回 400 行!!(基本上每行是 200 + 200 的两倍)

客户睡眠 n 分钟

从客户端调用 3 到服务器 --> 服务器返回 600 行!!(200+200+200)

概括

我确实在客户端检查错误== io.EOF,现在停止从服务器到客户端的这种响应堆叠的唯一方法是停止服务器并重新启动。

我不确定我在这里遗漏了什么,以确保我只发送我从 GET 请求中收到的实际和准确的响应。将不胜感激任何提示。

更多信息

部分来自 proto 文件中的 gRPC protobuffer def

上述 gRPC 服务端 impl 的完整代码

检查上述 gRPC impl 的测试用例

我只是启动一个测试 grpc 服务器并在这个测试用例中调用该 grpc。客户端上的实现与接收数据相同。

0 投票
1 回答
97 浏览

kubernetes - Kubemq-go 缺少标签以响应通过 GRPC 的查询

我正在开发一个通过集群中的 kubemq 交互的微服务。当发送带有一些标签的查询响应(通过 GRPC 协议)时:

我发现我在接收者的响应中看不到它们:

输出显示:

所以 response.Tags 是空的。然后我看了一下官方查询示例https://github.com/kubemq-io/kubemq-go/blob/master/examples/rpc/query/main.go。注意它使用的是休息协议

在我为查询响应添加了一些标签之后(如本文的第一个代码所示),它在响应中正确显示了标签,但是当我将协议切换到 grpc 时:

它开始停止在响应中显示标签。

我在这里做了一些更新的 kubemqgo 示例https://github.com/Aidamir/kubemq-go/tree/master/examples/rpc 说明了这个问题。有 2 个目录 query-tags-rest、query-tags-grpc 和 query 是我用作源的官方查询示例。客户端协议只有少量修改。请解释一下,为什么使用 grpc 时标签不发送?文档中可能缺少一些协议限制吗?

0 投票
1 回答
2291 浏览

go - “go.etcd.io/etcd/clientv3/balancer/picker” - 未定义:balancer.PickOptions

我在 golang 中收到以下错误

我努力了

但仍然遇到同样的问题。我的grpc版本是v1.26.0

有什么解决办法吗?

0 投票
1 回答
899 浏览

go - Golang gRPC 默认值

给定以下 protobuf 定义:

然后我有一个案例,我只想从客户端发送 Foo 字符串,没问题。问题出现在服务器中,我想知道 From 和 To 是否有值(UNIX 时间戳)。如果客户端没有明确设置该值,那么 Go 会将值设置为 0,这是一个完全有效的 Unix 时间戳。在这一点上,我不知道客户是打算给我 1970-01-01 00:00:00 还是打算把它留空。

我可以添加两个布尔值来说明客户是否设置了 From 和 To,但我觉得应该有比这更优雅的解决方案。

有没有办法实际找出客户端是否打算发送空值,或者它是否实际上将值设置为0?字符串等也是如此""

0 投票
1 回答
1539 浏览

grpc - Istio 导致 grpc 流中频繁断开连接

我正在尝试通过 istio 入口将来自外部世界的 grpc 流设置到 istio 集群中。我能够建立连接,但我看到每 60 秒重置一次连接。

容器日志在中断之前告诉“rpc 错误:code = Unavailable desc”

查看入口和特使日志。没什么帮助。附在下面。

我们应该在 grpc 流中添加任何额外的东西来工作吗?

集群默认启用 mTLS,源和目标 pod 是部署而不是有状态集。