访问 gRPC

qianmoQqianmoQ· 更新于 2026-10-05· 阅读 3 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

访问 gRPC

学习如何访问 gRPC。

brpc 中访问和提供 http/h2 服务的基础内容见 http_client 和 http_service。

下文中的节名即为协议名,可直接设置到 ChannelOptions.protocol 中。冒号之后的内容是该协议的参数,用于动态选择派生行为,但基础协议仍然是 http/1.x 或 http/2。因此,这些协议在服务端只显示为 http 或 h2/h2c。

http:json, h2:json

非空的 pb 请求被序列化为 json,并设置为 http/h2 请求的 body。此时 Controller.request_attachment() 必须为空,否则 RPC 失败。

非空的 pb 响应由 http/h2 响应的 body 解析出的 json 转换而来。

http/1.x 默认即为此行为,因此 "http" 与 "http:json" 完全等价。

http:proto, h2:proto

非空的 pb 请求被序列化(采用 pb 的 wire 格式),并设置为 http/h2 请求的 body。此时 Controller.request_attachment() 必须为空,否则 RPC 失败。

非空的 pb 响应从 http/h2 响应的 body(pb wire 格式)中解析而来。

http/2 默认即为此行为,因此 "h2" 与 "h2:proto" 完全等价。

h2:grpc

gRPC 的默认协议。详细格式参见 gRPC over HTTP2。

使用 brpc 的客户端只需将 ChannelOptions.protocol 改为 "h2:grpc",即可与 gRPC 通信。

使用 brpc 的服务端无需修改代码,gRPC 客户端即可自动访问。

gRPC 默认将消息序列化为 pb wire 格式,因此 "h2:grpc" 与 "h2:grpc+proto" 完全等价。

TODO:gRPC 的其他配置

h2:grpc+json

与 h2:grpc 相比,该协议将消息序列化为 json 而非 pb,gRPC 可能并不直接支持。例如,grpc-go 用户可参考 此处 注册相应的 codec 并开启该支持。


最后修改于 2022 年 2 月 26 日:[brpc website 1.0 fix links jump problem in overview page (14eec1ac1)]](https://github.com/apache/brpc-website/commit/14eec1ac1805c1dde9f10d0353984bde2127294c)

评论

登录后参与评论

正在加载评论…