Jump to content

Апач бережливый

(Перенаправлено с «Бережливость (протокол)
Апач бережливый
Оригинальный автор(ы) Фейсбук, Инк.
Разработчик(и) Фонд программного обеспечения Apache
Стабильная версия
0.19.0 / 2 сентября 2023 г .; 10 месяцев назад ( 2023-09-02 ) [1]
Репозиторий Комиссионный репозиторий
Написано в ActionScript , C , C# , C++ , D , Dart , Delphi , Erlang , Go , Haskell , Haxe , Java , JavaScript , Node.js , OCaml , Perl , PHP , Python , Rust , Scala , Smalltalk
Тип удаленного вызова процедур Платформа
Лицензия Апач 2.0
Веб-сайт бережливость .apache .org

Thrift — это IDL ( язык определения интерфейса ) и двоичный протокол связи. [2] используется для определения и создания сервисов для языков программирования . [3] Его разработал Facebook . С 2020 года это проект с открытым исходным кодом в Apache Software Foundation .

Он использует структуру удаленного вызова процедур (RPC) и объединяет программный стек с механизмом генерации кода для создания кроссплатформенных сервисов. Thrift может подключать приложения, написанные на различных языках и платформах, включая ActionScript , C , C++ , [4] С# , [5] Cocoa , Delphi , Erlang , Go , Haskell , Java , JavaScript , Objective-C , OCaml , Perl , PHP , Python , Ruby , Elixir , Rust , Scala , Smalltalk и Swift . [6] Реализация была описана в техническом документе, опубликованном Facebook в апреле 2007 года и сейчас размещенном на Apache. [7] [8]

Архитектура

[ редактировать ]
Архитектура клиент/сервер Apache Thrift API

Thrift включает в себя полный стек для создания клиентов и серверов. [9] Верхняя часть генерируется кодом из определения Thrift. Из этого файла сервисы генерируют коды клиента и процессора. В отличие от встроенных типов, созданные структуры данных передаются в результате сгенерированного кода. Протокол и транспортный уровень являются частью библиотеки времени выполнения . С помощью Thrift можно определить службу и изменить протокол и транспорт без перекомпиляции кода. Помимо клиентской части, Thrift включает в себя серверную инфраструктуру, такую ​​как блокирующие, неблокирующие и многопоточные серверы. Базовая часть стека ввода-вывода реализована по-разному для разных языков программирования. [9]

Thrift поддерживает ряд протоколов: [9]

  • TBinaryProtocol — двоичный формат, не оптимизированный для экономии места . Обрабатывается быстрее, чем текстовый протокол.
  • TCompactProtocol – более компактный двоичный формат.
  • TJSONProtocol — использует JSON для кодирования данных.
  • TSimpleJSONProtocol — протокол только для записи, который не может быть проанализирован Thrift, поскольку он удаляет метаданные с помощью JSON. Подходит для анализа скриптовыми языками. [10]

Поддерживаемые транспорты :

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

Thrift также предоставляет ряд серверов, а именно:

  • TNonblockingServer — многопоточный сервер, использующий неблокирующий ввод-вывод (реализация Java использует каналы NIO ). С этим сервером необходимо использовать TFramedTransport.
  • TSimpleServer — однопоточный сервер, использующий стандартный блокирующий ввод-вывод.
  • TThreadedServer — многопоточный сервер, использующий последовательность потоков для каждой модели соединения и стандартную блокировку ввода-вывода.
  • TThreadPoolServer — многопоточный сервер, использующий пул потоков и стандартную блокировку ввода-вывода.

Thrift написан на C++, но может создавать код для некоторых других языков программирования. Чтобы создать службу Thrift, необходимо написать файлы Thrift, которые ее описывают, сгенерировать код на целевом языке, написать некоторый код для запуска сервера и вызвать его из клиента. Пример такого файла описания:

enum PhoneType {
  HOME,
  WORK,
  MOBILE,
  OTHER
}

struct Phone {
  1: i32 id,
  2: string number,
  3: PhoneType type
}

service PhoneService {
  Phone findById(1: i32 id),
  list<Phone> findAll()
}

Thrift сгенерирует код на основе этой описательной информации. Например, в Java PhoneType будет enum внутри Phone сорт.

См. также

[ редактировать ]
  1. ^ «Apache Thrift — Загрузки» . Проверено 6 января 2024 г.
  2. ^ «Установка и использование Apache Cassandra с Java, часть 4 (Thrift Client)» . Sodeso – Решения для разработки программного обеспечения. Архивировано из оригинала 31 марта 2022 года . Проверено 30 марта 2011 г. Thrift — это отдельный проект Apache, который представляет собой двоичный протокол связи.
  3. ^ Пруницкий, Андрей. «Apache Thrift: Введение» . Объектные вычисления . Архивировано из оригинала 23 июля 2011 года . Проверено 11 апреля 2011 г. Используя генерацию кода, Thrift создает набор файлов, которые затем можно использовать для создания клиентов и/или серверов.
  4. ^ «Требования к экономии» . Фонд программного обеспечения Apache . Архивировано из оригинала 26 февраля 2024 года . Проверено 22 июня 2024 г. {{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  5. Фред Поттер, Экономия при приготовлении капучино. Архивировано 12 августа 2011 г. в Wayback Machine , невероятно роскошный блог Parallel48, 10 июня 2010 г.
  6. ^ Андрей Пруницкий. «Apache Thrift: генерация кода» . Объектные вычисления . Архивировано из оригинала 23 июля 2011 года . Проверено 12 апреля 2011 г.
  7. ^ Марк Сли, Адитья Агарвал, Марк Квятковски, Бережливость: реализация масштабируемых межъязыковых сервисов
  8. ^ «Особенности библиотеки» . Фонд программного обеспечения Apache . 11 июля 2019 года. Архивировано из оригинала 3 мая 2024 года . Проверено 21 апреля 2016 г.
  9. ^ Jump up to: а б с Андрей Пруницкий. «Apache Thrift: Введение» . Объектные вычисления . Архивировано из оригинала 23 июля 2011 года . Проверено 11 апреля 2011 г.
  10. ^ Скелтон, Стивен (3 августа 2013 г.). «Удобное для разработчиков журналирование запросов на сбережения» . Стивенскелтон . Архивировано из оригинала 24 января 2024 года . Проверено 3 июля 2014 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1c9a80a7855cac1b21ca15067236f89a__1721943900
URL1:https://arc.ask3.ru/arc/aa/1c/9a/1c9a80a7855cac1b21ca15067236f89a.html
Заголовок, (Title) документа по адресу, URL1:
Apache Thrift - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)