跳到主要内容

RPC 协议配置速查

新建内部服务应该配置什么协议?​

  • 默认路线: 使用 Thrift IDL 和普通请求响应;需要业务异常与元信息时,明确选择 TTHeader;
  • 配置位置: Client 设置传输协议,两端添加匹配的 MetaHandler;完整组装见 用户服务实战;
  • 升级检查: v0.13.0 起 Thrift 默认 Framed,旧版默认 PurePayload;不要用默认值代替双方约定;

已有服务要求其他协议时怎样选择?​

对端要求Client 配置或动作注意事项
TTHeaderWithTransportProtocol(transport.TTHeader)业务异常还需双方 MetaHandler
Apache Thrift Framedtransport.Framed确认双方 IDL 和异常契约一致
Thrift Bufferedtransport.PurePayload不携带 TTHeader 元信息
TTHeaderFramedtransport.TTHeaderFramed按对端配置匹配
标准 gRPCtransport.GRPC普通 proto3 默认并不等于 gRPC
Kitex Protobuf使用对应生成桩编码为 Protobuf 不代表兼容 gRPC

联调时为什么不能只核对 IDL?​

  • IDL: 定义方法、字段与生成类型;
  • 序列化: 将业务数据编码为字节;Thrift Binary、Protobuf 是不同编码;
  • 传输: 为消息提供边界与元信息;编码相同但外层协议不同仍可能无法调用;
  • 排错: 先对齐 IDL、服务地址与传输配置,再看 工具与排障;
  • 按需深入: 不需要先学习信封字段、SeqID、Magic、Header/Trailer 或 Hessian2,遇到互通要求再查官方协议文档;