问题标签 [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 投票
1 回答
2265 浏览

go - protoc-gen-go-rpc:程序未找到或不可执行 - 我从哪里获得 protoc-gen-go-rpc?

我们正在使用 protoc-gen-go v2(v2 是 google.golang.org/protobuf,v1 是 github.com/golang/protobuf)

当我们尝试编译我们的 gRPC 服务时,它告诉我们plugins不再支持,我们应该改用--go-grpc_out

使用时--go-grpc_out,它告诉我们我们需要protoc-gen-go-rpc

你在哪里找到,或者你如何安装protoc-gen-go-rpc

更新:我们刚刚在 Reddit 上找到了这篇文章以获取更多信息 https://www.reddit.com/r/golang/comments/fe3a4k/documentation_on_getting_grpc_working_with_the/

0 投票
0 回答
1502 浏览

go - Go GRPC 双向流性能

我们正在开发一个高频交易平台,并在我们的一个组件中使用 golang 实现了 grpc。我们需要在我们的一个用例中使用双向流,我们在下面的代码中做了一个示例实现,但是当我们通过检查日志的时间戳之间的差异来测试代码的性能时

我们发现从客户端调用流的.Send方法并通过在服务器端调用.Recv接收相同的数据大约需要 400-800 微秒,这对我们来说太短了。我们需要最大 10-50 微秒的性能,当我们阅读指南时,我们看到如果客户端和服务器都在同一台计算机上,grpc 可以达到纳秒(这正是我们的情况)

所以我认为我们缺少一些选项或一些性能技巧。有谁知道我们可以做些什么来增加这个性能问题

客户代码:

服务器代码:

0 投票
2 回答
677 浏览

grpc - 当 grpc 服务器重复调用 Send 但 grpc 客户端从不调用 Recv 时会发生什么?

我有一个可能会不时阻塞的 grpc 客户端应用程序,这会导致它在一段时间内无法调用 grpc Recv 函数。在这种情况下,grpc 服务器上的行为是什么?grpc 服务器的发送调用是否阻塞?在客户端调用 Recv 之前它会阻塞吗?

0 投票
10 回答
44250 浏览

protocol-buffers - protoc go_package 的正确格式?

我在 Go 中有一个现有项目,我正在使用协议缓冲区/gRPC。直到最近,该go_package选项都是可选的,并且生成的 Go 包名称将与 proto 包名称相同。

该文件位于项目根目录中。生成的代码文件 ( authenticator.pb.go) 位于同一位置。原型文件:

生成命令指定我要在同一目录中输出:

今天我拉出了新版本的协议缓冲区编译器和github.com/golang/protobuf/protoc-gen-go. 第一次运行时收到警告:

建议的链接或多或少没用。但本教程更明确一点:

go_package 选项定义包的导入路径,该路径将包含此文件的所有生成代码。Go 包名称将是导入路径的最后一个路径组件。例如,我们的示例将使用包名“tutorialpb”。

将此选项添加到 proto 文件并重新运行命令后,输出将在此路径中结束,相对于项目根目录。就像是:

我尝试了以下替代go_package名称:

  • .
  • authenticator

生成发生在正确的位置,但我收到了警告:

那么在不破坏项目布局的情况下,正确的做法是什么呢?

0 投票
1 回答
379 浏览

go - 尝试将 golang 中的值分配给类型指针的切片时遇到无效的内存地址

在 Go 中编写 gRPC 服务器时,我有点迷失了这种恐慌

这是我正在尝试做的事情,试图创建一段测试数据:

TableHeader 有这个结构

并尝试使用 rpc 服务中的以下内容来处理上面创建的测试数据

0 投票
1 回答
192 浏览

grpc-go - golang中GRPC客户端服务器架构中的原型不匹配

我在客户端有一个 proto 文件,在服务器中有一个,但是客户端 protobuf 中特定属性的字段编号在服务器 proto 中必须相同。

0 投票
1 回答
1365 浏览

go - 如何在 grpc 的状态错误对象的详细信息中发送自定义 proto

我正在尝试在我的 grpc 调用的错误响应中发送自定义原型。按照这个,应该是可以的。

这是代码。

我有这些 GRPC API 的 grpc 和 http 处理程序。HTTP 服务器中使用的 Marshaler 是github.com/gogo/gateway

HTTPGRPC服务器的配置可在此处获得。当我尝试使用 HTTP 调用访问 API 时,这是我得到的响应。

HTTP 错误:

type_url与 google 一起提供,因为它在golang proto code中进行了硬编码。但这在 JSON 中表示 Any将被反序列化为嵌入式消息。

GRPC 客户端代码:

grpc错误:

知道是什么导致了这种混乱吗?HTTP 不会反序列化为嵌入式消息,而 GRPC 提供proto.NotFound

这可能是因为 gogo proto 是网关吗?我什至对 googleapis proto 进行了同样的尝试,errdetails.BadRequest但还是一样。

0 投票
2 回答
835 浏览

go - 为什么我不能从 grpc 得到非零响应和错误

我正在使用 golang 开发 grpc 服务,我观察到如果出现 rpc 错误,我会得到

即使我返回一个非零响应和错误。

但是我也在我的 pb.go 文件中看到:

如果 err 不是 nil ,他们会做出回应 nil,我想这就是我得到这样回应的原因。

我认为在出现错误时获得响应是没有意义的,但是,有没有办法可以从 grpc 获得非零响应和错误?

0 投票
1 回答
3037 浏览

go - 如何在 GoLang 测试用例中发送 google.protobuf.Struct 数据?

我正在使用 GRPC/proto-buffers 在 GoLang 中编写我的第一个 API 端点。我对 GoLang 比较陌生。以下是我为测试用例编写的文件

这是在上面包含的文件EndpointRequest中定义对象的方式:v1.go

这似乎有效。

但现在,我想做一些稍微不同的事情。在我的测试用例中data,我想发送一个带有键/值对的地图/字典,而不是发送一个空对象A: "B", C: "D"。我该怎么做?如果我替换Data: &structpb.Struct{}Data: &structpb.Struct{A: "B", C: "D"},我会得到编译器错误:

0 投票
2 回答
3223 浏览

go - 如何强制 Protobuf 3 字段?

我正在使用 GRPC/proto-buffers 在 GoLang 中编写我的第一个 API 端点。我对 GoLang 比较陌生。以下是我为测试用例编写的文件

这是在上面包含的文件EndpointRequest中定义对象的方式:v1.go

上面的测试用例似乎工作正常。

我设置了有效地使参数成为a强制性的验证规则,因为它要求它a至少是一个字符串。因此,如果您省略a,端点将返回 400。

但现在我想确保端点返回 400 如果c或被b省略。我怎样才能做到这一点?在 Protobufs 3 中,他们去掉了required关键字。那么如何检查是否传入了非字符串参数并做出相应的反应呢?