访问 gRPC
访问 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)
评论
登录后参与评论
KnowForge