{"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\/pl\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 restart","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>26 lutego odby\u0142 si\u0119 meetup Apache Ignite GreenSource, na kt\u00f3rym wyst\u0105pili wsp\u00f3\u0142tw\u00f3rcy projektu open source. <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. Wa\u017cnym wydarzeniem w \u017cyciu tej spo\u0142eczno\u015bci by\u0142a przebudowa komponentu <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, kt\u00f3ry umo\u017cliwia wdra\u017canie u\u017cytkowniczych mikroserwis\u00f3w bezpo\u015brednio w klastrze Ignite. O tym skomplikowanym procesie opowiedzia\u0142 na meet-upie <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Wjaczes\u0142aw Daradur<\/a><\/noindex>, in\u017cynier oprogramowania i od ponad dw\u00f3ch lat wsp\u00f3\u0142tw\u00f3rca Apache Ignite.<\/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 \/>\nZacznijmy od tego, czym tak naprawd\u0119 jest Apache Ignite. To baza danych, kt\u00f3ra stanowi rozproszon\u0105 pami\u0119\u0107 typu Key\/Value z obs\u0142ug\u0105 SQL, transakcyjno\u015bci i pami\u0119ci podr\u0119cznej. Dodatkowo, Ignite pozwala na wdra\u017canie u\u017cytkowniczych us\u0142ug bezpo\u015brednio w klastrze Ignite. Deweloperzy maj\u0105 dost\u0119p do wszystkich narz\u0119dzi, kt\u00f3re oferuje Ignite \u2014 rozproszonych struktur danych, Messaging, Streaming, Compute i Data Grid. Na przyk\u0142ad przy u\u017cyciu Data Grid znika problem zarz\u0105dzania oddzieln\u0105 infrastruktur\u0105 dla przechowywania danych, co eliminuje zwi\u0105zane z tym koszty.<\/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 \/>\nKorzystaj\u0105c z API Service Grid, mo\u017cna wdro\u017cy\u0107 us\u0142ug\u0119, po prostu wskazuj\u0105c w konfiguracji schemat wdro\u017cenia oraz sam\u0105 us\u0142ug\u0119.<\/p>\n<p>Zazwyczaj schemat wdro\u017cenia polega na okre\u015bleniu liczby instancji, kt\u00f3re powinny by\u0107 wdro\u017cone na w\u0119z\u0142ach klastra. Istniej\u0105 dwie standardowe schematy wdro\u017cenia. Pierwsza to Cluster Singleton: w dowolnym momencie w klastrze b\u0119dzie gwarantowana dost\u0119pno\u015b\u0107 jednego egzemplarza us\u0142ugi u\u017cytkownika. Druga to Node Singleton: na ka\u017cdym w\u0119\u017ale klastra wdro\u017cona jest jedna instancja us\u0142ugi. <\/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 \/>\nU\u017cytkownik mo\u017ce r\u00f3wnie\u017c okre\u015bli\u0107 liczb\u0119 instancji us\u0142ugi w ca\u0142ym klastrze oraz zdefiniowa\u0107 predykat do filtrowania odpowiednich w\u0119z\u0142\u00f3w. W takim scenariuszu Service Grid sam obliczy optymalne rozmieszczenie dla wdro\u017cenia us\u0142ug.<\/p>\n<p>Ponadto istnieje taka funkcja jak Affinity Service. Affinity to funkcja, kt\u00f3ra okre\u015bla powi\u0105zanie kluczy z partycjami oraz partycji z w\u0119z\u0142ami w topologii. Na podstawie klucza mo\u017cna zidentyfikowa\u0107 w\u0119ze\u0142 primary, na kt\u00f3rym przechowywane s\u0105 dane. W ten spos\u00f3b mo\u017cna powi\u0105za\u0107 sw\u00f3j w\u0142asny serwis z kluczem i pami\u0119ci\u0105 podr\u0119czn\u0105 funkcji affinity. W przypadku zmiany funkcji affinity nast\u0119puje automatyczny redeploy. Dzi\u0119ki temu serwis zawsze b\u0119dzie usytuowany blisko danych, kt\u00f3rymi musi zarz\u0105dza\u0107, co w konsekwencji zmniejszy koszty dost\u0119pu do informacji. Taki schemat mo\u017cna nazwa\u0107 rodzajem oblicze\u0144 kolokacyjnych.<\/p>\n<p>Teraz, gdy om\u00f3wili\u015bmy zalety Service Grid, opowiemy o jego historii rozwoju.<\/p>\n<h2>Co by\u0142o wcze\u015bniej<\/h2>\n<p>\nPoprzednia implementacja Service Grid opiera\u0142a si\u0119 na transakcyjnym replikowanym systemowym cache Ignite. Pod poj\u0119ciem \"cache\" w Ignite rozumie si\u0119 magazyn. Oznacza to, \u017ce nie jest to co\u015b tymczasowego, jak mo\u017cna by pomy\u015ble\u0107. Mimo \u017ce cache jest replikowany i ka\u017cdy w\u0119ze\u0142 zawiera pe\u0142ny zestaw danych, w jego wn\u0119trzu cache ma partiowane przedstawienie. Jest to zwi\u0105zane z optymalizacj\u0105 magazyn\u00f3w. <\/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 \/>\nCo si\u0119 dzia\u0142o, gdy u\u017cytkownik chcia\u0142 wdro\u017cy\u0107 us\u0142ug\u0119?<\/p>\n<ul>\n<li>Wszystkie w\u0119z\u0142y w klastrze subskrybowa\u0142y aktualizacje danych w magazynie za pomoc\u0105 wbudowanego mechanizmu Continuous Query.\n<\/li>\n<li>W\u0119ze\u0142 inicjator w ramach transakcji read-committed zapisywa\u0142 do bazy danych, kt\u00f3ra zawiera\u0142a konfiguracj\u0119 us\u0142ugi, w tym zserializowany egzemplarz.\n<\/li>\n<li>Po otrzymaniu powiadomienia o nowym zapisie, koordynator ocenia\u0142 rozk\u0142ad na podstawie konfiguracji. Otrzymany obiekt by\u0142 zapisywany z powrotem do bazy.\n<\/li>\n<li>Je\u015bli w\u0119ze\u0142 by\u0142 cz\u0119\u015bci\u0105 rozk\u0142adu, koordynator musia\u0142 go wdro\u017cy\u0107.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Co nam si\u0119 nie podoba\u0142o<\/h2>\n<p>\nW pewnym momencie doszli\u015bmy do wniosku, \u017ce tak nie mo\u017cna pracowa\u0107 z us\u0142ugami. Powod\u00f3w by\u0142o kilka.<\/p>\n<p>Je\u015bli podczas wdro\u017cenia wyst\u0105pi\u0142 jaki\u015b b\u0142\u0105d, mo\u017cna by\u0142o o nim dowiedzie\u0107 si\u0119 tylko z log\u00f3w tego w\u0119z\u0142a, gdzie to si\u0119 wydarzy\u0142o. Istnia\u0142 tylko asynchroniczny deploy, wi\u0119c po oddaniu kontroli u\u017cytkownikowi przez metod\u0119 deploya potrzebny by\u0142 dodatkowy czas na uruchomienie us\u0142ugi \u2014 w tym czasie u\u017cytkownik nie m\u00f3g\u0142 niczego kontrolowa\u0107. Aby rozwija\u0107 Service Grid dalej, dodawa\u0107 nowe funkcje, przyci\u0105ga\u0107 nowych u\u017cytkownik\u00f3w i u\u0142atwia\u0107 wszystkim \u017cycie, trzeba by\u0142o co\u015b zmieni\u0107.<\/p>\n<p>Podczas projektowania nowej Service Grid, przede wszystkim chcieli\u015bmy zapewni\u0107 gwarancj\u0119 synchronicznego wdro\u017cenia: jak tylko u\u017cytkownik odzyska kontrol\u0119 od API, natychmiast mo\u017ce korzysta\u0107 z us\u0142ug. Chcieli\u015bmy te\u017c da\u0107 inicjatorowi mo\u017cliwo\u015b\u0107 obs\u0142ugi b\u0142\u0119d\u00f3w wdro\u017cenia.<\/p>\n<p>Ponadto chcieli\u015bmy upro\u015bci\u0107 realizacj\u0119, a konkretnie zrezygnowa\u0107 z transakcji i rebalance\u2019ingu. Mimo \u017ce pami\u0119\u0107 podr\u0119czna jest replikowana i nie ma r\u00f3wnowa\u017cenia, podczas du\u017cego wdro\u017cenia z wieloma w\u0119z\u0142ami pojawia\u0142y si\u0119 problemy. Przy zmianie topologii w\u0119z\u0142y musz\u0105 wymienia\u0107 informacje, a przy du\u017cym wdro\u017ceniu te dane mog\u0105 by\u0107 bardzo obszerne.<\/p>\n<p>Kiedy topologia by\u0142a niestabilna, koordynator musia\u0142 przeliczy\u0107 rozk\u0142ad us\u0142ug. Og\u00f3lnie rzecz bior\u0105c, gdy konieczne jest dzia\u0142anie z transakcjami w niestabilnej topologii, mo\u017ce to prowadzi\u0107 do trudno przewidywalnych b\u0142\u0119d\u00f3w.<\/p>\n<h2>Problemy<\/h2>\n<p>\nJakie globalne zmiany mog\u0105 oby\u0107 si\u0119 bez towarzysz\u0105cych problem\u00f3w? Pierwszym z nich by\u0142a zmiana topologii. Nale\u017cy zrozumie\u0107, \u017ce w ka\u017cdej chwili, nawet podczas wdro\u017cenia us\u0142ugi, w\u0119ze\u0142 mo\u017ce do\u0142\u0105czy\u0107 do klastra lub z niego wyj\u015b\u0107. Co wi\u0119cej, je\u015bli w momencie wdro\u017cenia w\u0119ze\u0142 wejdzie do klastra, konieczne b\u0119dzie konsekwentne przekazanie ca\u0142ej informacji o us\u0142ugach do nowego w\u0119z\u0142a. Nie chodzi tu tylko o to, co ju\u017c zosta\u0142o wdro\u017cone, ale tak\u017ce o bie\u017c\u0105ce i przysz\u0142e wdro\u017cenia.<\/p>\n<p>To tylko jeden z problem\u00f3w, kt\u00f3re mo\u017cna zebra\u0107 w osobn\u0105 list\u0119:<\/p>\n<ul>\n<li>Jak wdro\u017cy\u0107 statycznie skonfigurowane us\u0142ugi podczas uruchamiania w\u0119z\u0142a?\n<\/li>\n<li>Wyj\u015bcie w\u0119z\u0142a z klastra \u2013 co zrobi\u0107, je\u015bli w\u0119ze\u0142 hostowa\u0142 us\u0142ugi?\n<\/li>\n<li>Co zrobi\u0107, je\u015bli zmieni\u0142 si\u0119 koordynator?\n<\/li>\n<li>Co zrobi\u0107, je\u015bli klient ponownie po\u0142\u0105czy\u0142 si\u0119 z klastrami?\n<\/li>\n<li>Czy nale\u017cy obs\u0142u\u017cy\u0107 zg\u0142oszenia aktywacji\/dezaktywacji i jak?\n<\/li>\n<li>A co, je\u015bli wezwano destrukcj\u0119 pami\u0119ci podr\u0119cznej, a mamy uzale\u017cnione od niej us\u0142ugi affinitowe?\n<\/li>\n<\/ul>\n<p>\nI to nie wszystko. <\/p>\n<h2>Rozwi\u0105zanie<\/h2>\n<p>\nJako cel wybrali\u015bmy podej\u015bcie oparte na zdarzeniach z realizacj\u0105 komunikacji proces\u00f3w poprzez wiadomo\u015bci. W Ignite ju\u017c zaimplementowano dwa komponenty, kt\u00f3re umo\u017cliwiaj\u0105 w\u0119z\u0142om wymian\u0119 wiadomo\u015bci mi\u0119dzy sob\u0105 \u2013 communication-spi i 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 pozwala w\u0119z\u0142om na bezpo\u015bredni\u0105 komunikacj\u0119 oraz wysy\u0142anie wiadomo\u015bci. Jest to dobre rozwi\u0105zanie do przesy\u0142ania du\u017cej ilo\u015bci danych. Discovery-spi umo\u017cliwia wys\u0142anie wiadomo\u015bci do wszystkich w\u0119z\u0142\u00f3w w klastrze. W standardowej implementacji odbywa si\u0119 to w topologii \u201ering\u201d. Istnieje r\u00f3wnie\u017c integracja z Zookeeperem, w takim przypadku u\u017cywana jest topologia \u201egwiazda\u201d. Warto r\u00f3wnie\u017c zaznaczy\u0107, \u017ce discovery-spi zapewnia gwarancje, \u017ce wiadomo\u015b\u0107 zostanie dostarczona w odpowiedniej kolejno\u015bci do wszystkich w\u0119z\u0142\u00f3w. <\/p>\n<p>Rozwa\u017cmy protok\u00f3\u0142 wdra\u017cania. Wszystkie \u017c\u0105dania u\u017cytkownik\u00f3w dotycz\u0105ce wdro\u017cenia i wycofania s\u0105 wysy\u0142ane przez discovery-spi. Daje to nast\u0119puj\u0105ce <i>gwarancje<\/i>:<\/p>\n<ul>\n<li>\u017b\u0105danie b\u0119dzie odebrane przez wszystkie w\u0119z\u0142y w klastrze. Umo\u017cliwi to kontynuacj\u0119 przetwarzania \u017c\u0105dania przy zmianie koordynatora. Oznacza to r\u00f3wnie\u017c, \u017ce ka\u017cde w\u0119ze\u0142 otrzyma wszystkie niezb\u0119dne metadane dotycz\u0105ce jednego komunikatu, takie jak konfiguracja us\u0142ugi oraz jej zserializowany instancja.\n<\/li>\n<li>\u015acis\u0142a kolejno\u015b\u0107 dostarczania wiadomo\u015bci pozwala rozwi\u0105zywa\u0107 konflikty konfiguracji oraz konkurencyjnych \u017c\u0105da\u0144.\n<\/li>\n<li>Poniewa\u017c wej\u015bcie w\u0119z\u0142a do topologii jest r\u00f3wnie\u017c przetwarzane za po\u015brednictwem discovery-spi, nowy w\u0119ze\u0142 otrzyma wszystkie dane potrzebne do obs\u0142ugi us\u0142ug.\n<\/li>\n<\/ul>\n<p>\nPo otrzymaniu \u017c\u0105dania w\u0119z\u0142y w klastrze waliduj\u0105 je i tworz\u0105 zadania do przetworzenia. Te zadania s\u0105 gromadzone w kolejce, a nast\u0119pnie przetwarzane w innym w\u0105tku przez oddzielnego wykonawc\u0119. Zosta\u0142o to zrealizowane w ten spos\u00f3b, poniewa\u017c wdra\u017canie mo\u017ce zaj\u0105\u0107 znaczny czas, co by\u0142oby niedopuszczalne, aby wstrzymywa\u0142o drogi strumie\u0144 discovery.<\/p>\n<p>Wszystkie \u017c\u0105dania z kolejki s\u0105 przetwarzane przez mened\u017cera wdro\u017ce\u0144. Ma on specjalnego wykonawc\u0119, kt\u00f3ry wyci\u0105ga zadanie z tej kolejki i inicjalizuje je, aby rozpocz\u0105\u0107 wdra\u017canie. Po tym nast\u0119puj\u0105 nast\u0119puj\u0105ce czynno\u015bci:<\/p>\n<ol>\n<li>Ka\u017cdy w\u0119ze\u0142 samodzielnie oblicza rozk\u0142ad dzi\u0119ki nowej deterministycznej funkcji przydzia\u0142u.\n<\/li>\n<li>W\u0119z\u0142y formuj\u0105 wiadomo\u015b\u0107 z wynikami wdra\u017cania i wysy\u0142aj\u0105 j\u0105 do koordynatora.\n<\/li>\n<li>Koordynator agreguje wszystkie wiadomo\u015bci i formuje wynik ca\u0142ego procesu wdra\u017cania, kt\u00f3ry jest wysy\u0142any przez discovery-spi do wszystkich w\u0119z\u0142\u00f3w w klastrze.\n<\/li>\n<li>Po otrzymaniu wyniku, proces wdra\u017cania ko\u0144czy si\u0119, po czym zadanie jest usuwane z kolejki.\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>Nowy projekt oparty na zdarzeniach: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Je\u015bli podczas wdra\u017cania wyst\u0105pi\u0142 b\u0142\u0105d, w\u0119ze\u0142 natychmiast w\u0142\u0105cza ten b\u0142\u0105d do wiadomo\u015bci, kt\u00f3r\u0105 przesy\u0142a koordynatorowi. Po agregacji wiadomo\u015bci koordynator b\u0119dzie mia\u0142 informacje o wszystkich b\u0142\u0119dach podczas wdro\u017cenia i wys\u0142a t\u0119 wiadomo\u015b\u0107 przez discovery-spi. Informacje o b\u0142\u0119dach b\u0119d\u0105 dost\u0119pne na ka\u017cdym w\u0119\u017ale w klastrze. <\/p>\n<p>Zgodnie z tym algorytmem przetwarzane s\u0105 wszystkie istotne zdarzenia w Service Grid. Na przyk\u0142ad zmiana topologii to r\u00f3wnie\u017c wiadomo\u015b\u0107 przez discovery-spi. Og\u00f3lnie rzecz bior\u0105c, w por\u00f3wnaniu do tego, co by\u0142o, protok\u00f3\u0142 sta\u0142 si\u0119 do\u015b\u0107 lekki i niezawodny. Na tyle, by poradzi\u0107 sobie z ka\u017cd\u0105 sytuacj\u0105 podczas wdra\u017cania. <\/p>\n<h2>Co b\u0119dzie dalej<\/h2>\n<p>\nTeraz o planach. Ka\u017cda du\u017ca poprawka w projekcie Ignite realizowana jest jako inicjatywa na popraw\u0119 Ignite, tzw. IEP. Redesign Service Grid ma r\u00f3wnie\u017c swoje 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> o zabawnym tytule \u00abWymiana oleju w Service Grid\u00bb. Ale tak naprawd\u0119 nie wymieniali\u015bmy oleju w silniku, lecz ca\u0142y silnik. <\/p>\n<p>Zadania w IEP podzielili\u015bmy na 2 fazy. Pierwsza \u2014 du\u017ca faza, kt\u00f3ra polega na przeprojektowaniu protoko\u0142u wdra\u017cania. Ju\u017c zosta\u0142a w\u0142\u0105czona do mastera, mo\u017cna wypr\u00f3bowa\u0107 nowy Service Grid, kt\u00f3ry pojawi si\u0119 w wersji 2.8. Druga faza obejmuje wiele innych zada\u0144:<\/p>\n<ul>\n<li>Gor\u0105ce redeploy\n<\/li>\n<li>Wersjonowanie us\u0142ug\n<\/li>\n<li>Zwi\u0119kszenie odporno\u015bci na awarie\n<\/li>\n<li>Cienki klient\n<\/li>\n<li>Narz\u0119dzia monitorowania i liczenia r\u00f3\u017cnych metryk\n<\/li>\n<\/ul>\n<p>\nNa koniec mo\u017cemy poleci\u0107 wam Service Grid do budowy odpornych system\u00f3w o wysokiej dost\u0119pno\u015bci. A tak\u017ce zapraszamy do 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> podzielenie si\u0119 swoim do\u015bwiadczeniem. Twoje do\u015bwiadczenie jest naprawd\u0119 wa\u017cne dla spo\u0142eczno\u015bci, pomo\u017ce zrozumie\u0107, w kt\u00f3r\u0105 stron\u0119 dalej si\u0119 rozwija\u0107, jak w przysz\u0142o\u015bci rozwija\u0107 komponent.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.1 - 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\/pl\/blog\/administrirovanie\/ignite-service-grid-perezagruzka\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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 restart | ProHoster","description":"26 lutego odby\u0142 si\u0119 meetup Apache Ignite GreenSource, na kt\u00f3rym prezentowali si\u0119 kontrybutorzy projektu open source Apache Ignite.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}