gRPC HTTP/1.1 桥接

这是一个简单的过滤器,可以将不支持gRPC响应的HTTP/1.1客户端桥接到兼容的gRPC服务器。它的工作原理如下:

  • 发送请求时,过滤器会查看连接是否为HTTP/1.1,请求内容类型为application/grpc
  • 如果是这样,当收到响应时,过滤器会缓存并等待预告片,然后检查grpc-status代码。如果不为零,则过滤器将HTTP响应代码切换为503。它还将grpc-statusgrpc-message复制到响应头部中,以便客户端可以根据需要查看它们。
  • 客户端应该发送翻译成以下伪首标的HTTP/1.1请求:
    • :method: POST
    • :path: <gRPC-METHOD-NAME>
    • content-type: application/grpc
  • Body应该是序列化的grpc body:
    • 1个字节的零(未压缩)。
    • 网络顺序4个字节的原始消息长度。
    • 序列化的原始消息。
  • 因为这个方案必须缓冲响应,以查找grpc-status,所以它只能用于一元gRPC API。

更多信息:http://www.grpc.io/docs/guides/wire.html

此过滤器还收集所有gRPC传输请求的统计信息,即使这些请求是通过HTTP/2传输的正常gRPC请求。

统计

过滤器收集的统计信息命名空间为cluster.<route target cluster>.grpc.

名称 类型 描述
<grpc service>.<grpc method>.success Counter Total successful service/method calls
<grpc service>.<grpc method>.failure Counter Total failed service/method calls
<grpc service>.<grpc method>.total Counter Total service/method calls

返回