Skip to main content

gRPC FAQ

note

Limits

  • 请求 Message 默认最大 4MB
  • 响应 Message 默认无限制
  • Web/ConnectRPC
    • 支持 Server Streaming
    • 不支持 Client Streaming
  • HTTP Header

proto3 optional

  • optional 会返回 zero value
    • 无法区分空值 和 optional
    • 可以使用额外的 has 方法来判断是否存在
  • proto v3.15 - 2020-04-23 增加 optional
    • v3.12-v3.14 使用 --experimental_allow_proto3_optional
    • 底层使用 oneof 实现
  • 折中方案
    • 使用 oneof
    • 使用 google.protobuf.FieldMask
    • 使用 Message 类型 - 还是会使用 pointer - 例如 google.protobuf.StringValue 替代 string
  • 参考

Trailer

gRPC 实现依赖 HTTP Trailer 能力,类似 longpulling。

transport: Error while dialing reading server HTTP response: unexpected EOF

plaintext