官网: https://github.com/apache/thrift

突然被问到 thrift的知识点, 问service mesh为什么使用 transport: thrift.NewTBufferedTransportFactory + NewHeaderTransportFactory, 协议上使用 NewHeaderProtocolFactory. 而非service mesh场景下, 却使用 transport: NewTBufferedTransportFactory, 协议上: NewTBinaryProtocolFactoryDefault

  1. 协议层: thrift 提供的协议层的实现有下面几种:
    binary: 二进制 compact: 压缩 json: simple json: debug 我们自定义了一个 HeaderProtocol, 配合的必须是 HeaderTransport. 通过对原来的transport封装实现的

  2. transport: TransportFactory: Stream: Buffered: HttpClient: MemoryBuffer: Framed: Header: 我们自定义了一个 HeaderTransport, 能够携带header信息, 比如 mesh信息. HeaderTransport只是在 原来的transport 上添加了 header信息, 原来的transport 只支持 Binary 和 Compact(内部定义).

Frame&UnFramed: 第一代是没有长度编码响应体, 是 UnFramed.