Thrift

Работу с Thrift можно разделить на следующие слои:

  • Сервер
  • Протокол
  • Транспорт

Протокол

  • TBinaryProtocol — простой двоичный формат, кодирующий числовые значения как двоичные, а не преобразующий их в текст.
  • TCompactProtocol — очень эффективное плотное кодирование данных (подробнее см. ниже).
  • TDenseProtocol — похож на TCompactProtocol, но удаляет метаинформацию из передаваемых данных и добавляет её обратно на стороне получателя. TDenseProtocol всё ещё экспериментальный и пока недоступен в реализации на Java.
  • TJSONProtocol — использует JSON для кодирования данных.
  • TSimpleJSONProtocol — протокол только для записи с использованием JSON. Подходит для разбора скриптовыми языками.
  • TDebugProtocol — использует читаемый человеком текстовый формат для помощи в отладке.

Транспорт

  • TSocket — использует блокирующий ввод-вывод через сокет для передачи данных.
  • TFramedTransport — отправляет данные в кадрах, где каждый кадр предваряется указанием его длины. Этот транспорт необходим при использовании неблокирующего сервера.
  • TFileTransport — этот транспорт осуществляет запись в файл. Хотя этот транспорт не входит в реализацию на Java, его должно быть достаточно просто реализовать.
  • TMemoryTransport — для ввода-вывода использует память. Реализация на Java внутренне использует простой ByteArrayOutputStream.
  • TZlibTransport — выполняет сжатие с помощью zlib. Используется вместе с другим транспортом. В реализации на Java недоступен.

Friend:: Trino thrift connector. Golang