stringtranslate.com

Apache бережливость

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

Он использует фреймворк удаленного вызова процедур (RPC) и объединяет программный стек с механизмом генерации кода для создания кроссплатформенных сервисов. Thrift может подключать приложения, написанные на различных языках и фреймворках, включая ActionScript , C , C++ , [4] C# , [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]

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

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

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

enum PhoneType { ДОМАШНИЙ , РАБОЧИЙ , МОБИЛЬНЫЙ , ДРУГОЙ }      структура Phone { 1 : идентификатор i32 , 2 : номер строки , 3 : тип PhoneType }           служба PhoneService { Телефон findById ( 1 : i32 id ), список < Телефон > findAll ( ) }        

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

Смотрите также

Ссылки

  1. ^ "Apache Thrift - Загрузки" . Получено 27 сентября 2024 г. .
  2. ^ "Установка и использование Apache Cassandra с Java Часть 4 (Thrift Client)". Sodeso – Software Development Solutions. Архивировано из оригинала 31 марта 2022 г. Получено 30 марта 2011 г. Thrift — это отдельный проект Apache, который представляет собой двоичный протокол связи
  3. ^ Prunicki, Andrew. "Apache Thrift: Introduction". Object Computing . Архивировано из оригинала 23 июля 2011 г. Получено 11 апреля 2011 г. Используя генерацию кода, Thrift создает набор файлов, которые затем можно использовать для создания клиентов и/или серверов.
  4. ^ "ThriftRequirements". Apache Software Foundation . Архивировано из оригинала 26 февраля 2024 г. Получено 22 июня 2024 г.{{cite web}}: CS1 maint: unfit URL (link)
  5. Фред Поттер, «Использование бережливости с капучино». Архивировано 12 августа 2011 г. в Wayback Machine , невероятно сочном блоге parallel48, 10 июня 2010 г.
  6. ^ Эндрю Пруницкий. "Apache Thrift: Code Generation". Object Computing . Архивировано из оригинала 23 июля 2011 г. Получено 12 апреля 2011 г.
  7. ^ Марк Сли, Адитья Агарвал, Марк Квятковски, Thrift: Реализация масштабируемых кросс-языковых сервисов
  8. ^ "LibraryFeatures". Apache Software Foundation . 11 июля 2019 г. Архивировано из оригинала 3 мая 2024 г. Получено 21 апреля 2016 г.
  9. ^ abc Andrew Prunicki. "Apache Thrift: Introduction". Object Computing . Архивировано из оригинала 23 июля 2011 г. Получено 11 апреля 2011 г.
  10. ^ Скелтон, Стивен (3 августа 2013 г.). «Дружественное разработчикам журналирование запросов Thrift». stevenskelton.ca . Архивировано из оригинала 24 января 2024 г. . Получено 3 июля 2014 г. .

Внешние ссылки