【问题标题】:Configuring Envoy proxy "retry" mechanism for gRPC service为 gRPC 服务配置 Envoy 代理“重试”机制
【发布时间】:2019-03-18 19:26:15
【问题描述】:

我正在尝试为用 Go 编写的 gRPC 服务配置 Envoy 代理“重试”机制。 gRPC 重试目前仅支持响应标头中的 gRPC 状态代码。有没有办法在 header 中发送状态码以便 Envoy 可以拦截?

【问题讨论】:

  • gRPC 库应该适当地处理状态码的传递(参见godoc.org/google.golang.org/grpc/status)。您是否有代码示例说明您认为应该有效的方法以及您尝试过的方法?
  • @benjaminjosephw 你说得对,错误对象中的错误代码是正确地从 gRPC 服务器传输到客户端的。但是 Envoy 代理需要在响应头中发送错误代码。我一直无法找到实现这一目标的方法。
  • 以防万一你错过了,看看github.com/improbable-eng/grpc-web。也许您可以删除 Envoy 层。

标签: go grpc envoyproxy grpc-go


【解决方案1】:

您可以创建一个指向您的 extauth 服务器的侦听器,该侦听器将拥有一个带有重试策略的虚拟主机(例如 127.0.0.1 端口 9000)

然后为您的 extauth 创建另一个指向先前创建的侦听器的集群,并将其用于 extauth 过滤器

所以调用将转到客户端 -> 侦听器 -> extauth 过滤器 -> 带有重试的新侦听器 -> extauth 服务

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2021-10-15
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多