Jump to content

Эндуро/Х

Эндуро/Х
Разработчик(и) Мавимакс ООО
Стабильная версия
8.0.10 / 26 ноября 2023 г .; 8 месяцев назад ( 26.11.2023 )
Репозиторий
Написано в C , С++ , Го , Java
Операционная система Linux , FreeBSD , IBM AIX , Oracle Solaris , Cygwin , macOS
Тип Сервер приложений , Промежуточное ПО, ориентированное на сообщения , Корпоративная система обмена сообщениями , SOA
Лицензия AGPL v3 или коммерческая версия, LGPL v3 для использования на Java и Go
Веб-сайт [1] [2] [3]

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

Платформа позволяет вносить исправления в систему во время выполнения без прерывания обслуживания. Система отслеживает запущенные процессы и перезапускает их после сбоя или зависания. Конфигурацию системы можно динамически перезагружать, и она обеспечивает возможность кластеризации, позволяя объединять два или более экземпляров в одноранговой сети. Enduro/X написан на C и предоставляет собственные API для C/ C++ . Mavimax предоставляет привязки для языков программирования Go и Java. Сообщество предоставляет привязки для Python, PHP и Perl. Таким образом, Enduro/X можно эффективно использовать в качестве инструмента языкового взаимодействия между поддерживаемыми языками программирования.

Технология

[ редактировать ]

В настоящее время Enduro/X работает с ядрами Linux , начиная с 2.6.12. Наиболее важной функцией Linux является epoll() в очередях POSIX. Эта функциональность Linux обеспечивает механизм для одной очереди — нескольких серверов, где серверы Enduro/X опрашивают очереди. Разработчики Enduro/X включили флаг EPOLLEXCLUSIVE в основную ветку ядра Linux (начиная с версии 4.5). [1] Патч улучшил реакцию Enduro/X в случае, если одну и ту же услугу предоставляют сотни исполняемых файлов. В частности, ядро ​​больше не выполняет громоподобное стадное поведение, пробуждая все двоичные файлы, ожидающие в очереди. Теперь просыпается только один получатель сервисного вызова. В некоторых рабочих нагрузках приложения Enduro/X получают значительный прирост. Тестовый пример патча увеличил производительность рабочей нагрузки с 860 секунд до 24 секунд. [2]

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

Начиная с версии 6.0 очереди System V являются предпочтительными механизмами IPC для платформ Unix, отличных от FreeBSD и Linux. Очереди System V также обеспечивают подход распределения сообщений «одна очередь — несколько серверов» (SQMS) для эффективной балансировки нагрузки. Для балансировки нагрузки в режиме SQMS с очередями System V сервер XATMI должен быть настроен на использование адреса запроса (логического канала/очереди), по которому все серверы XATMI рекламируют одни и те же услуги. Этот режим очереди доступен для Oracle Solaris и IBM AIX. Для MacOS по-прежнему используются эмулированные очереди Posix, поскольку невозможно настроить емкость очереди в конкретной операционной системе.

  • API на основе стандартов — SCA , Открытая группа XATMI
  • Типы связи — синхронный, асинхронный, диалоговый, публикация/подписка.
  • Типизированные буферы
    • UBF (унифицированный формат буфера), который обеспечивает эмуляцию формата FML/FML32 Tuxedo. UBF — высокопроизводительный формат буфера двоичного протокола. Буфер индексируется посредством двоичного поиска по фиксированным типам данных. Начиная с версии v8.0, добавлена ​​поддержка рекурсивных буферов UBF, полей PTR и VIEW.
    • Формат буфера STRING.
    • Формат буфера CARRAY (массив байтов).
    • Формат буфера JSON , доступно автоматическое преобразование между JSON и UBF.
    • Буфер VIEW (начиная с версии 5.0+). Это предлагает отправку структуры C между процессами кросс-платформенным способом. Также это позволяет сопоставлять поля UBF с полями VIEW, тем самым помогая разработчику быстрее разрабатывать приложения за счет объединения буферов UBF и VIEW.
  • Управление транзакциями — глобальные транзакции — протокол двухфазной фиксации X/Open XA
  • Кластеризация - на одноранговой основе
  • Брокер событий (также называемый обменом сообщениями публикации и подписки)
  • Мониторинг системных процессов и самовосстановление (пинги и перезапуски)
  • Кэш службы SOA. Службы XATMI можно кэшировать в базе данных LMDB . В результате следующий вызов службы от любого локального клиента получает результаты непосредственно из кеша (в основном из прямого чтения из памяти).
  • Динамическая реконфигурация
  • Пользовательские расширения опроса сервера
  • Подсистема XATMI способна работать без демона основного сервера приложений (ndrxd)
  • Демон главного сервера приложений (ndrxd) можно перезапустить (в случае сбоя). При повторном запуске он на некоторое время переходит в режим обучения, в котором собирается информация о системе, о том, какие службы работают и т. д. После периода обучения он начинает выполнять обычные операции.
  • Доступный вызов tpforward()
  • Потоки сервера ATMI могут стать клиентами и могут выполнять tpcall().
  • Настройка таймаута вызова ATMI через вызов API tptoutset()
  • Обширное ведение журнала и отладка. Ведение журнала Enduro/X можно настроить для каждого двоичного файла с разными уровнями журнала. Поскольку серверы ATMI можно запускать вне сервера приложений, их можно отлаживать из среды программирования IDE или с помощью таких инструментов, как valgrind .
  • Для обеспечения качества в проекте используется автоматизированное модульное тестирование и интеграционное тестирование.
  • Встроенное профилирование сервисов ATMI.
  • Переменные среды можно обновлять для процессов сервера XATMI без полной перезагрузки приложения.
  • Общий монитор процессов клиента (cpm). Подсистема позволяет запускать/останавливать/мониторинг исполняемых файлов клиента. При сбое клиентского процесса cpm запустит его заново. Массивная функция администрирования клиентов позволяет легко определять множество похожих исполняемых файлов (с диапазонами подразделов) и таким же образом очень легко управлять ими всеми вместе с помощью масок регулярных выражений.
  • Начиная с версии 5.2 Enduro/X обеспечивает функцию шифрования данных конфигурации, поэтому программное обеспечение, созданное на базе Enduro/X, может соответствовать стандарту безопасности данных индустрии платежных карт (PCI/DSS).
  • Начиная с версии 6.0.17 для серверных и клиентских процессов XATMI можно установить максимальный предел резидентной и виртуальной памяти. Таким образом, когда лимит достигнут, процессы корректно перезапускаются. Эта конкретная функция приветствуется в средах, где поставщики поставляют двоичные файлы с утечками памяти, поэтому в производственных средах эти ограничения могут помочь временно справиться с ситуацией, пока она не будет решена разработчиком.
  • TMIB API для сбора системной информации.
  • Агент NetXMS для мониторинга клиентских и серверных процессов, очередей, служб, компьютеров и кластеров.
  • Полная поддержка инструментов сборки (buildserver, buildclient, buildtms). [3]
  • Потоки диспетчеризации службы XATMI.
  • Поддержка маршрутизации, зависящей от данных, для буферов UBF.
  • Автоматические транзакции для серверов XATMI.
  • Обработка приоритета обслуживания.
  • Изменение настроек журнала на лету и ротация журналов для любой программы, связанной с Enduro/X.
  • Скрытая командная платформа для публикации пользовательских команд в процессах в реальном времени.

Производительность

[ редактировать ]

С промежуточным программным обеспечением Enduro/X было проведено несколько тестов, которые показывают, что оно довольно хорошо конкурирует с Oracle Tuxedo и ZeroMQ . Enduro/X был быстрее Tuxedo на 30% в диапазоне блоков данных размером 56 КБ. [4] Enduro/X был значительно быстрее ZeroMQ в диапазоне 10–20 КБ. [5] Также в тесте, проведенном с RabbitMQ, Enduro/X показал свою силу и опередил конкурента. Для вызовов RPC Enduro/X был в несколько раз впереди, а для вызовов только для отправки RabbitMQ был немного ближе к Enduro/X. [6]

Подсистемы

[ редактировать ]

Enduro/X содержит различные подмодули, которые расширяют функциональность сервера приложений и промежуточного программного обеспечения.

Подсистема массового обслуживания

[ редактировать ]

Enduro/X предоставляет подсистему организации очередей под названием TMQ (Очередь транзакционных сообщений). Это средство обеспечивает постоянные очереди, которые позволяют приложениям явно ставить сообщения в очередь и извлекать из нее сообщения из именованных очередей. Очереди можно упорядочить по времени нахождения сообщений в очереди в порядке LIFO или FIFO. Очередями управляет XA-совместимый менеджер ресурсов, позволяющий операциям очереди участвовать в распределенных транзакциях. Предусмотрена функция автоматической пересылки очереди, которая удаляет записи из очереди и вызывает связанные службы Enduro/X ATMI, помещая ответное сообщение в связанную очередь ответов, а сообщения с ошибками — в очередь ошибок.

Услуги по настройке

[ редактировать ]

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

Службы регистрации трассировки

[ редактировать ]

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

Пакет Enduro/X Connect

[ редактировать ]

Пакет Enduro/X Connect предоставляет универсальный способ предоставления услуг XATMI для внешнего мира. Таким образом, сервис можно вызывать как обычные сервисы REST. Пакет предоставляет функции для преобразования внутренних сообщений сообщения в формат JSON и наоборот. Модуль веб-сервиса является расширяемым и предоставляет несколько вариантов преобразования данных между форматами. Модуль дополнительно поддерживает загрузку файлов, предоставление статического контента и оркестрацию глобальных транзакций через интерфейс веб-сервиса.

Пакет Enduro/X Connect также предоставляет модуль для доступа к веб-сервисам внешнего мира через внутренний сервисный вызов XATMI.

Третий компонент подключения находится в пакете Enduro/X Connect и представляет собой универсальный соединитель TCP/IP, который обеспечивает двунаправленный API-интерфейс службы XATMI для сокетов TCP/IP. Такая функциональность упрощает разработку приложений для Интернета вещей и банковской отрасли, где данные по разным причинам необходимо отправлять в специальных двоичных протоколах, таких как ISO8583. [7]

Сервер приложений для Go (ASG)

[ редактировать ]

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

Эндуро/X Ява

[ редактировать ]

Enduro/X версии 7.0 предлагает привязку для Java. Полнофункциональные серверы XATMI и клиентские процессы могут быть написаны на Java. Фреймворк основан на принципе многопроцессорности, поэтому серверы и клиенты XATMI имеют собственную копию JVM. Требования к классам серверов/сервисов XATMI минимальны, поэтому инфраструктуру можно рассматривать как сервер приложений POJO . Двухфазную фиксацию XA можно использовать и со стандартными драйверами JDBC . Транзакции управляются стандартным менеджером транзакций Enduro/X Core, в который JDBC загружаются драйверы для оркестрации транзакций. Пакет привязки также предлагает процесс Java Linker, называемый exjld. Он предлагает возможность связать объекты Java (файлы jar) со стандартным исполняемым процессом с зависимостью от libjvm и libjava. Таким образом, все jar-файлы могут быть упакованы в исполняемый процесс, что упрощает доставку программного обеспечения Java. Теперь каждый процесс может содержать все свои зависимости, что позволяет различным исполняемым файлам использовать разные версии общих jar-зависимостей.

Поскольку серверный процесс поддерживает как исполняемый файл Java с путем к классам, так и связанные двоичные файлы Java, демон ndrxd может загружать оба из них.

Эндуро/X-PHP

[ редактировать ]

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

Эндуро/X-Perl

[ редактировать ]

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

Приобретение

[ редактировать ]

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

Enduro/X был разработан ATR Baltic как проект с закрытым исходным кодом. Разработка началась в декабре 2009 года, и первые серийные клиенты (в основном банки) внедрили систему в конце 2012 года, когда Enduro/X достигла версии 1.0. Проект был открыт с открытым исходным кодом в 2015 году, версия v2.3.2. С этого события все разработки становятся общедоступными. Постоянно добавляются новые функции с каждым выпуском основной версии. До версии 6.0 Enduro/X была доступна под лицензией GNU GPLv2 , начиная с Enduro/X 6.0, проект переведен на лицензию GNU AGPLv3 . Начиная с версии 7.0, лицензия упрощена для использования промежуточного программного обеспечения из языков программирования Java и Go. Утверждается, что AGPL, используемый Enduro/X, не влияет на код Java или Go, использующий Enduro/X. Благодаря этим изменениям модули Enduro/X Java и Enduro/X Go (ASG) теперь выпускаются под лицензией LGPL v3 , таким образом, проекты Java и Go могут использовать промежуточное программное обеспечение на коммерческой основе с любой дополнительной лицензией, в то время как поддержка предоставляется на коммерческой основе.

См. также

[ редактировать ]
  1. ^ «Пэчворк epoll: добавить флаг EPOLLEXCLUSIVE» . patchwork.kernel.org . Джейсон Бэрон.
  2. ^ «EPOLLEXCLUSIVE Тестирование исправлений ядра Linux» . mvitolin.wordpress.com . мвитолин.
  3. ^ «Выпуск Enduro/X 7.5» . mavimax.com . Мавимакс.
  4. ^ «Эталон производительности Enduro/X VS Oracle Tuxedo» . publicwork.wordpress.com . Общественная работа.
  5. ^ «Войны высокопроизводительного промежуточного программного обеспечения: тест ZeroMQ против Enduro/X» . publicwork.wordpress.com . Общественная работа.
  6. ^ «Обзор и тест Enduro/X против RabbitMQ» . publicwork.wordpress.com . Общественная работа.
  7. ^ «Эндуро/Х Коннект» . www.mavimax.com . Мавимакс.
  8. ^ «Приобретение промежуточного программного обеспечения Enduro/X компании ATR Baltic» . www.mavimax.com . ООО "Мавимакс"
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 89b3b60cbe6713f67f0174b23d2102e2__1716925080
URL1:https://arc.ask3.ru/arc/aa/89/e2/89b3b60cbe6713f67f0174b23d2102e2.html
Заголовок, (Title) документа по адресу, URL1:
Enduro/X - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)