~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 30C26A636EEF30B9E34F420A4A6B4326__1711209660 ✰
Заголовок документа оригинал.:
✰ Apache Thrift - Wikipedia ✰
Заголовок документа перевод.:
✰ Апач Трифт — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Apache_Thrift ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/30/26/30c26a636eef30b9e34f420a4a6b4326.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/30/26/30c26a636eef30b9e34f420a4a6b4326__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 10:57:35 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 23 March 2024, at 19:01 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Апач Трифт — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии
Апач бережливый
Оригинальный автор(ы) Фейсбук, Инк.
Разработчики) Фонд программного обеспечения Apache
Стабильная версия
0.19.0 / 2 сентября 2023 г .; 9 месяцев назад ( 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 — это язык определения интерфейса , двоичный протокол связи [2] используется для определения и создания сервисов для языков программирования. [3] Его разработал Facebook . С 2020 года это проект с открытым исходным кодом в Apache Software Foundation .

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

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

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

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

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

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

Преимущества [ править ]

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

  • Межъязыковая сериализация с меньшими издержками, чем альтернативы, такие как SOAP, благодаря использованию двоичного формата.
  • Нет XML . файлов конфигурации
  • Языковые привязки кажутся естественными. Например, Java использует ArrayList<String>. С++ использует std::vector<std::string>.
  • Формат передачи уровня приложения и формат передачи уровня сериализации четко разделены. Их можно модифицировать независимо.
  • К предопределенным стилям сериализации относятся: двоичный, HTTP-дружественный и компактный двоичный.
  • Выполняет функцию межъязыковой сериализации файлов .
  • Мягкое управление версиями [ объяснить ] протокола. Thrift не требует централизованного и явного механизма, такого как major-version/minor-version . Слабо связанные команды могут свободно развивать вызовы RPC.
  • Никаких зависимостей сборки или нестандартного программного обеспечения. Никакого сочетания несовместимых лицензий на программное обеспечение.

Создание сберегательного сервиса [ править ]

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

enum   PhoneType   { 
   HOME  , 
   WORK  , 
   MOBILE  , 
   OTHER 
 } 

 struct   Phone   { 
   1  :   i32   идентификатор  , 
   2  :   строковый   номер  , 
   3  :   PhoneType   тип 
 } 

 service   PhoneService   { 
   Phone   findById  (  1  :   i32   идентификатор  ), 
   list  <  Phone  >   findAll  (  ) 
 } 

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

См. также [ править ]

Ссылки [ править ]

  1. ^ «Apache Thrift — Загрузки» . Проверено 6 января 2024 г.
  2. ^ «Установка и использование Apache Cassandra с Java, часть 4 (Thrift Client)» . 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

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 30C26A636EEF30B9E34F420A4A6B4326__1711209660
URL1:https://en.wikipedia.org/wiki/Apache_Thrift
Заголовок, (Title) документа по адресу, URL1:
Apache Thrift - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)