Endurox
Enduro/X Middleware Platform for Distributed Transaction Processing
Install / Use
/learn @endurox-dev/EnduroxREADME
Mavimax Enduro/X® Core
Build (including atmi/ubf tests) status
| OS | Status | OS | Status |OS | Status |
|----------|:-------------:|----------|:-------------:|----------|:-------------:|
| RHEL/Oracle Linux 9| |Centos 6|
|FreeBSD 11|
|
|Oracle Linux 7|
|OSX 11.4|
|raspbian11_arv7l|
|
|SLES 12|
|SLES 15|
|Solaris 10|
|
|Solaris 11|
|Ubuntu 14.04|
|Ubuntu 18.04|
|
|RHEL/Oracle Linux 8|
|Ubuntu 22.04|
|Ubuntu 20.04|
|
NOTE: Enduro/X for non-Linux versions is available only under commercial license from Mavimax SIA
Overview
Enduro/X is Open Source Middleware Platform for Distributed Transaction Processing
It is modern, micro-services based middleware for writing distributed, open systems (program consists of several executables) based applications. Thus by using Enduro/X programmers do not have to worry about threads and concurrency anymore, the load balancing and multi-CPU loading is done by Enduro/X middleware by it self, administrator only have to determine how many copies of particular services should be started. Of-course Enduro/X supports multi-threaded applications too, but now system architects have a choice either to design multi-threaded executables or just configure number of executables to start.
For local inter-process-communication (IPC) Enduro/X uses kernel memory based Posix queues to avoid overhead of the TCP/IP protocol which is used in other middlewares or REST based micro-service architectures. Thus this approach greatly increases application speed, as kernel queues is basically a matter of block memory copy from one process to another (by contrast of 7 layers of TCP/IP stack and streaming nature of the sockets vs block copy).
Enduro/X provides SOA architecture for C/C++ applications and allows to cluster application in fault tolerant way over multiple physical servers. Enduro/X provides Oracle(R) Tuxedo(R) FML/FML32 library emulation, including boolean expressions. Other Tuxedo specific APIs are supported, such as tpforward() and work with distributed transactions (tpbegin(), tpcommit(), etc.).
Platform provides X/Open XATMI and XA interfaces/APIs for C/C++ applications. Enduro/X can at some level can be considered as replacement for Oracle(R) Tuxedo(R), Jboss Blacktie (Narayan), Hitachi OpenTP1 and other XATMI middlewares.
Dual licensed under Affero General Public License Version 3 for use in Open Source project or Commercial license Acquired from Mavimax Ltd (https://www.mavimax.com),
EnduroX have bindings for:
- Golang (client & server)
- Java (client & server)
- Python 3 (client & server)
- PHP (client)
- Perl (client & server)
Enduro/X provides following features:
- Standards based APIs - SCA, The Open Group XATMI Communication types - Synchronous, Asynchronous, Conversational, Publish/subscribe
- Typed buffers
- UBF (Unified Buffer Format) which provides emulation of Tuxedo's FML/FML32 format. UBF if high performance binary protocol buffer format. Buffer is indexed by binary search on fixed data types. Types supported include BFLD_CHAR, BFLD_SHORT, BFLD_LONG, BFLD_FLOAT, BFLD_DOUBLE, BFLD_STRING, BFLD_CARRAY, BFLD_PTR, BFLD_UBF (recursive buffers), BFLD_VIEW
- STRING buffer format.
- CARRAY (byte array) buffer format.
- JSON buffer format, automatic conversion between JSON and UBF available.
- VIEW buffer (starting from version 5.0+). This offer C structure sending between processes in cross platform way. Also this allows to map UBF fields to VIEW fields, thus helping developer quicker to develop applications, by combining UBF and VIEW buffers.
- Transaction Management - Global Transactions - Two-phase commit protocol - X/Open XA
- Clustering - on peer-to-peer basis
- Multi-threaded Event broker (also called publish and subscribe messaging)
- System process monitoring and self healing (pings and restarts)
- SOA Service cache. XATMI services can be cached to LMDB database. Resulting that next call to service from any local client receives results directly from cache (mainly from direct memory read).
- Dynamic re-configuration
- Custom server polling extensions
- XATMI sub-system is able to work without main application server daemon (ndrxd)
- Main application server daemon (ndrxd) can be restarted (if crashed). When started back it enters in learning mode for some period of time, in which in gathers information about system, what services are running, etc. After learning =-period, it starts to do normal operations
- tpforward() call
- ATMI server threads may become clients, and can do tpcall()
- Extensive logging & debugging. Enduro/X logging can be configured per binary with different log levels. As ATMI servers can be started outside of appserver, it is possible to debug them from programming IDE or with tools like valgrind.
- For quality assurance project uses automated unit-testing and integration-testing
- Built in ATMI service profiling.
- Environment variables can be updated for XATMI server processes with out full application reboot.
- Generic client process monitor (cpm). Subsystem allows to start/stop/monitor client executables. At client process crashes, cpm will start it back.
- Starting with version 5.2 Enduro/X provides configuration data encryption feature, so that software which is built on top of Enduro/X may comply with Payment Card Industry Data Security Standard (PCI/DSS).
- Application monitoring with TM_MIB interface. For example NetXMS.
- XA Driver for PostgreSQL.
- Fully functional buildserver, buildclient, buildtms tools.
- Provides server entry point _tmstartserver().
- Multi-threaded dispatcher support (mindispatchthreads/maxdispatchthreads), including support for tpsvrthrinit() tpsvrthrdone() callbacks.
- Fast Pool Allocator - for performance reasons malloc results are cached, so that blocks can be re-used instead of doing malloc again, thus Enduro/X is gaining overall performance.
- Support of writing server daemons for multi-threaded servers i.e. tpacall() to self advertised services during tpsvrinit().
- Support of Data Dependent Routing for UBF buffers.
- XATMI service auto-transactions are supported.
- For Linux and FreeBSD platforms call priorities are supported.
- Enduro/X logger now supports log-rotate calls (to re-open log handles) during the runtime.
- Enduro/X logger now allows to change log levels on the fly for any Enduro/X related process.
- Enduro/X provides Latent Command Framework (LCF), where developers via plugin interface can publish CLI commands in xadmin tool, while any Enduro/X related program can receive such commands via callback and perform custom action.
- Has tpsetcallinfo() and tpgetcallinfo() APIs.
- Product is extensively documented.
- Tool for automatic configuration migration from Oracle Tuxedo to Enduro/X.

Load balancing

Supported operating system: GNU/Linux, starting from 2.6.12 kernel (needed for POSIX Queues). Starting with Enduro/X Version 3.1.2 IBM AIX (6.1 and 7.1), Oracle Solaris 11, MAC OS X (experimental) and Cygwin (experimental) support is added. Supported compilers: gcc, LLVM clang, IBM xlC.
-
Build and installation guides are located at: www.endurox.org/dokuwiki
-
Support forum: http://www.endurox.org/projects/endurox/boards
-
Binary builds (RPMs & DEBs) for various platforms are here: https://www.mavimax.com/downloads
-
Documentation available here: http
