【问题标题】:How to do routing and avoid deserialization in Grpc / Protobuf?如何在 Grpc / Protobuf 中进行路由并避免反序列化?
【发布时间】:2016-12-22 15:57:19
【问题描述】:

在我们的 Java 应用程序中,我们需要接受一个(大)Grpc 消息,提取一个字段,然后根据该字段的值将消息转发到另一个服务器。

我试图避免在传递消息之前完全反序列化消息的开销。

执行此操作的一种方法是将字段作为单独的查询或标头参数发送,但 Grpc 不支持它们。

另一种方法是仅从负载中提取感兴趣的字段,但 Protobuf 不支持部分或选择性反序列化。

我还能怎么做?

【问题讨论】:

标签: protocol-buffers grpc grpc-java


【解决方案1】:

您可以做到这一点的一种方法是在服务器端进行。当服务器即将发送响应时,它可以提取该字段并将其设置为发送的初始标头的一部分。为此,您可以使用 ServerInterceptor 从响应中提取所需的字段并将其添加到 Metadata

除此之外,协议缓冲区目前要求您在访问内部字段之前解析消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多