stringtranslate.com

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

Thrift — это язык определения интерфейса и двоичный протокол связи [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 , [6] Rust , Scala , Smalltalk и Swift . [7] Реализация была описана в техническом документе, опубликованном Facebook в апреле 2007 года и сейчас размещенном на Apache. [8] [9]

Архитектура

Архитектура клиент/сервер Apache Thrift API

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

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

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

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

Преимущества

Некоторые заявленные преимущества бережливости включают: [12]

Создание бережливого сервиса

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

enum PhoneType { ДОМ , РАБОТА , МОБИЛЬНЫЙ , ДРУГОЙ }      struct Phone { 1 : идентификатор i32 , 2 : номер строки , 3 : тип PhoneType }           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 (экономный клиент)» . Sodeso – Решения для разработки программного обеспечения . Проверено 30 марта 2011 г. Thrift — это отдельный проект Apache, который представляет собой двоичный протокол связи.
  3. ^ Эндрю Пруницкий. «Apache Thrift: Введение». Объектные вычисления . Архивировано из оригинала 23 июля 2011 г. Проверено 11 апреля 2011 г. Благодаря простому и понятному языку определения интерфейса (IDL) Thrift позволяет [пользователям] определять и создавать сервисы, которые одновременно могут использоваться и обслуживаться на многих языках. Используя генерацию кода, Thrift создает набор файлов, которые затем можно использовать для создания клиентов и/или серверов. Помимо совместимости, Thrift может быть очень эффективным благодаря уникальному механизму сериализации, который эффективен как во времени, так и в пространстве.
  4. ^ Требования к экономии, см. этот выпуск для поддержки Windows.
  5. Фред Поттер, Экономия при приготовлении капучино. Архивировано 12 августа 2011 г. в Wayback Machine , невероятно роскошный блог Parallel48, 10 июня 2010 г.
  6. ^ pinterest/elixir-thrift, Pinterest, 05 февраля 2020 г. , получено 6 февраля 2020 г.
  7. ^ Эндрю Пруницкий. «Apache Thrift: генерация кода». Объектные вычисления . Архивировано из оригинала 23 июля 2011 г. Проверено 12 апреля 2011 г. Thrift поддерживает многие языки программирования тоже в разной степени. Полный список приведен ниже. Будьте осторожны, прежде чем предполагать, что именно потому, что ваш язык имеет некоторую поддержку, он поддерживает все функции Thrift. Например, Python поддерживает только TBinaryProtocol. Cocoa, C++, C#, Erlang, Haskell, Java, OCaml, Perl, PHP, Python, Ruby и Smalltalk.
  8. ^ Марк Сли, Адитья Агарвал, Марк Квятковски, Бережливость: реализация масштабируемых межъязыковых сервисов
  9. ^ «Особенности библиотеки — Thrift Wiki» . Проверено 21 апреля 2016 г.
  10. ^ аб Эндрю Пруницки. «Apache Thrift: Введение». Объектные вычисления . Архивировано из оригинала 23 июля 2011 г. Проверено 11 апреля 2011 г. Верхняя часть стека генерируется кодом из файла определения Thrift. Результатом бережливых сервисов является создание кода клиента и процессора. На схеме они обозначены коричневыми прямоугольниками. Отправляемые структуры данных (кроме встроенных типов) также приводят к созданию сгенерированного кода. В результате появляются красные прямоугольники. Протокол и транспорт являются частью библиотеки времени выполнения Thrift. Таким образом, с помощью Thrift вы можете определить службу и свободно менять протокол и транспорт без повторной генерации кода. Thrift также включает в себя серверную инфраструктуру для объединения протоколов и транспорта. Доступны блокирующие, неблокирующие, одно- и многопоточные серверы. Часть стека «Базовый ввод-вывод» различается в зависимости от рассматриваемого языка. Для сетевого ввода-вывода Java и Python встроенные библиотеки используются библиотекой Thrift, а реализация C++ использует свою собственную реализацию.
  11. Скелтон, Стивен (3 августа 2013 г.). «Удобное для разработчиков журналирование запросов на сбережения» . Проверено 3 июля 2014 г.
  12. ^ Руководство программиста по Apache Thrift, Рэнди Абернати, Manning Publications, 2019, ISBN 978-1-6172-9616-1 

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