{"id":31137,"date":"2019-10-31T21:39:40","date_gmt":"2019-10-31T18:39:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ignite-service-grid-perezagruzka\/"},"modified":"2019-10-31T21:39:40","modified_gmt":"2019-10-31T18:39:40","slug":"ignite-service-grid-perezagruzka","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 restart","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>On February 26, we held a meetup on Apache Ignite GreenSource, featuring contributors to the open source project. <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. An important event in the life of this community was the restructuring of the component <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, which allows deploying user microservices directly in the Ignite cluster. This complex process was discussed at the meetup by <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vyacheslav Daradur<\/a><\/noindex>, a software engineer and a contributor to Apache Ignite for over two years.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 restart\" src=\"\/wp-content\/uploads\/2019\/04\/9054072fe26af4a45bbcae80add90a1e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLet\u2019s start with what Apache Ignite actually is. It is a database that represents a distributed Key\/Value store with support for SQL, transactionality, and caching. Furthermore, Ignite allows deploying user services directly in the Ignite cluster. The developer has access to all tools provided by Ignite \u2014 distributed data structures, Messaging, Streaming, Compute, and Data Grid. For instance, using the Data Grid eliminates the issue of managing separate infrastructure for the data store and, consequently, the overhead costs that arise from it.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 restart\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUsing the Service Grid API, you can deploy a service simply by specifying the deployment scheme in the configuration and, accordingly, the service itself.<\/p>\n<p>Typically, the deployment scheme indicates the number of instances to be deployed on the cluster nodes. There are two typical deployment schemes. The first is Cluster Singleton: at any given moment, there will be exactly one instance of the user service available in the cluster. The second is Node Singleton: one instance of the service is deployed on each node of the cluster. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 restart\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAdditionally, the user can specify the number of service instances across the entire cluster and define a predicate for filtering suitable nodes. In such a scenario, the Service Grid will calculate the optimal distribution for deploying services.<\/p>\n<p>Turkl\u0101t ir t\u0101da funkcija k\u0101 Affinity Service. Affinity ir funkcija, kas nosaka atsl\u0113gu saist\u012bbu ar partitij\u0101m un partiju saist\u012bbu ar mezgliem topolo\u0123ij\u0101. Izmantojot atsl\u0113gu, var noteikt prim\u0101ro mezglu, kur\u0101 tiek glab\u0101ti dati. T\u0101d\u0113j\u0101di var sasaist\u012bt savu pakalpojumu ar atsl\u0113gu un ke\u0161a affinity funkciju. Ja tiek main\u012bta affinity funkcija, notiks autom\u0101tiska atk\u0101rtota izvieto\u0161ana. T\u0101d\u0113j\u0101di pakalpojums vienm\u0113r tiks novietots blakus datiem, ar kuriem tam j\u0101str\u0101d\u0101, un attiec\u012bgi samazin\u0101sies piek\u013cuves izmaksas inform\u0101cijai. \u0160\u0101du sh\u0113mu var saukt par sava veida kolok\u0101cijas apr\u0113\u0137iniem.<\/p>\n<p>Tagad, kad m\u0113s esam izskat\u012bju\u0161i, k\u0101da ir pakalpojumu t\u012bkla priek\u0161roc\u012bba, past\u0101st\u012bsim par t\u0101 att\u012bst\u012bbas v\u0113sturi.<\/p>\n<h2>Kas bija agr\u0101k<\/h2>\n<p>\nIepriek\u0161\u0113j\u0101 pakalpojumu t\u012bkla realiz\u0101cija balst\u012bj\u0101s uz transakciju replik\u0113jo\u0161o sist\u0113mas ke\u0161u Ignite. Ar v\u0101rdu \u201eke\u0161s\u201d Ignite dom\u0101 glab\u0101tuvi. T\u0101tad tas nav kaut kas pagaidu, k\u0101 var\u0113tu dom\u0101t. Neskatoties uz to, ka ke\u0161s ir replik\u0113jams un katrs mezgls satur visu datu kopumu, iek\u0161\u0113ji ke\u0161am ir partit\u0113ta prezent\u0101cija. Tas ir saist\u012bts ar glab\u0101tavu optimiz\u0101ciju. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 restart\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKas notika, kad lietot\u0101js v\u0113l\u0113j\u0101s izvietot pakalpojumu?<\/p>\n<ul>\n<li>Visi mezgli klaster\u012b parakst\u012bj\u0101s uz datu atjauno\u0161anas glab\u0101tav\u0101, izmantojot ieb\u016bv\u0113to Continuous Query meh\u0101nismu.\n<\/li>\n<li>Iniciators mezgls read-committed transakcijas ietvaros izdar\u012bja ierakstu datu b\u0101z\u0113, kas satur\u0113ja pakalpojuma konfigur\u0101ciju, tostarp s\u0113rijveida instanci.\n<\/li>\n<li>Sa\u0146emot pazi\u0146ojumu par jauno ierakstu, koordinators apr\u0113\u0137in\u0101ja sadal\u012bjumu, pamatojoties uz konfigur\u0101ciju. Sa\u0146emtais objekts tika ierakst\u012bts atpaka\u013c datu b\u0101z\u0113.\n<\/li>\n<li>Ja mezgls non\u0101ca sadal\u012bjum\u0101, koordinatoram vajadz\u0113ja to izvietot.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kas m\u016bs neapmierin\u0101ja<\/h2>\n<p>\nK\u0101d\u0101 br\u012bd\u012b m\u0113s non\u0101c\u0101m pie secin\u0101juma: ar pakalpojumiem nevar str\u0101d\u0101t \u0161\u0101d\u0101 veid\u0101. Iemeslu bija vair\u0101ki.<\/p>\n<p>Ja izvieto\u0161anas laik\u0101 notika k\u0101da k\u013c\u016bda, to var\u0113ja uzzin\u0101t tikai no \u017eurn\u0101liem taj\u0101 mezgl\u0101, kur tas notika. Past\u0101v\u0113ja tikai asyncrons izvietojums, t\u0101p\u0113c p\u0113c kontroles atgrie\u0161anas lietot\u0101jam no izvieto\u0161anas metodes bija nepiecie\u0161ams papildu laiks pakalpojuma uzs\u0101k\u0161anai - un \u0161aj\u0101 laik\u0101 lietot\u0101js nevar\u0113ja neko p\u0101rvald\u012bt. Lai att\u012bst\u012btu pakalpojumu t\u012bklu t\u0101l\u0101k, izstr\u0101d\u0101tu jaunas funkcijas, piesaist\u012btu jaunus lietot\u0101jus un padar\u012btu visiem dz\u012bvi viegl\u0101ku, bija j\u0101veic izmai\u0146as.<\/p>\n<p>Projekt\u0113jot jauno Service Grid, m\u0113s vispirms v\u0113l\u0113j\u0101mies nodro\u0161in\u0101t sinhroniz\u0113tas izvieto\u0161anas garantiju: tikl\u012bdz lietot\u0101js sa\u0146em kontroli no API, vi\u0146\u0161 var nekav\u0113joties izmantot pakalpojumus. M\u0113s ar\u012b v\u0113l\u0113j\u0101mies sniegt iniciatoram iesp\u0113ju apstr\u0101d\u0101t izvieto\u0161anas k\u013c\u016bdas.<\/p>\n<p>Turkl\u0101t v\u0113l\u0113j\u0101mies atvieglot \u012bsteno\u0161anu, proti, izvair\u012bties no transakcij\u0101m un p\u0101rdal\u012b\u0161anas. Neskatoties uz to, ka ke\u0161atmi\u0146a ir replic\u0113jama un nav p\u0101rdal\u012b\u0161anas, liela izvieto\u0161anas laik\u0101, kad ir daudz mezglu, rad\u0101s probl\u0113mas. Mainot topolo\u0123iju, mezgliem ir nepiecie\u0161ams apmain\u012bties ar inform\u0101ciju, un lielas izvieto\u0161anas laik\u0101 \u0161ie dati var izm\u0113r\u012bt \u013coti daudz.<\/p>\n<p>Kad topolo\u0123ija bija nestabila, koordin\u0113t\u0101jam bija nepiecie\u0161ams p\u0101rskait\u012bt pakalpojumu sadal\u012bjumu. Un, kad j\u0101str\u0101d\u0101 ar transakcij\u0101m nestabil\u0101 topolo\u0123ij\u0101, tas var novest pie gr\u016bti prognoz\u0113jam\u0101m k\u013c\u016bd\u0101m.<\/p>\n<h2>Probl\u0113mas<\/h2>\n<p>\nK\u0101das glob\u0101las izmai\u0146as var notikt bez saist\u012bt\u0101m probl\u0113m\u0101m? Pirm\u0101 no t\u0101m bija topolo\u0123ijas mai\u0146a. J\u0101\u0146em v\u0113r\u0101, ka jebkur\u0101 br\u012bd\u012b, pat pakalpojuma izvieto\u0161anas laik\u0101, mezgls var pievienoties klasterim vai iz\u0146emties no t\u0101. Turkl\u0101t, ja pakalpojuma izvieto\u0161anas laik\u0101 mezgls pievienojas klasterim, b\u016bs nepiecie\u0161ams konsistenti nodot visu inform\u0101ciju par pakalpojumiem jaunajam mezglam. Un runa ir ne tikai par jau izvietotajiem, bet ar\u012b par pa\u0161reiz\u0113jiem un n\u0101kotnes izvietojumiem.<\/p>\n<p>Tas ir tikai viens no jaut\u0101jumiem, kurus var apkopot atsevi\u0161\u0137\u0101 sarakst\u0101:<\/p>\n<ul>\n<li>K\u0101 izvietot statiski konfigur\u0113tus pakalpojumus mezgla palai\u0161anas laik\u0101?\n<\/li>\n<li>Mezglu iz\u0146em\u0161an\u0101s no klastera \u2013 ko dar\u012bt, ja mezgls uzhosts pakalpojumus?\n<\/li>\n<li>Ko dar\u012bt, ja koordin\u0113t\u0101js ir main\u012bjies?\n<\/li>\n<li>Ko dar\u012bt, ja klients ir atk\u0101rtoti pievienojies klasterim?\n<\/li>\n<li>Vai j\u0101apstr\u0101d\u0101 aktiviz\u0101cijas\/deaktiviz\u0101cijas piepras\u012bjumi un k\u0101?\n<\/li>\n<li>Un, ja nosaukums ir noticis ke\u0161atmi\u0146as izn\u012bcin\u0101\u0161an\u0101, bet mums ir saist\u012bti ar to afinit\u0101tes pakalpojumi?\n<\/li>\n<\/ul>\n<p>\nUn tas ir t\u0101lu no visa. <\/p>\n<h2>Risin\u0101jums<\/h2>\n<p>\nK\u0101 m\u0113r\u0137is m\u0113s izv\u0113l\u0113j\u0101mies Event Driven pieeju ar komunik\u0101cijas procesu \u012bsteno\u0161anu, izmantojot zi\u0146ojumus. Ignite jau ir \u012bstenoti divi komponenti, kas \u013cauj mezgliem s\u016bt\u012bt zi\u0146ojumus viens otram \u2013 communication-spi un discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 restart\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommunication-spi \u013cauj mezgliem tie\u0161i sazin\u0101ties un nos\u016bt\u012bt zi\u0146ojumus. Tas ir labi piem\u0113rots liela datu apjoma p\u0101rs\u016bt\u012b\u0161anai. Discovery-spi \u013cauj nos\u016bt\u012bt zi\u0146ojumu visiem mezgliem klaster\u012b. Standartiz\u0113taj\u0101 \u012bstenojum\u0101 tas tiek dar\u012bts, izmantojot \u201egredzena\u201d topolo\u0123iju. Ir ar\u012b integr\u0101cija ar Zookeeper, \u0161aj\u0101 gad\u012bjum\u0101 tiek izmantota \u201ezvaigznes\u201d topolo\u0123ija. V\u0113l j\u0101atz\u012bm\u0113 svar\u012bgs moments: discovery-spi nodro\u0161ina garantijas, ka zi\u0146ojums noteikti tiks pieg\u0101d\u0101ts pareizaj\u0101 sec\u012bb\u0101 visiem mezgliem. <\/p>\n<p>Apskat\u012bsim izvieto\u0161anas protokolu. Visi lietot\u0101ju piepras\u012bjumi izpildei un atteik\u0161anai tiek nos\u016bt\u012bti pa discovery-spi. Tas nodro\u0161ina sekojo\u0161as <i>garantijas<\/i>:<\/p>\n<ul>\n<li>Piepras\u012bjums tiks sa\u0146emts visiem mezgliem klaster\u012b. Tas \u013caus turpin\u0101t apstr\u0101di, ja koordinators main\u0101s. Tas ar\u012b noz\u012bm\u0113, ka katram mezgam b\u016bs visi nepiecie\u0161amie metadati par vienu zi\u0146ojumu, piem\u0113ram, pakalpojuma konfigur\u0101cija un t\u0101 serializ\u0113tais instants.\n<\/li>\n<li>Strikta zi\u0146ojumu pieg\u0101des sec\u012bba \u013cauj atrisin\u0101t konfigur\u0101ciju un konkur\u0113jo\u0161u piepras\u012bjumu konfliktus.\n<\/li>\n<li>T\u0101 k\u0101 mezgla piek\u013cau\u0161ana topolo\u0123ijai tiek apstr\u0101d\u0101ta ar\u012b pa discovery-spi, jaunajam mezgam non\u0101ks visi dati, kas nepiecie\u0161ami darbam ar pakalpojumiem.\n<\/li>\n<\/ul>\n<p>\nSa\u0146emot piepras\u012bjumu, mezgli klaster\u012b to valid\u0113 un izveido uzdevumus apstr\u0101dei. \u0160ie uzdevumi tiek ievietoti rind\u0101 un p\u0113c tam apstr\u0101d\u0101ti cit\u0101 pavedien\u0101 ar atsevi\u0161\u0137u darbinieku. Tas ir realiz\u0113ts \u0161\u0101d\u0101 veid\u0101, jo izvieto\u0161ana var aiz\u0146emt b\u016btisku laiku un kav\u0113t d\u0101rgo discovery pl\u016bsmu nav pie\u0146emami.<\/p>\n<p>Visus piepras\u012bjumus no rindas apstr\u0101d\u0101 izvieto\u0161anas mened\u017eeris. Tam ir \u012bpa\u0161s darbinieks, kas izvelk uzdevumu no \u0161\u012bs rindas un inicializ\u0113 to, lai uzs\u0101ktu izvieto\u0161anu. P\u0113c tam notiek sekojo\u0161as darb\u012bbas:<\/p>\n<ol>\n<li>Katrs mezgls patst\u0101v\u012bgi apr\u0113\u0137ina sadal\u012bjumu, pateicoties jaunai determin\u0113tai assignment funkcijai.\n<\/li>\n<li>Mezgli izveido zi\u0146ojumu ar izvieto\u0161anas rezult\u0101tiem un nos\u016bta to koordinatoram.\n<\/li>\n<li>Koordinators agreg\u0113 visus zi\u0146ojumus un izveido visa izvieto\u0161anas procesa rezult\u0101tu, kas tiek nos\u016bt\u012bts pa discovery-spi visiem mezgliem klaster\u012b.\n<\/li>\n<li>Sa\u0146emot rezult\u0101tu, izvieto\u0161anas processbeidzas, p\u0113c tam uzdevums tiek izdz\u0113sts no rindas.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 restart\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Jaunais notikumu virz\u012btais dizains: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Ja, ja izpildes br\u012bd\u012b rad\u0101s k\u013c\u016bda, mezgls uzreiz iek\u013cauj \u0161o k\u013c\u016bdu zi\u0146ojum\u0101, kuru nos\u016bta koordinatoram. P\u0113c zi\u0146ojumu apkopo\u0161anas koordinatoram b\u016bs inform\u0101cija par vis\u0101m k\u013c\u016bd\u0101m izvieto\u0161anas laik\u0101, un \u0161is zi\u0146ojums tiks nos\u016bt\u012bts pa discovery-spi. Inform\u0101cija par k\u013c\u016bd\u0101m b\u016bs pieejama jebkur\u0101 mezgl\u0101 klaster\u012b. <\/p>\n<p>P\u0113c \u0161\u0101 darba algoritma visus svar\u012bg\u0101kos notikumus apstr\u0101d\u0101 Service Grid. Piem\u0113ram, topolo\u0123ijas mai\u0146a ir ar\u012b zi\u0146ojums pa discovery-spi. Un, sal\u012bdzinot ar iepriek\u0161\u0113jo, protokols ir izr\u0101d\u012bjies pietiekami viegls un uzticams. Pietiekami, lai apstr\u0101d\u0101tu jebkuru situ\u0101ciju izvieto\u0161anas laik\u0101. <\/p>\n<h2>Kas notiks t\u0101l\u0101k<\/h2>\n<p>\nTagad par pl\u0101niem. Jebkura liela izmai\u0146a projekt\u0101 Ignite tiek veikta k\u0101 iniciat\u012bva Ignite uzlabo\u0161anai, saukta par IEP. Ar\u012b Service Grid p\u0101rdizaina projektam ir IEP \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/IEP-17%3A+Oil+Change+in+Service+Grid\">IEP Nr. 17<\/a><\/noindex> ar jokiem nosaukumu \u00abE\u013c\u013cas mai\u0146a Service Grid\u00bb. Ta\u010du paties\u012bb\u0101 m\u0113s nomain\u012bj\u0101m ne tikai e\u013c\u013cu motor\u0101, bet visu motoru. <\/p>\n<p>IEP uzdevumus m\u0113s sadal\u012bj\u0101m 2 f\u0101z\u0113s. Pirm\u0101 \u2014 liel\u0101 f\u0101ze, kas ietver izvieto\u0161anas protokola p\u0101rstr\u0101di. T\u0101 jau ir iek\u013cauta galvenaj\u0101 versij\u0101, varat izm\u0113\u0123in\u0101t jauno Service Grid, kas par\u0101d\u012bsies versij\u0101 2.8. Otr\u0101 f\u0101ze ietver daudzus citus uzdevumus:<\/p>\n<ul>\n<li>Aukst\u0101 atk\u0101rtota izvieto\u0161ana\n<\/li>\n<li>Servisa versiju p\u0101rvald\u012bba\n<\/li>\n<li>Uzticam\u012bbas palielin\u0101\u0161ana\n<\/li>\n<li>T\u012brs klients\n<\/li>\n<li>Uzraudz\u012bbas un da\u017e\u0101du metrikas r\u0101d\u012bt\u0101ju skait\u012b\u0161anas r\u012bki\n<\/li>\n<\/ul>\n<p>\nVisbeidzot, m\u0113s varam ieteikt jums Service Grid, lai veidotu uzticamas augstas pieejam\u012bbas sist\u0113mas. M\u0113s ar\u012b aicin\u0101m j\u016bs pievienoties m\u016bsu <noindex><a rel=\"nofollow\" href=\"mailto:dev@ignite.apache.org\">dev-list<\/a><\/noindex> un <noindex><a rel=\"nofollow\" href=\"mailto:user@ignite.apache.org\">user-list<\/a><\/noindex> dal\u012bties ar savu pieredzi. J\u016bsu pieredze patie\u0161\u0101m ir svar\u012bga kopienai, t\u0101 pal\u012bdz\u0113s saprast, kur doties t\u0101l\u0101k, k\u0101 n\u0101kotn\u0113 att\u012bst\u012bt komponentu.<br \/>\n<br \/>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sberbank\/blog\/447264\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>26 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u043c\u0438\u0442\u0430\u043f Apache Ignite GreenSource, \u0433\u0434\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u044b open source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Apache Ignite. \u0412\u0430\u0436\u043d\u044b\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c \u0432 \u0436\u0438\u0437\u043d\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 Ignite Service Grid, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Ignite. \u041e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0430 \u043c\u0438\u0442\u0430\u043f\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0412\u044f\u0447\u0435\u0441\u043b\u0430\u0432 \u0414\u0430\u0440\u0430\u0434\u0443\u0440, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043b\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440 Apache [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23105,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"26 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u043c\u0438\u0442\u0430\u043f Apache Ignite GreenSource, \u0433\u0434\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u044b open source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Apache Ignite.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/ignite-service-grid-perezagruzka\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Ignite Service Grid \u2014 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"26 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u043c\u0438\u0442\u0430\u043f Apache Ignite GreenSource, \u0433\u0434\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u044b open source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Apache Ignite.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/ignite-service-grid-perezagruzka\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:39:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:39:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ignite Service Grid \u2014 p\u0101rstart\u0113\u0161ana | ProHoster","description":"26. febru\u0101r\u012b m\u0113s r\u012bkoj\u0101m Apache Ignite GreenSource meetup, kur\u0101 uzst\u0101j\u0101s open source projekta Apache Ignite l\u012bdzautori.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Ignite Service Grid \u2014 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 | ProHoster","og:description":"26 \u0444\u0435\u0432\u0440\u0430\u043b\u044f \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u043c\u0438\u0442\u0430\u043f Apache Ignite GreenSource, \u0433\u0434\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u044b open source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Apache Ignite.","og:url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:39:40+00:00","article:modified_time":"2019-10-31T18:39:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31137","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 04:41:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:16:35","updated":"2026-01-21 04:41:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}