Введение

Компания, занимающаяся файловыми системами с похожим названием,
Linux-дистрибутив

Tuxedo (Transactions for Unix, Extended for Distributed Operations) — это платформа промежуточного ПО, используемая для управления распределенной обработкой транзакций в распределенных вычислительных средах. Tuxedo — это система обработки транзакций, ориентированное на транзакции промежуточное ПО или корпоративный сервер приложений для различных систем и языков программирования. Разработанный компанией AT&T в 1980-х годах, он стал программным продуктом Oracle Corporation в 2008 году после приобретения BEA Systems. Tuxedo теперь является частью Oracle Fusion Middleware.

История

С самого начала, в 1983 году, AT&T разработала Tuxedo для обеспечения высокой доступности и предоставления чрезвычайно масштабируемых приложений, способных поддерживать приложения, требующие тысяч транзакций в секунду на общедоступных распределенных системах. Первоначальная разработка была направлена на создание и администрирование систем поддержки операций для американской телефонной компании, которым требовались возможности онлайн-обработки транзакций (OLTP). Концепции Tuxedo были основаны на операционной системе обслуживания циклов (LMOS). Tuxedo обеспечивала перенос приложений LMOS с мэйнфреймов, использующих систему управления информацией (IMS) от IBM, на гораздо более дешевые распределенные системы, работающие под управлением Unix (разработки AT&T). Первоначальная команда Tuxedo состояла из членов команды LMOS, включая Хуана М. Андраде, Марка Т. Каргеса, Терренса Дуайера и Стивена Фелтса. В 1993 году Novell приобрела подразделение AT&T Unix System Laboratories (USL), которое в то время отвечало за разработку Tuxedo. В сентябре 1993 года Tuxedo был назван "самым известным" монитором распределенной обработки транзакций, работающим на 25 различных платформах. В феврале 1996 года BEA Systems заключила эксклюзивное соглашение с Novell о разработке и распространении Tuxedo на платформах, отличных от NetWare, и большинство сотрудников Novell, работавших с Tuxedo, перешли в BEA. В 2008 году корпорация Oracle приобрела BEA Systems, и TUXEDO стала продаваться как часть линейки продуктов Oracle Fusion Middleware. Tuxedo использовался в качестве транзакционного посреднического программного обеспечения во многих многоуровневых инструментах разработки приложений. The Open Group использовала некоторые интерфейсы Tuxedo в качестве основы для своих стандартов, таких как X/Open XA и XATMI. Разработчики Tuxedo публиковали статьи о Tuxedo в начале 1990-х годов. Впоследствии Tuxedo стала основой для ряда исследовательских проектов.

Ядро передачи сообщений

Tuxedo — это, по сути, система маршрутизации и постановки сообщений в очередь. Запросы отправляются в именованные сервисы, а Tuxedo использует средства межпроцессного взаимодействия на основе памяти для постановки запросов в очередь серверам. Инициатор запроса не знает, где расположен сервер, который фактически обрабатывает запрос, и как он реализован. По сути, Tuxedo предоставил элементы сервисно-ориентированной архитектуры (SOA) за десятилетия до появления этого термина. Tuxedo может использовать содержимое сообщения для определения серверов, которые должны быть задействованы для обработки запроса, посредством маршрутизации, зависящей от данных.

Кластеризация

Сердце системы Tuxedo – доска объявлений (BB). Это сегмент общей памяти, содержащий конфигурацию и состояние домена Tuxedo. Серверы, службы, транзакции и клиенты регистрируются в BB, обеспечивая глобальное представление об их состоянии на всех машинах в домене. Для координации обновлений BB на каждой машине работает процесс Bulletin Board Liaison (BBL), поддерживающий локальную копию BB в актуальном состоянии. На главной машине запущен процесс, называемый "Distinguished Bulletin Board Liaison", который координирует обновления BB. Это позволяет каждой машине иметь представление о серверах, службах, транзакциях и клиентах, работающих на других машинах в домене. Другой процесс на каждой машине, называемый Bridge, отвечает за передачу запросов с одной машины на другую. Это позволяет Tuxedo распределять нагрузку между машинами в домене и запускать серверы и службы на нескольких машинах. Кроме того, BBL и Bridge контролируют друг друга и перезапускают в случае сбоя. В случае сбоя главной машины, другая машина, назначенная резервной, может взять на себя её функции. Поскольку машины в пределах одного домена могут иметь различную архитектуру (x86, IA32, SPARC, P Series и т.д.), Bridge также отвечает за обработку различий, например, в порядке байтов. На Oracle Exalogic Tuxedo использует возможности RDMA InfiniBand для обхода Bridge. Это позволяет клиенту службы на одной машине напрямую отправлять запрос серверу на другой машине.

Гибкие форматы буфера

Приложения Tuxedo могут использовать различные форматы сообщений в зависимости от типа передаваемых данных. Одним из наиболее популярных форматов является формат буфера FML, который во многом схож с двоичным XML или ASN.1. Буферы FML могут содержать произвольное количество именованных полей произвольного типа. Поля могут повторяться и быть вложенными. Поскольку это самоописывающийся двоичный формат, обработка полей требует незначительных накладных расходов по сравнению с разбором, необходимым для поддержки, например, XML. Буферы VIEW по сути представляют собой записи, структуры C или копикниги COBOL. Буфер VIEW имеет внешнее описание, позволяющее Tuxedo при необходимости получать доступ к полям внутри него, например, для маршрутизации, зависящей от данных. Другие форматы буферов включают XML, CARRAY (непрозрачные двоичные данные), STRING и MBSTRING (строковый буфер, содержащий многобайтовые символы). Tuxedo может автоматически и прозрачно преобразовывать буферы FML в буферы XML и обратно. Также поддерживаются пользовательские типы буферов (например, буферы JamFlex, определенные версией Tuxedo инструментария Panther RAD).

Концентраторы связи

Для удаленных клиентов (Java, CORBA или/WS) Tuxedo предоставляет концентраторы связи, называемые слушателями/обработчиками, которые обеспечивают удаленную сетевую коммуникацию. Клиенты подключаются к этим концентраторам, которые выступают в качестве прокси-серверов для клиентов. Когда клиенты отправляют запросы, слушатель/обработчик использует локальную инфраструктуру Tuxedo для выполнения запроса от имени клиента. Затем Tuxedo распределяет нагрузку между серверами в домене, предоставляющими данную услугу, даже если сервер не находится на локальной машине. Это отличается от большинства серверов приложений Java EE, где балансировка нагрузки осуществляется клиентом путем отправки запросов на разные машины в кластере.

Врата

Для облегчения обмена сервисами между доменами, Tuxedo предоставляет доменные шлюзы. Доменный шлюз позволяет импортировать и экспортировать сервисы из удаленных доменов. Это позволяет локальному домену видеть сервисы в удаленных доменах так, как если бы они были локальными сервисами. Доменные шлюзы отвечают за передачу контекста безопасности и транзакций в удаленный домен. Помимо соединения доменов Tuxedo между собой, доменные шлюзы существуют для мейнфрейм-систем, использующих TCP/IP, системную сетевую архитектуру IBM (SNA) или протоколы OSI, а также для серверов приложений Java Platform, Enterprise Edition. Для мейнфрейм-шлюзов каждая система воспринимает сервисы, импортированные из удаленной системы, как локальные сервисы и использует инфраструктуру локальной системы для взаимодействия с ними. Это означает, что Tuxedo видит транзакцию CICS как сервис Tuxedo, а CICS видит сервис Tuxedo как транзакцию CICS.

Восстановление от неисправности

BBL на каждой машине контролирует состояние всех серверов и может автоматически перезапускать вышедшие из строя серверы. Он также может обнаруживать зависшие серверы и принудительно перезапускать их при необходимости. Процесс BRIDGE в кластерной среде контролирует BBL, что исключает наличие единых точек отказа. Любые транзакции, затронутые сбоем сервера или машины и не завершившие фазу подготовки, откатываются. Транзакции, завершившие фазу подготовки, но не фазу фиксации, будут зафиксированы в ходе последовательности загрузки Tuxedo.

Мониторинг и координация операций

Приложения Tuxedo могут запрашивать, чтобы все вызовы служб и связанные с ними обновления любых ресурсов, управляемых менеджерами ресурсов (таких как базы данных), выполнялись в рамках транзакции. После начала транзакции приложением, все последующие вызовы служб, включая вложенные, включаются в эту транзакцию, даже если службы выполнялись в удаленных доменах. Затем Tuxedo координирует процесс фиксации с менеджерами ресурсов, обеспечивая атомарное обновление всех затронутых ресурсов. Управление транзакциями может осуществляться приложением или автоматически, посредством конфигурации Tuxedo, то есть транзакциями, управляемыми контейнером.

Подсистема "В очереди"

Tuxedo предоставляет подсистему очередей под названием /Q. Эта подсистема обеспечивает создание временных и постоянных очередей, позволяющих приложениям явно помещать сообщения в очередь и извлекать их из именованных очередей. Очереди могут быть упорядочены по времени поступления сообщения, времени истечения срока действия, приоритету, по принципу LIFO, FIFO или их комбинации. Управление очередями осуществляется менеджером ресурсов, соответствующим стандарту XA, что позволяет операциям с очередями участвовать в распределенных транзакциях. Предоставляется автоматический сервер пересылки сообщений из очереди, который удаляет записи из очереди и вызывает связанные службы Tuxedo, помещая ответное сообщение в соответствующую очередь ответов.

Подсистема "События"

Подсистема событий в Tuxedo поддерживает как неинициированные события, так и события, передаваемые через брокер. Неинициированные события позволяют приложениям Tuxedo отправлять уведомления клиентам, которые не ожидают ответа. События, передаваемые через брокер, позволяют приложениям подписываться на интересующие их события, и когда другое приложение публикует событие, все подписанные приложения получают его. Это позволяет приложениям использовать модель, управляемую событиями, вместо более типичной модели запрос/ответ. Кроме того, это обеспечивает модель обмена сообщениями по принципу "издатель-подписчик", которую можно комбинировать с /Q.

Дополнительные продукты

Oracle предлагает ряд дополнительных продуктов для Tuxedo.

Перехостинг мейнфреймов

В марте 2010 года Oracle объявила о выпуске двух новых продуктов. Application Runtime for CICS и Batch, а также сопутствующая Oracle Tuxedo Application Rehosting Workbench, обеспечивают перенос приложений IBM Customer Information Control System (CICS) и пакетных приложений в среду Tuxedo на распределенных системах. Благодаря автоматизированным средствам преобразования, препроцессору макросов, обеспечивающему эквивалентность API CICS, и среде выполнения пакетных заданий, аналогичной JES 2, перенос приложений с мэйнфреймов значительно упрощается.

Соль

Этот продукт предоставляет двунаправленный шлюз веб-сервисов SOAP/HTTP(S). Этот шлюз позволяет внешним SOAP-клиентам обращаться к сервисам Tuxedo без внесения каких-либо изменений в сами сервисы Tuxedo. В то же время, приложения Tuxedo могут вызывать внешние веб-сервисы так, как если бы это были локальные сервисы Tuxedo. Последняя версия SALT поддерживает WS AtomicTransactions и модули для Apache Web Server, Oracle HTTP Server и Oracle iPlanet Web Server, позволяющие создавать динамический веб-контент путем вызова сервисов Tuxedo. В версии 12.1.3 в SALT добавлена поддержка RESTful-сервисов.

TSAM Plus

Этот продукт обеспечивает централизованный мониторинг нескольких доменов Tuxedo. Агенты TSAM Plus развертываются на машинах в домене Tuxedo. Эти агенты собирают метрические данные из запущенных процессов Tuxedo в соответствии с настроенной политикой и отправляют эти данные в TSAM Plus Manager, где они используются для исторического анализа или в режиме реального времени. TSAM Plus предоставляет информацию о конфигурации, трассировке вызовов, шаблонах вызовов, выполнении служб, транзакциях и другие метрики мониторинга. TSAM Plus также осуществляет мониторинг приложений Tuxedo ART, CICS и пакетных заданий. Дополнительным компонентом TSAM Plus является плагин для Oracle Enterprise Manager Cloud Control, обеспечивающий полноценную эксплуатацию, настройку, администрирование и управление приложениями Tuxedo.

Адаптеры для магистральных систем (TMA)

Этот продукт предоставляет набор шлюзовых процессов, работающих в Tuxedo, которые взаимодействуют с мэйнфреймом, используя его собственные протоколы. Этот шлюз обеспечивает двустороннюю интеграцию между мэйнфреймом и платформой Tuxedo, представляя Tuxedo как удалённый регион CICS или IMS для мэйнфрейма, а удалённый регион CICS или IMS – как ещё один домен Tuxedo для локального приложения Tuxedo.

Адаптер JCA

Адаптер Tuxedo JCA предоставляет ресурсный адаптер, соответствующий спецификации JCA 1.5, который может быть развернут в любом JCA-контейнере Java EE (J2EE) версии 1.5 или более поздней. Адаптер поддерживает как интерфейс JCA Common Client (CCI), так и интерфейс JATMI, поддерживаемый компонентом Oracle WebLogic Tuxedo Connector в Oracle WebLogic Server. Поддерживается входящий и исходящий обмен сообщениями, а также поддержка распределенных транзакций.

Код сообщения

Обеспечивает корпоративные возможности обмена сообщениями, объединяя функциональность Oracle MessageQ и Tuxedo. Это расширяет существующую очередь сообщений /Q в Tuxedo, добавляя такие возможности, как подтверждение доставки, обмен сообщениями в режиме оффлайн и хранение с последующей пересылкой.