如何在Grpc / Protobuf中进行路由并避免反序列化?

时间:2016-12-22 15:57:19

标签: protocol-buffers grpc grpc-java

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

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

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

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

我还能怎么做?

1 个答案:

答案 0 :(得分:0)

您可以通过在服务器端执行此操作来实现此目的。当服务器即将发送响应时,它可以提取该字段并将其设置为发送的初始标头的一部分。您可以使用ServerInterceptor从响应中提取所需的字段并将其添加到Metadata

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