Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Apache Thrift

Читайте также:
  1. cat /usr/local/apache/conf/httpd.conf

Thrift - это язык определения интерфейсов, который используется для описание сервисов для ряда языков. В частности он испольщуется для удалённого вызова процедур RPC и был разработан в Facebook для масштабируемого кросс-платформенного развёртывания сервисов написанных на разных языках. Он состоит из программного стека и генератора кода. С их помощью можно прозрачно стыковать сервисы работающие на разных языках (C#, C++, Cocoa, Erlang, Java, Python, Ruby, Node.js). Несмотря на то что эта технология разработана в Facebook на данный момент она передана в open sourceи сейчас хостится на Apache Software Foundation.

Таким образом, Apache Thrift представляет собой бинарный протокол передачи данных.

Thrift содержит полный набор средств для создания клиентских и серверных частей: - верхня часть генерируется из Thrift definition, а нижняя часть (TProtocol, TTransport) представлена в виде runtime библиотек. С помощью Thrift возможно задавать сервисы и менять транспорт и протоколы путём настроек, без перекомпиляции кода.

Thrift поддерживает следующие виды протоколов:

· TBinaryProtocol — Несложный двоичный формат, простой, но не оптимизированный для экономии пространства.

· TCompactProtocol — Более компактный двоичный формат, как правило более эффективен.

· TDebugProtocol — Человечески понятный формат текста, помогающий в отладке.

· TDenseProtocol — Как и в TCompactProtocol, получение мета информации из того, что было передано.

· TJSONProtocol — Использование JSON’a для раскодировки данных.

· TSimpleJSONProtocol — Протокол «только для записи», использующий JSON. Подходит для парсинга на скриптовых языках.

Thrift поддерживает следующие виды транспортов:

· TFileTransport — Этот транспортировщик записывает в файл.

· TFramedTransport — Этот транспортировщик используется, когда применяются non-blocking сервера. Он отправляет данные во фреймах, где каждому фрейму предшествует длина информации.

· TMemoryTransport — Использование памяти для ввода / вывода. Резализация Java использует простой встроенный ByteArrayOutputStream.

· TSocket — Использует blocking socket ввода / вывода для транспортировки.

· TZlibTransport — Выполняет сжатие с помощью zlib. Используется в сочетании с другим транспортом. Отсутствует в реализации Java.

 

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

· Кросс-платформенная сериализация с меньшими накладными расходами по сравнению с альтернативами типа SOAP, так как используется бинарный формат.

· Простая библиотеука и конфигурация.

· Естественная привязка к языкам программирования (например использование Java ArrayList<String>)

· Уровни сериализацииприложения и транспорта разделены и могут подменяться

· Поставляется с тремя видами сериализации: binary, HTTP-friendly, compact binary

· Мягкое версионирование протокола, соответвенно независимые команды могут более свободно разрабатывать их части

· Отсутсвие зависимостей на нестандартное ПО, нет необходимости с дополнительных несовместимых лицензиях.

Пример описания структуры на Thrift:

enum PhoneType { HOME, WORK, MOBILE, OTHER }   struct Phone { 1: i32 id, 2: string number, 3: PhoneType type }

 

Из этого описания Thrift генерирует код на целевом языке.

Apache Avro

Поднобно Thrift Avro – это так же технология сериализации и удалённого вызова процедур, разработанная в рамках проекта Apache Hadoop. Она использует JSON для задания типов данных и протоколов (в отличие от Thrift definition) и сериализует в компактный бинарный формат. Используется в основном в рамках проекта Apache Hadoop и систем, построенных на его основе для сериализации и межпроцессной коммуникации между нодами, а так же для сохранения данных. В отличие от Thrift Avro не требует предварительной генерации кода при изменении схемы данных.

Теоретически Avro может поддерживаться любыми языками, но на практике уже существуют привязки к следующим языкам: Java, C#, C, C++, Python, Ruby.

В дополнении к поддержке JSON как языка определения типов, Avro поддерживает Avro IDL (interface description language). Он предназначен для пользователей, которые привыкли пользоватьтся традиционным IDL с синтаксисом похожим на C/C++.


Дата добавления: 2015-10-24; просмотров: 887 | Нарушение авторских прав


Читайте в этой же книге: Структурные шаблоны | Аспектно-Ориентированное Программирование (Aspect Oriented Programming, AOP) | Подходы к межсистемной интеграции | Интеграция с помощью разделяемой базы данных | Каналы и Фильтры | Уровни преобразования данных | Транзакционны протокол | Введение в Rational Unified Process | Экстремальное Программирование (Extreme Programming) | Введение. Что такое Контейнер объектов и зачем он нужен |
<== предыдущая страница | следующая страница ==>
Область видимости бина| Accurate job inquiry references solicited

mybiblioteka.su - 2015-2024 год. (0.007 сек.)