tchannel

Network multiplexing and framing protocol for RPC

Fork me on Github

TChannel

High Performance Forwarding for General RPC

TChannel is a networking framing protocol used for general RPC, supporting out-of-order responses at extremely high performance where intermediaries can make a forwarding decision quickly. It is easy to implement in multiple languages, especially JavaScript and Python.

Design Goals

TChannel uses a request/response model with out-of-order responses, where slow requests will not block subsequent faster requests at the head of the line. Large requests/responses may be broken into fragments to be sent progressively. TChannel can transport mutliple protocols between endpoints, such as HTTP+JSON and Thrift.

Components

  • tchannel-node TChannel peer library for Node.js
  • tchannel-python TChannel peer library for Python
  • tchannel-go TChannel peer library for Go
  • tchannel-java TChannel peer library for Java
  • tcurl TChannel curl program, for making manual one-off requests to TChannel servers.
  • tcap TChannel packet capture tool, for eavesdropping and inspecting TChannel traffic
  • bufrw Node.js buffer structured reading and writing library, used for TChannel and Thrift
  • thriftrw Node.js Thrift buffer reader and writer
  • thriftify Node.js Thrift object serializer and deserializer with run-time Thrift IDL compiler