Enduro/X

Материал из Викиреальностя
Перейти к: навигация, поиск
Enduro/X
Тип Application server, Message-oriented middleware, Enterprise messaging system, SOA
Разработчик Mavimax Ltd
Язык ­про­грам­ми­ро­ва­ния C, C++, Go
ОС Linux, FreeBSD, IBM AIX, Oracle Solaris, Cygwin, macOS
Текущая версия 3.5.9
Лицензия Коммерческая или GPL v2
Состояние Активный
Сайт endurox.org

Enduro/X — это открытое кроссплатформенное программное обеспечение для обработки распределенных транзакций. Enduro/X создан на хорошо зарекомендовавших себя API, таких как X/Open объединенном с XATMI и X/Open XA. Платформа разработана для приложений работающх в реальном времени с возможностью кластеризации. Встроенные функции Enduro/X являются альтернативой Oracle (R) Tuxedo. Программа использует очередность ядра POSIX, которая обеспечивает высокую пропускную способность при межпроцессном взаимодействии.

Содержание

[править] Функционал

Платформа позволяет вносить изменения без остановки работы сервисов. Система контролирует запущенные процессы и перезапускает их в случае сбоя или зависания. Система может быть быстро перезагружена и выделено место, позволяющее подключить два или больше сервисов по схеме соединения «точка-точка». Enduro/X написан на C и имеет понятный API для C/C++.

[править] Технология

В настоящее время Enduro/X работает на ядре Linux, начиная с версии 2.6.12. Самая важная функция ядра Linux — epoll () на очередях POSIX. Эта функциональность Linux предоставляет механизм для одной очереди — множество серверов, где серверы Enduro/X опрашиваются по очереди.

Начиная с версии 3.1.2 в Enduro/X добавлена поддержка FreeBSD, IBM AIX (версии 6.1 и 7.1) и Oracle Solaris V11. В версии 3.1.2 добавленна тестовая поддержка Apple macOS и Cygwin. На системах Unix, где доступны очереди POSIX они используются и для каждой пары ATMI сервер/сервис открыта отдельная очередь и вызов сервиса выбирает очередь в круговом режиме. Что касается macOS, то в операционной системе нет поддержки POSIX, Enduro/X эмулирует очереди POSIX, которые основываются на файлах отображаемых в память в связке с процессами взаимосключения POSIX’а.

[править] Функционал

  • Стандартs API — SCA, The Open Group XATMI
  • Тип соединения — синхронный, асинхронный, дуплексный, издатель-подписчик
  • Типы буферов
    • UBF — эмитирует формат Tuxedo’s FML/FML32. UBF высокотехнологичный протокол двоичной передачи данных. Буфер индексируется двоичным поиском для определенных типов данных.
    • Формат буфера — STRING
    • Формат буфера — CARRAY (массив байт)
    • Формат буфера — JSON, доступно автоматическое преобразование из JSON в UBF.
  • Управление транзакциями — Глобальные транзакции — 2PC- X/Open XA
  • Группировка — основывается на типе соединения «точка-точка»
  • Псоредник событий — вызывается при обмене сообщениями по схеме «издатель-подписчик»
  • Защита — кластерное шифрование ссылки с помощью GNU PGP
  • Системный контроль процессов и «самовосстановление» (пингование и перезагрузка)
  • Динамическая перенастройка
  • Пользовательские расширения для сервера
  • Подсистема XATMI работает с основным демоном сервера (ndrxd)
  • Основной демон сервера (ndrxd) может быть перезапущен (в случае сбоя). После перезапуска какое-то время он изучает систему и собирает информацию о том какие сервера запущены и прочее. После окончания сбора информации он начинает работать в нормальном режиме.
  • Доступен вызов tpforward()
  • Процессы сервера ATMI могут играть роль клиентов и выполнять tpcall()
  • Обширные журналирвоание и отладка. Журналирование Enduro/X может быть настроенно на бинарный файл с различным уровнями регистрации. Так как серверы могут быть запущены вне сервера приложения, то имеется возможность отладить их из IDE или с помощью утилиты, такой как valgrind.
  • Для гарантии качества проект использует unit-тестирование и комплексное тестирование
  • Создан в профильном ATMI сервисе
  • Переменные окружения могут быть модернизированны для процессов XATMI сервера без перезагрузки приложения.
  • Универсальный мониторинг клиенсткого процесса (cpm). Подсистема позволяет запустить/остановить/контролировать клиентские исполняемые программы. При сбое работы клиентского процесса, cpm его восстанавливает.

[править] Очередность подсистемы

Enduro/X основан на приложении, которое для на стройки использует ini-файлы, читаемые XATMI сервером, поставляемом в пакете названном «cconfsrv». Обычно через tpcall() пользовательское приложение может прочитать конфигурационный файл (может разделить ini-файл или папку с ним). Метод позволяет использовать подразделы с наследованием ключа/значения от главного раздела.

[править] Конфигурация сервисов

Enduro/X основан на приложении, которое для на стройки использует ini-файлы, читаемые XATMI сервером, поставляемом в пакете названном «cconfsrv». Обычно через tpcall() пользовательское приложение может прочитать конфигурационный файл (может разделить ini-файл или папку с ним). Метод позволяет использовать подразделы с наследованием ключа/значения от главного раздела.

[править] Журналирования

Enduro/X представляет новый набор API-функций журналирования, названной tplog. Это позволяет пользователю использовать высокоэффективные, основанные на C средства, встроенные в Enduro/X. Имеется возможность изменить адрес журналирвоания с помощью файлов управления потоком исполнения. Так же есть API для журналирования запросов, что означает что пользователь и Enduro/X могут каждый для каждого запроса делать отдельный лог-файл (лог для id сеанса, лог для имени пользователя и т. д.).

[править] Сервер приложений для Go (ASG)

ASG — это совокупность проектов поверх Enduro/X. Авторы рассматривают эту совокупность как сервер приложений для Go, потому что проекты Golang соединены статически и по умолчанию нет такой вещи как компоненты. Enduro/X позволяет выполнять отдельные исполяемые двоичные файлы, которые представляет как сервисы с независимой обработкой транзакций. Эти службы могут быть перезапущены без прерывания работы сервиса. Также платформа позволяет выполнять распределенную обработку транзакций при помощи Golang. Разработчики модифицировали драйвера Oracle DB OC18 для Go, для возможности поддержки XA транзакций. Enduro/X ASG предоставляет самые современные средства распределенных транзакций для Golang.

[править] Enduro/X-PHP

Полная клиентская привязка доступна для PHP5. Клиент-процесс может быть скомпилирован на PHP в загружаемый модуль или клиент может скомпилировать процесс Enduro/X на PHP. Когда процесс PHP работает как клиент, он должен отображаться в среде Enduro/X, что может быть сделано когда приложение размещено от того же пользователя, от которого запущено PHP приложение или от пользователя, создавшего микроокружение, которое обрабатывает дальнейшее подключение к основному серверу приложения через tpbridge. Модуль доступен [1].

[править] Enduro/X-Perl

Привязка клиента и сервера доступна для языка Perl. Модуль Perl доступен здесь [2].

[править] Правообладатель

Enduro/X был приобретен ATR Baltic, Ltd Mavimax Ltd в феврале 2017 с полными правами на исходный код и текущие соглашения..[1]

[править] Примечания

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

Enduro/X относится к теме «Программное обеспечение»   ±