b'\n_START_ARTICLE_\nEnduro/X\n_START_SECTION_\nV\xc4\x93sture\n_START_PARAGRAPH_\nEnduro/X izstr\xc4\x81de tika s\xc4\x81kta 2009. gad\xc4\x81. Tas bija sl\xc4\x93gta pirmoda projekts Latvijas uz\xc5\x86\xc4\x93mum\xc4\x81 SIA ATR Baltic. Pirmie klienti (galvenok\xc4\x81rt bankas) tika iek\xc4\xbcauti sist\xc4\x93m\xc4\x81 2012. gada beig\xc4\x81s, kad Enduro/X sasniedza versiju 1.0._NEWLINE_Projekta pirmkods tika atv\xc4\x93rts 2015. gad\xc4\x81 ar versiju v2.3.2. No t\xc4\x81 br\xc4\xab\xc5\xbea visa izstr\xc4\x81de k\xc4\xbcuva pieejama publiski. L\xc4\xabdz versijai 6.0 Enduro/X bija pieejams ar licenci GNU GPLv2, bet s\xc4\x81kot ar 6.0 versiju projekts tika izlaists ar GNU AGPLv3 licenci._NEWLINE_2017. gada febru\xc4\x81r\xc4\xab ATR Baltic Enduro/X projektu p\xc4\x81rdeva SIA Mavimax ar piln\xc4\x81m ties\xc4\xabb\xc4\x81m uz pirmkodu un nosl\xc4\x93gtajiem l\xc4\xabgumiem.\n_START_SECTION_\nTehnolo\xc4\xa3ija\n_START_PARAGRAPH_\nS\xc4\x81kot no 2.6.12 versijas, Enduro/X darbojas uz Linux kodoliem. Viskritisk\xc4\x81k\xc4\x81 Linux iez\xc4\xabme ir epoll() POSIX rind\xc4\x81s. \xc5\xa0\xc4\xab Linux funkcionalit\xc4\x81te nodro\xc5\xa1ina meh\xc4\x81nismu "viena rinda \xe2\x80\x94 vair\xc4\x81ki serveri", kur Enduro/X serveri aptauj\xc4\x81 rindas. Enduro/X izstr\xc4\x81d\xc4\x81t\xc4\x81ji pan\xc4\x81ca EPOLLEXCLUSIVE karoga iek\xc4\xbcau\xc5\xa1anu Linux kodol\xc4\x81 (s\xc4\x81kot ar versiju 4.5). Iel\xc4\x81ps uzlaboja Enduro/X atbildi gad\xc4\xabjum\xc4\x81, ja simtiem izpild\xc4\xabt\xc4\x81ju sniedz vienu un to pa\xc5\xa1u pakalpojumu. \xc4\xaapa\xc5\xa1i kodols vairs neraisa "gan\xc4\x81mpulka" tipa uzved\xc4\xabbu, s\xc4\x81kot darboties visiem rind\xc4\x81 gaido\xc5\xa1ajiem bin\xc4\x81rajiem kodiem. Tagad tiek pamodin\xc4\x81ts tikai viens pakalpojuma izsaukuma uztv\xc4\x93r\xc4\x93js. Da\xc5\xbe\xc4\x81s darba slodz\xc4\x93s Enduro/X lietojumprogrammas sa\xc5\x86em iev\xc4\x93rojamu pastiprin\xc4\x81jumu. Testa p\xc4\x81rbaud\xc4\x93s iel\xc4\x81ps palielin\xc4\x81ja darba slodzes veiktsp\xc4\x93ju no 860 sekund\xc4\x93m l\xc4\xabdz 24 sekund\xc4\x93m._NEWLINE_S\xc4\x81kot ar Enduro/X versiju 3.1.2 tika pievienots atbalsts FreeBSD, IBM AIX (6.1 un 7.1 versija) un Oracle Solaris V11. Versij\xc4\x81 3.1.2 tika ieviests eksperiment\xc4\x81ls atbalsts Apple macOS un Cygwin. Unix platform\xc4\x81, kur ir pieejamas Posix rindas, t\xc4\x81s tiek izmantotas t\xc4\x81, lai katram ATMI servera un servisa p\xc4\x81rim b\xc5\xabtu atv\xc4\x93rta atsevi\xc5\xa1\xc4\xb7a rinda, un zvan\xc4\xabt\xc4\x81ja pakalpojums izv\xc4\x93l\xc4\x93tos rindu ap\xc4\xbck\xc4\x81rtes re\xc5\xbe\xc4\xabm\xc4\x81. T\xc4\x81 k\xc4\x81 MacOS oper\xc4\x93t\xc4\x81jsist\xc4\x93m\xc4\x81 nav atbalsta Posix rind\xc4\x81, Enduro/X izmanto emul\xc4\x93tas Posix rindas, kuru pamat\xc4\x81 ir atmi\xc5\x86as kart\xc4\x93ti faili tand\xc4\x93m\xc4\x81 ar Posix pavediena procesa koplietotiem mutesiem. FreeBSD ar\xc4\xab var aptauj\xc4\x81t Posix rindas, t\xc4\x81d\xc4\x93j\xc4\x81di Enduro/X uz FreeBSD darbojas k\xc4\x81 Linux ar "viena rinda \xe2\x80\x94 vair\xc4\x81ki serveri" (SQMS) zi\xc5\x86ojumu izplat\xc4\xab\xc5\xa1anas pieeju. FreeBSD aptauja tiek veikta ar kqueue pal\xc4\xabdz\xc4\xabbu._NEWLINE_Ar versiju 6.0 IPC meh\xc4\x81nismu viet\xc4\x81 tiek izmantotas System V rindas Unix platform\xc4\x81m, iz\xc5\x86emot FreeBSD un Linux. System V rinda ar\xc4\xab nodro\xc5\xa1ina "viena rinda \xe2\x80\x94 vair\xc4\x81ki serveri" efekt\xc4\xabvai slodzes l\xc4\xabdzsvaro\xc5\xa1anai. Lai iel\xc4\x81d\xc4\x93tu l\xc4\xabdzsvaru SQMS re\xc5\xbe\xc4\xabm\xc4\x81 ar System V rind\xc4\x81m, XATMI serveris ir j\xc4\x81konfigur\xc4\x93, lai izmantotu piepras\xc4\xabjuma adresi (lo\xc4\xa3iskais kan\xc4\x81ls / rinda), kur\xc4\x81 visi XATMI serveri reklam\xc4\x93 vienus un tos pa\xc5\xa1us pakalpojumus. \xc5\xa0is rindas re\xc5\xbe\xc4\xabms ir pieejams Oracle Solaris un IBM AIX. MacOS joproj\xc4\x81m tiek izmantota emul\xc4\x93t\xc4\x81 Posix rinda.\n_START_SECTION_\nVeiktsp\xc4\x93ja\n_START_PARAGRAPH_\nEnduro/X starpprogrammat\xc5\xabrai ir izveidoti vair\xc4\x81ki etalonuzdevumi, kas liecina, ka t\xc4\x81 diezgan labi konkur\xc4\x93 ar Oracle Tuxedo un ZeroMQ. Enduro/X bija par 30\xc2\xa0% \xc4\x81tr\xc4\x81ks nek\xc4\x81 Tuxedo 56 KB datu bloku diapazon\xc4\x81. Enduro/X bija iev\xc4\x93rojami \xc4\x81tr\xc4\x81ks nek\xc4\x81 ZeroMQ 10 \xe2\x80\x94 20 KB diapazon\xc4\x81. Ar\xc4\xab testi ar RabbitMQ par\xc4\x81d\xc4\xabja Enduro/X stiprumu un apsteidza konkurentu. RPC izsaukumiem Enduro/X bija vair\xc4\x81kas reizes priek\xc5\xa1\xc4\x81, vien\xc4\xabgi tikai izsaukumu nos\xc5\xabt\xc4\xab\xc5\xa1an\xc4\x81 RabbitMQ bija nedaudz tuv\xc4\x81k Enduro/X.\n_START_SECTION_\nApak\xc5\xa1sist\xc4\x93mas\n_START_PARAGRAPH_\nEnduro/X satur da\xc5\xbe\xc4\x81dus apak\xc5\xa1modu\xc4\xbcus, kas papla\xc5\xa1ina lietojumprogrammu servera un starpprogrammat\xc5\xabras funkcionalit\xc4\x81ti.\n_START_SECTION_\nRindo\xc5\xa1anas apak\xc5\xa1sist\xc4\x93ma\n_START_PARAGRAPH_\nEnduro/X nodro\xc5\xa1ina rindo\xc5\xa1anas apak\xc5\xa1sist\xc4\x93mu ar nosaukumu TMQ (Transactional Message Queue). \xc5\xa0\xc4\xab iesp\xc4\x93ja nodro\xc5\xa1ina past\xc4\x81v\xc4\xabgas rindas, kas \xc4\xbcauj lietojumprogramm\xc4\x81m skaidri iek\xc4\xbcaut rindas un dz\xc4\x93st zi\xc5\x86ojumus no nosauktaj\xc4\x81m rind\xc4\x81m. Rindas var k\xc4\x81rtot p\xc4\x93c zi\xc5\x86ojuma rind\xc4\x81 ievieto\xc5\xa1anas laika p\xc4\x93c LIFO vai FIFO sist\xc4\x93mas. Rindas p\xc4\x81rvalda ar XA sader\xc4\xabgs resursu p\xc4\x81rvaldnieks, kas \xc4\xbcauj rindu oper\xc4\x81cij\xc4\x81m piedal\xc4\xabties dal\xc4\xabt\xc4\x81s transakcij\xc4\x81s. Tiek nodro\xc5\xa1in\xc4\x81ts automatiz\xc4\x93ts rindas p\xc4\x81radres\xc4\x93\xc5\xa1anas l\xc4\xabdzeklis, kas no\xc5\x86ems ierakstus no rindas un izsauks saist\xc4\xabtos Enduro/X ATMI pakalpojumus, novietojot atbildes zi\xc5\x86ojumu saist\xc4\xabt\xc4\x81 atbildes rind\xc4\x81 un  neveiksm\xc4\xabgos zi\xc5\x86ojumus k\xc4\xbc\xc5\xabmju rindu.\n_START_SECTION_\nKonfigur\xc4\x81cijas pakalpojumi\n_START_PARAGRAPH_\nEnduro/X pied\xc4\x81v\xc4\x81 lietojumprogramm\xc4\x81m izmantot uz ini faila balst\xc4\xabtu konfigur\xc4\x81cijas las\xc4\xab\xc5\xa1anu, izmantojot \xc4\xabpa\xc5\xa1u XATMI serveri, kas ir pakotn\xc4\x93 ar nosaukumu cconfsrv. Izmantojot standarta tpcall(), parasti lietot\xc4\x81ja lietojumprogramma var las\xc4\xabt konfigur\xc4\x81cijas failus (var b\xc5\xabt atsevi\xc5\xa1\xc4\xb7i ini faili vai mape ar tiem). Metode \xc4\xbcauj izmantot apak\xc5\xa1sada\xc4\xbcas ar atsl\xc4\x93gas un v\xc4\x93rt\xc4\xabbas p\xc4\x81rmanto\xc5\xa1anu no galven\xc4\x81s sada\xc4\xbcas.\n_START_SECTION_\nIzseko\xc5\xa1anas re\xc4\xa3istr\xc4\x93\xc5\xa1anas pakalpojumi\n_START_PARAGRAPH_\nEnduro/X ieviesa jaunu API funkciju kopu ar nosaukumu tplog. Tas \xc4\xbcauj lietot\xc4\x81jam izmantot t\xc4\x81s pa\xc5\xa1as uz C balst\xc4\xabtas augstas veiktsp\xc4\x93jas atk\xc4\xbc\xc5\xabdo\xc5\xa1anas re\xc4\xa3istr\xc4\x93\xc5\xa1anas iesp\xc4\x93jas, ko Enduro/X izmanto iek\xc5\xa1\xc4\x93ji. Visu re\xc4\xa3istr\xc4\x93\xc5\xa1anu var novirz\xc4\xabt p\xc4\x93c pavedienu b\xc4\x81zes failiem. Ir ar\xc4\xab API piepras\xc4\xabjumu re\xc4\xa3istr\xc4\x93\xc5\xa1anai, kas noz\xc4\xabm\xc4\x93, ka lietot\xc4\x81js un Enduro/X var veikt re\xc4\xa3istr\xc4\x93\xc5\xa1anu atsevi\xc5\xa1\xc4\xb7os failos katram piepras\xc4\xabjumam (piem\xc4\x93ram, re\xc4\xa3istr\xc4\x93t p\xc4\x93c sesijas identifikatora, p\xc4\x93c lietot\xc4\x81jv\xc4\x81rda utt.).\n_START_SECTION_\nApplication Server for Go\n_START_PARAGRAPH_\nApplication Server for Go (ASG) ir saist\xc4\xabjumu projekts virs Enduro/X. Autori \xc5\xa1os saist\xc4\xabjumus uzskata par lietojumprogrammu serveri Go valodai, jo Golang projekti ir saist\xc4\xabti statiski, un p\xc4\x93c noklus\xc4\x93juma tiem nav t\xc4\x81du elementu k\xc4\x81 komponenti. Enduro/X \xc4\xbcauj palaist atsevi\xc5\xa1\xc4\xb7us izpild\xc4\x81mos bin\xc4\x81ros kodus, kas ir bezstatusa pakalpojumui. \xc5\xa0os pakalpojumus var atk\xc4\x81rtoti iel\xc4\x81d\xc4\x93t bez pakalpojuma p\xc4\x81rtraukuma. Platforma ar\xc4\xab \xc4\xbcauj veikt dal\xc4\xabtu transakciju apstr\xc4\x81di, izmantojot Golang. Izstr\xc4\x81d\xc4\x81t\xc4\x81ji nodro\xc5\xa1ina Go valodai modific\xc4\x93tus Oracle DB OCI8 draiverus, kas atbalsta XA transakcijas.\n_START_SECTION_\nEnduro/X-PHP\n_START_PARAGRAPH_\nPHP5 valodai ir pieejami pilna klienta saist\xc4\xabjumi. Klienta PHP procesi var kompil\xc4\x93t iel\xc4\x81d\xc4\x93jamu moduli vai kompil\xc4\x93t Enduro/X procesu PHP iek\xc5\xa1ien\xc4\x93. Ja PHP process darbojas k\xc4\x81 klients, tam j\xc4\x81atrodas Enduro/X lietojumprogrammu vid\xc4\x93, ko var veikt, kad lietojumprogramma tiek viesota pie t\xc4\x81 pa\xc5\xa1a lietot\xc4\x81ja, kur darbojas PHP lietotne (piem\xc4\x93ram Apache), vai PHP lietot\xc4\x81jam, kas izveido mikrovidi, kura, izmantojot tpbridge procesu, t\xc4\x81l\xc4\x81k savienojas ar galveno lietojumprogrammu serveri.\n_START_SECTION_\nEnduro/X-Perl\n_START_PARAGRAPH_\nPerl skript\xc4\x93\xc5\xa1anas valodai ir pieejami klienta un servera saist\xc4\xabjumi.'