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 произошли от Loop Maintenance Operations System (LMOS). Tuxedo поддерживал перемещение приложения LMOS с мэйнфреймовых систем, которые использовали Information Management System (IMS) от IBM, на гораздо более дешевые распределенные системы, работающие под управлением (собственной AT&T) Unix . [1]
Первоначальная команда Tuxedo состояла из членов команды LMOS, включая Хуана М. Андраде, Марка Т. Карджеса, Терренса Дуайера и Стивена Фелтса. [2] В 1993 году Novell приобрела подразделение Unix System Laboratories (USL) компании AT&T, которое в то время отвечало за разработку Tuxedo. В сентябре 1993 года его назвали «самым известным» монитором распределенной обработки транзакций, работающим на 25 различных платформах. [3] В феврале 1996 года BEA Systems заключила эксклюзивное соглашение с Novell на разработку и распространение Tuxedo на платформах, отличных от NetWare , при этом большинство сотрудников Novell, работавших с Tuxedo, присоединились к BEA. [4] [5] В 2008 году корпорация Oracle приобрела BEA Systems , и TUXEDO был продан как часть линейки продуктов Oracle Fusion Middleware . [6] [7]
Tuxedo использовался в качестве транзакционного промежуточного программного обеспечения рядом многоуровневых инструментов разработки приложений. Open Group использовала некоторые интерфейсы Tuxedo в качестве основы для своих стандартов, таких как X/Open XA и XATMI. [8]
Разработчики Tuxedo опубликовали статьи об этом в начале 1990-х годов. [9] [10] Позже это стало основой некоторых исследовательских проектов. [11] [12] [13]
Tuxedo по своей сути является системой маршрутизации и очередизации сообщений. Запросы отправляются именованным службам, и Tuxedo использует средства межпроцессного взаимодействия на основе памяти для постановки запросов в очередь к серверам. Запрашивающая сторона не знает, где находится сервер, который фактически обрабатывает запрос, или как он реализован. По сути, Tuxedo предоставил элементы сервисно-ориентированной архитектуры (SOA) за десятилетия до того, как эта фраза была придумана. Tuxedo может использовать содержимое сообщения, чтобы определить, какие серверы следует использовать для получения запроса с помощью маршрутизации, зависящей от данных.
Сердцем системы Tuxedo является Bulletin Board (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 для обхода моста. Это позволяет клиенту сервиса на одной машине напрямую делать запрос к серверу на другой машине.
Приложения 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 Systems Network Architecture (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 анонсировала два новых продукта. [19] Application Runtime для CICS и Batch вместе с соответствующим Oracle Tuxedo Application Rehosting Workbench позволяет переносить IBM Customer Information Control System (CICS) и пакетные приложения на Tuxedo в распределенных системах. Благодаря предоставлению автоматизированных инструментов преобразования, эквивалентного API-расширения макросов препроцессора CICS и среды выполнения Batch, подобной 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 .
Этот продукт предоставляет централизованные возможности мониторинга для нескольких доменов Tuxedo. Агенты TSAM Plus развертываются на машинах в домене Tuxedo. Эти агенты собирают метрические данные из запущенных процессов Tuxedo на основе настроенной политики и отправляют данные обратно в TSAM Plus Manager, где они используются исторически или в реальном времени. TSAM Plus предоставляет информацию о конфигурации, пути вызова, шаблоне вызова, выполнении службы, транзакции и другие метрики мониторинга. TSAM Plus также отслеживает приложения Tuxedo ART CICS и Batch. Дополнительным компонентом TSAM Plus является подключаемый модуль для Oracle Enterprise Manager Cloud Control, который обеспечивает полную эксплуатацию, настройку, администрирование и управление приложением Tuxedo.
Этот продукт предоставляет набор процессов шлюза, которые работают на Tuxedo, которые взаимодействуют с мэйнфреймом, используя его собственные протоколы. Этот шлюз обеспечивает двунаправленную интеграцию между платформами мэйнфрейма и Tuxedo и делает Tuxedo видимым как удаленный регион CICS или IMS для мэйнфрейма, а удаленный регион CICS или IMS — как другой домен Tuxedo для локального приложения Tuxedo.
Адаптер Tuxedo JCA предоставляет совместимый с JCA 1.5 адаптер ресурсов, который может быть развернут в любом контейнере JCA Java EE (J2EE) 1.5 или более поздней версии. Адаптер поддерживает как интерфейс JCA Common Client или CCI, так и интерфейс JATMI, поддерживаемый компонентом Oracle WebLogic Tuxedo Connector сервера Oracle WebLogic. Поддерживается входящий и исходящий поток сообщений, а также поддержка распределенных транзакций.
Предоставляет возможности корпоративного обмена сообщениями, которые объединяют возможности Oracle MessageQ с Tuxedo. Это расширяет существующую возможность очередей сообщений /Q Tuxedo, предоставляя такие возможности, как уведомление о доставке, автономный обмен сообщениями и возможность хранения и пересылки.
BEA является эксклюзивным разработчиком и дистрибьютором системы TUXEDO на UNIX, NT и всех платформах, отличных от NetWare, а Novell будет разрабатывать приложения на основе TUXEDO для NetWare. Кроме того, большинство сотрудников Novell TUXEDO, включая персонал по разработке и маркетингу, присоединились к BEA, и BEA приняла на себя все контракты с партнерами, дистрибьюторами и клиентами TUXEDO. BEA имеет исключительные права на торговую марку TUXEDO.