{"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\/hr\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 ponovno pokretanje","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>26. velja\u010de odr\u017eali smo meet-up Apache Ignite GreenSource, gdje su govorili suradnici open source projekta <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. Va\u017ean doga\u0111aj u \u017eivotu ove zajednice bila je rekonstrukcija komponente <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, koja omogu\u0107ava implementaciju korisni\u010dkih mikroslu\u017ebi izravno u klasteru Ignite. O tom slo\u017eenom postupku na meet-upu je govorio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vja\u010deslav Daradur<\/a><\/noindex>, softverski in\u017eenjer i ve\u0107 vi\u0161e od dvije godine suradnik Apache Ignite.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 ponovno pokretanje\" 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 \/>\nKrenimo od toga \u0161to je Apache Ignite uop\u0107e. To je baza podataka koja predstavlja distribuirano Key\/Value spremi\u0161te s podr\u0161kom za SQL, transakcije i ke\u0161iranje. Osim toga, Ignite omogu\u0107ava distribuciju korisni\u010dkih servisa izravno u klasteru Ignite. Razvojnim in\u017eenjerima na raspolaganju su svi alati koje Ignite nudi \u2014 distribuirane strukture podataka, Messaging, Streaming, Compute i Data Grid. Na primjer, kori\u0161tenjem Data Grid-a nestaje problem upravljanja posebnom infrastrukturom za pohranu podataka, a kao posljedica toga dolazi do smanjenja tro\u0161kova.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 ponovno pokretanje\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKori\u0161tenjem API-ja Service Grid, mogu\u0107e je implementirati servis jednostavnim navo\u0111enjem sheme implementacije i samog servisa u konfiguraciji.<\/p>\n<p>Obi\u010dno shema implementacije ozna\u010dava broj instanci koje trebaju biti raspore\u0111ene na \u010dvorovima klastera. Postoje dvije tipi\u010dne sheme implementacije. Prva je Cluster Singleton: u bilo kojem trenutku u klasteru bit \u0107e zajam\u010deno dostupna jedna instanca korisni\u010dkog servisa. Druga je Node Singleton: na svakom \u010dvoru klastera raspore\u0111ena je po jedna instanca servisa. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 ponovno pokretanje\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTako\u0111er, korisnik mo\u017ee odrediti broj instanci servisa u cijelom klasteru i definirati predikat za filtriranje odgovaraju\u0107ih \u010dvorova. U takvom scenariju Service Grid \u0107e sam izra\u010dunati optimalnu distribuciju za implementaciju servisa.<\/p>\n<p>Osim toga, postoji funkcija poznata kao Affinity Service. Affinity je funkcija koja odre\u0111uje vezu klju\u010deva s particijama i veze particija s \u010dvorovima u topologiji. Na temelju klju\u010da mo\u017ee se odrediti primarni \u010dvor na kojem se pohranjuju podaci. Na taj na\u010din mo\u017eete povezati vlastitu uslugu s klju\u010dem i cache-om affinity funkcije. U slu\u010daju promjene affinity funkcije, do\u0107i \u0107e do automatske redeploy. Tako \u0107e biti uvijek smje\u0161tena blizu podataka s kojima treba raditi, \u0161to \u0107e smanjiti tro\u0161kove pristupa informacijama. Ovu shemu mo\u017eemo nazvati nekom vrstom kolociranih izra\u010duna.<\/p>\n<p>Sada kada smo razjasnili \u010dari Service Grida, pri\u010dat \u0107emo o njegovoj povijesti razvoja.<\/p>\n<h2>\u0160to je bilo prije<\/h2>\n<p>\nPro\u0161la implementacija Service Grida temeljila se na transakcionom repliciranom sistemskom cacheu Ignite. Pod pojmom \"cache\" u Ignite podrazumijeva se skladi\u0161te. Dakle, to nije ne\u0161to privremeno, kako bi se moglo pomisliti. Iako je cache repliciran i svaka \u010dvor sadr\u017ei cjelokupni skup podataka, unutar cache-a postoji particionirano prikazivanje. To je povezano s optimizacijom skladi\u0161ta. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 ponovno pokretanje\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0160to se doga\u0111alo kada je korisnik \u017eelio deploy-ati uslugu?<\/p>\n<ul>\n<li>Svi \u010dvorovi u klasteru potpisivali su se za a\u017euriranje podataka u skladi\u0161tu pomo\u0107u ugra\u0111enog mehanizma Continuous Query.\n<\/li>\n<li>Iniciraju\u0107i \u010dvor je pod read-committed transakcijom napravio unos u bazu koji je sadr\u017eavao konfiguraciju usluge, uklju\u010duju\u0107i serijalizirani instanc.\n<\/li>\n<li>Kada bi primio obavijest o novom unosu, koordinator bi izra\u010dunao raspodjelu na temelju konfiguracije. Dobiveni objekt bi se zapisivao natrag u bazu.\n<\/li>\n<li>Ako je \u010dvor bio uklju\u010den u raspodjelu, koordinator ga je trebao deploy-ati.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>\u0160to nas nije zadovoljilo<\/h2>\n<p>\nU nekom trenutku smo do\u0161li do zaklju\u010dka: ovako se ne mo\u017ee raditi s uslugama. Razloga je bilo nekoliko.<\/p>\n<p>Ako bi tijekom deploya do\u0161lo do neke gre\u0161ke, mogli bismo saznati samo iz logova onog \u010dvora gdje se sve dogodilo. Postojao je samo asinkroni deploy, pa je nakon vra\u0107anja kontrole korisniku iz metode deploya bilo potrebno dodatno vrijeme za pokretanje usluge \u2014 i u to vrijeme korisnik nije mogao upravljati ni\u010dim. Da bismo dalje razvijali Service Grid, dodavali nove funkcije, privukli nove korisnike i olak\u0161ali svima \u017eivot, trebali smo promijeniti ne\u0161to.<\/p>\n<p>Kada smo projektirali novu Service Grid, prvenstveno smo \u017eeljeli jam\u010diti sinkrono implementiranje: \u010dim korisniku bude vra\u0107ena kontrola od API-ja, odmah mo\u017ee koristiti usluge. Tako\u0111er smo htjeli omogu\u0107iti inicijatoru da obra\u0111uje gre\u0161ke implementacije.<\/p>\n<p>Osim toga, htjeli smo olak\u0161ati implementaciju, a to zna\u010di izbje\u0107i transakcije i rebalance. Iako je ke\u0161 replikabilan i nema balansa, tijekom velike implementacije s mnogo \u010dvorova javili su se problemi. Prilikom promjene topologije, \u010dvorovi moraju razmjenjivati informacije, a kod velike implementacije ti podaci mogu biti vrlo obimni.<\/p>\n<p>Kada je topologija bila nestabilna, koordinator je morao ponovo izra\u010dunati raspodjelu usluga. U cjelini, kada se mora raditi s transakcijama na nestabilnoj topologiji, to mo\u017ee dovesti do te\u0161ko predvidljivih gre\u0161aka.<\/p>\n<h2>Problemi<\/h2>\n<p>\nKoje bi to globalne promjene bile bez prate\u0107ih problema? Prvi od njih bio je promjena topologije. Treba razumjeti da u svakom trenutku, \u010dak i tijekom implementacije usluge, \u010dvor mo\u017ee u\u0107i u klaster ili iz njega iza\u0107i. \u0160tovi\u0161e, ako \u010dvor u\u0111e u klaster tijekom implementacije, bit \u0107e potrebno konzistentno prenijeti sve informacije o uslugama u novi \u010dvor. Ne radi se samo o onome \u0161to je ve\u0107 implementirano, ve\u0107 i o trenutnim i budu\u0107im implementacijama.<\/p>\n<p>To je samo jedan od problema koji se mo\u017ee skupiti u zaseban popis:<\/p>\n<ul>\n<li>Kako implementirati stati\u010dki konfigurirane usluge prilikom pokretanja \u010dvora?\n<\/li>\n<li>\u0160to u\u010diniti kada \u010dvor iza\u0111e iz klastera \u2013 \u0161to ako je \u010dvor hostao usluge?\n<\/li>\n<li>\u0160to u\u010diniti ako se koordinator promijenio?\n<\/li>\n<li>\u0160to u\u010diniti ako se klijent ponovo pove\u017ee na klaster?\n<\/li>\n<li>Treba li obraditi zahtjeve za aktiviranje\/deaktiviranje i kako?\n<\/li>\n<li>A \u0161to ako je pozvan destruktor ke\u0161a, a imamo povezane afinitetne usluge?\n<\/li>\n<\/ul>\n<p>\nI to nije sve. <\/p>\n<h2>Re\u0161enje<\/h2>\n<p>\nKao cilj izabrali smo pristup vo\u0111en doga\u0111ajima s implementacijom komunikacije procesa putem poruka. U Ignite su ve\u0107 implementirana dva komponente koja omogu\u0107uju \u010dvorovima da me\u0111usobno \u0161alju poruke \u2014 communication-spi i discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 ponovno pokretanje\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommunication-spi omogu\u0107ava \u010dvorovima izravnu komunikaciju i slanje poruka. Savr\u0161eno je za prijenos velikih koli\u010dina podataka. Discovery-spi omogu\u0107ava slanje poruke svim \u010dvorovima u klasteru. U standardnoj implementaciji to se radi prema 'prsten' topologiji. Tako\u0111er postoji integracija s Zookeeper, u tom slu\u010daju koristi se 'zvjezdasta' topologija. Va\u017eno je napomenuti da discovery-spi osigurava isporuku poruka u to\u010dnom redoslijedu svim \u010dvorovima. <\/p>\n<p>Razmotrimo protokol implementacije. Sve korisni\u010dke zahtjeve za implementaciju i deimplementaciju \u0161alju se putem discovery-spi. To omogu\u0107ava sljede\u0107e <i>jamstva<\/i>:<\/p>\n<ul>\n<li>Zahtjev \u0107e biti primljen svim \u010dvorovima u klasteru. To \u0107e omogu\u0107iti nastavak obrade zahtjeva u slu\u010daju promjene koordinatora. Tako\u0111er to zna\u010di da za jednu poruku svaki \u010dvor dobije sve potrebne metapodatke, poput konfiguracije usluge i njezinog serijaliziranog instance.\n<\/li>\n<li>Strog redoslijed isporuke poruka omogu\u0107ava rje\u0161avanje sukoba konfiguracija i konkurentnih zahtjeva.\n<\/li>\n<li>Budu\u0107i da se pristup \u010dvora u topologiji tako\u0111er obra\u0111uje putem discovery-spi, novi \u010dvor \u0107e dobiti sve potrebne podatke za rad s uslugama.\n<\/li>\n<\/ul>\n<p>\nPri primanju zahtjeva, \u010dvorovi u klasteru validiraju ga i formiraju zadatke za obradu. Ovi se zadaci stavljaju u red i zatim obra\u0111uju u drugom procesu kroz odvojenog radnika. Ovo je realizirano tako jer implementacija mo\u017ee trajati zna\u010dajno dugo i odga\u0111anje skupljeg discovery-toka je neprihvatljivo.<\/p>\n<p>Sve zahtjeve iz reda obra\u0111uje upravitelj implementacije. Ima posebnog radnika koji izvla\u010di zadatak iz ovog reda i inicijalizira ga za po\u010detak razmatranja. Nakon toga slijede sljede\u0107e radnje:<\/p>\n<ol>\n<li>Svaki \u010dvor samostalno izra\u010dunava raspodjelu zahvaljuju\u0107i novoj deterministi\u010dkoj funkciji dodeljivanja.\n<\/li>\n<li>\u010cvorovi formiraju poruku s rezultatima implementacije i \u0161alju je koordinatoru.\n<\/li>\n<li>Koordinator agregira sve poruke i formira rezultat cjelokupnog procesa implementacije, koji se \u0161alje putem discovery-spi svim \u010dvorovima u klasteru.\n<\/li>\n<li>Pri primitku rezultata, proces implementacije zavr\u0161ava, nakon \u010dega se zadatak uklanja iz reda.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 ponovno pokretanje\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Novi event-driven dizajn: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Ako se prilikom postavljanja dogodi gre\u0161ka, \u010dvor odmah uklju\u010duje tu gre\u0161ku u poruku koju \u0161alje koordinatoru. Nakon agregacije poruka, koordinator \u0107e imati informacije o svim gre\u0161kama tokom implementacije i posla\u0107e tu poruku preko discovery-spi. Informacije o gre\u0161kama bi\u0107e dostupne na bilo kojem \u010dvoru u klasteru. <\/p>\n<p>Prema ovom algoritmu se obra\u0111uju svi va\u017eni doga\u0111aji u Service Grid-u. Na primer, promena topologije je tako\u0111e poruka preko discovery-spi. A u celini, ako uporedimo sa onim \u0161to je bilo, protokol je ispao prili\u010dno lagan i pouzdan. Dovoljno da obra\u0111uje svaku situaciju tokom implementacije. <\/p>\n<h2>\u0160to dolazi sljede\u0107e<\/h2>\n<p>\nSada o planovima. Svaka ve\u0107a promena u projektu Ignite se sprovodi kao inicijativa za pobolj\u0161anje Ignite-a, takozvani IEP. Redizajn Service Grida tako\u0111e ima IEP \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/IEP-17%3A+Oil+Change+in+Service+Grid\">IEP br. 17<\/a><\/noindex> sa duhovitim naslovom \u201eZamena ulja u Servisu Gridu\u201c. Ali u stvarnosti, nismo promenili ulje u motoru, ve\u0107 ceo motor. <\/p>\n<p>Zadatke u IEP-u smo podelili na 2 faze. Prva \u2014 velika faza, koja se sastoji u prepravci protokola implementacije. Ve\u0107 je uklju\u010dena u glavni repozitorij, mo\u017eete isprobati novi Service Grid, koji \u0107e se pojaviti u verziji 2.8. Druga faza obuhvata mnoge druge zadatke:<\/p>\n<ul>\n<li>Toplotni rediploj\n<\/li>\n<li>Verzionisanje usluga\n<\/li>\n<li>Pove\u0107anje otpornosti na gre\u0161ke\n<\/li>\n<li>Tanki klijent\n<\/li>\n<li>Alati za pra\u0107enje i merenje raznih metrika\n<\/li>\n<\/ul>\n<p>\nNa kraju, mo\u017eemo vam preporu\u010diti Service Grid za izgradnju sistema otpornog na gre\u0161ke visoke dostupnosti. Tako\u0111e vas pozivamo da do\u0111ete kod nas na <noindex><a rel=\"nofollow\" href=\"mailto:dev@ignite.apache.org\">dev-list<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"mailto:user@ignite.apache.org\">user-list<\/a><\/noindex> delite svoje iskustvo. Va\u0161e iskustvo je zaista va\u017eno za zajednicu, pomo\u0107i \u0107e da se shvati kuda dalje krenuti i kako u budu\u0107nosti razvijati komponentu.<br \/>\n<br \/>Izvor: <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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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 ponovno pokretanje | ProHoster","description":"26. februara smo odr\u017eali mitap Apache Ignite GreenSource, gde su nastupali doprinosioci open source projekta Apache Ignite.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}