{"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\/da\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 genstart","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Den 26. februar afholdt vi et meetup om Apache Ignite GreenSource, hvor bidragydere fra open source-projektet talte. <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>En vigtig begivenhed i dette f\u00e6llesskabs liv var oml\u00e6gningen af komponenten <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, som muligg\u00f8r udrulning af brugerdefinerede mikrotjenester direkte i Ignite-klusteret. Om denne udfordrende proces talte <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vyacheslav Daradur<\/a><\/noindex>, softwareingeni\u00f8r og allerede i mere end to \u00e5r bidragyder til Apache Ignite.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 genstart\" 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 \/>\nLad os starte med, hvad Apache Ignite egentlig er. Det er en database, der fungerer som et distribueret Key\/Value-lager med st\u00f8tte til SQL, transaktionalitet og caching. Derudover muligg\u00f8r Ignite udrulning af brugerdefinerede tjenester direkte i Ignite-klusteret. Udvikleren f\u00e5r adgang til alle de v\u00e6rkt\u00f8jer, som Ignite tilbyder \u2014 distribuerede datastrukturer, messaging, streaming, compute og data grid. For eksempel, n\u00e5r man bruger Data Grid, slipper man for at administrere en separat infrastruktur til datalageret, og dermed de deraf f\u00f8lgende omkostninger.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 genstart\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVed at bruge Service Grid API'en kan man deployere en tjeneste blot ved at angive deployskemaet i konfigurationen og selve tjenesten.<\/p>\n<p>Typisk er deployskemaet en angivelse af antallet af instanser, der skal udrulles p\u00e5 klusterknudepunkterne. Der er to typiske deployskemaer. Den f\u00f8rste er Cluster Singleton: p\u00e5 ethvert givent tidspunkt vil der i klusteret garanteret v\u00e6re \u00e9n tilg\u00e6ngelig instans af den brugerdefinerede tjeneste. Den anden er Node Singleton: p\u00e5 hver knude i klusteret er der udrullet \u00e9n instans af tjenesten. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 genstart\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBrugeren kan ogs\u00e5 angive antallet af instanser af tjenesten i hele klusteret og definere et pr\u00e6dikat til filtrering af passende knudepunkter. I dette scenario vil Service Grid selv beregne den optimale fordeling for udrulning af tjenester.<\/p>\n<p>Desuden findes der en funktion kaldet Affinity Service. Affinity er en funktion, der bestemmer forbindelsen mellem n\u00f8gler og partitioner samt forbindelsen mellem partitioner og knudepunkter i topologien. Ud fra n\u00f8glen kan man identificere primary-knuden, hvor dataene opbevares. P\u00e5 denne m\u00e5de kan man associerere sin egen service med en n\u00f8gle og cache-affinity-funktionen. I tilf\u00e6lde af \u00e6ndringer i affinity-funktionen vil der ske en automatisk redeployering. S\u00e5ledes vil servicen altid v\u00e6re placeret n\u00e6r de data, den skal h\u00e5ndtere, hvilket n\u00f8dig vil reducere omkostningerne ved at f\u00e5 adgang til informationen. En s\u00e5dan ops\u00e6tning kan betegnes som en form for kolloideret beregning.<\/p>\n<p>Nu hvor vi har gennemg\u00e5et fordelene ved Service Grid, vil vi fort\u00e6lle om dens udviklingshistorie.<\/p>\n<h2>Hvad skete der f\u00f8r<\/h2>\n<p>\nDen tidligere implementering af Service Grid var baseret p\u00e5 et transaktionelt replikeret systemcache Ignite. Med ordet \"cache\" henvises der til et lager i Ignite. Det vil sige, det er ikke noget midlertidigt som man kunne tro. Selvom cachen er replikeret, og hver knude indeholder hele datas\u00e6ttet, har cachen internt en partitioneret pr\u00e6sentation. Dette skyldes optimering af lagersystemerne. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 genstart\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvad skete der, n\u00e5r en bruger \u00f8nskede at deployere en service?<\/p>\n<ul>\n<li>Alle noder i klyngen tilmeldte sig opdateringer af data i lageret ved hj\u00e6lp af den indbyggede mekanisme Continuous Query.\n<\/li>\n<li>Initiatornoden oprettede en post i databasen under en read-committed transaktion, der indeholdt servicekonfigurationen, inklusive den serialiserede instans.\n<\/li>\n<li>Ved modtagelse af underretningen om den nye post beregnede koordinatoren fordelingen baseret p\u00e5 konfigurationen. Det opn\u00e5ede objekt blev skrevet tilbage til databasen.\n<\/li>\n<li>Hvis noden var en del af fordelingen, skulle koordinatoren deployere den.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Hvad var vores utilfredshed<\/h2>\n<p>\nP\u00e5 et tidspunkt kom vi frem til, at det ikke var muligt at arbejde s\u00e5dan med tjenester. Der var flere grunde til dette.<\/p>\n<p>Hvis der opstod en fejl under deployment, kunne man kun finde ud af det fra loggen p\u00e5 den knude, hvor det hele skete. Der eksisterede kun en asynkron deployment, s\u00e5 n\u00e5r kontrol blev givet tilbage til brugeren fra deploymentmetoden, var der behov for lidt ekstra tid til at starte servicen \u2014 og i den tid kunne brugeren ikke administrere noget. For at videreudvikle Service Grid, implementere nye funktioner, tiltr\u00e6kke nye brugere og g\u00f8re livet lettere for alle, var der behov for \u00e6ndringer.<\/p>\n<p>N\u00e5r vi designede det nye Service Grid, var vores prim\u00e6re m\u00e5l at sikre synkron deployment: s\u00e5 snart brugeren har f\u00e5et kontrol tilbage fra API'et, kan de straks bruge tjenesterne. Vi \u00f8nskede ogs\u00e5 at give initiatoren mulighed for at h\u00e5ndtere deployment-fejl.<\/p>\n<p>Derudover \u00f8nskede vi at lette implementeringen, specifikt ved at fjerne transaktioner og rebalancering. Selvom cachen er replikeringen og der ikke er nogen balancering, opstod der problemer under store deployment'er med mange noder. N\u00e5r topologien \u00e6ndres, skal noderne udveksle information, og under store deployment'er kan disse data veje meget.<\/p>\n<p>N\u00e5r topologien var ustabil, skulle koordinatoren genberegne fordelingen af tjenesterne. Generelt, n\u00e5r man skal arbejde med transaktioner p\u00e5 en ustabil topologi, kan dette f\u00f8re til sv\u00e6rt forudsigelige fejl.<\/p>\n<h2>Problemer<\/h2>\n<p>\nHvilke globale \u00e6ndringer kommer uden tilh\u00f8rende problemer? Den f\u00f8rste af dem var \u00e6ndringen af topologien. Man skal forst\u00e5, at p\u00e5 ethvert tidspunkt, selv under deployment af en tjeneste, kan en node tilslutte sig eller forlade klyngen. Desuden, hvis en node tilslutter sig klyngen under deployment, skal al information om tjenesterne overf\u00f8res til den nye node p\u00e5 en konsekvent m\u00e5de. Det handler ikke kun om det, der allerede er blevet implementeret, men ogs\u00e5 om nuv\u00e6rende og fremtidige deployment'er.<\/p>\n<p>Dette er kun et af problemerne, som kan samles i en separat liste:<\/p>\n<ul>\n<li>Hvordan deployer man statisk konfigurerede tjenester ved opstart af en node?\n<\/li>\n<li>Hvad skal man g\u00f8re, hvis en node forlader klyngen og har hostet tjenester?\n<\/li>\n<li>Hvad skal man g\u00f8re, hvis koordinatoren skifter?\n<\/li>\n<li>Hvad skal man g\u00f8re, hvis klienten genopretter forbindelsen til klyngen?\n<\/li>\n<li>Skal man behandle aktiverings-\/deaktiveringsanmodninger, og hvordan?\n<\/li>\n<li>Hvad hvis destruktionen af cachen bliver kaldt, men vi har affinitetstjenester bundet til den?\n<\/li>\n<\/ul>\n<p>\nOg det er langt fra alt. <\/p>\n<h2>L\u00f8sning<\/h2>\n<p>\nSom m\u00e5l valgte vi en Event Driven tilgang med implementering af proceskommunikation via beskeder. I Ignite er der allerede implementeret to komponenter, der g\u00f8r det muligt for noder at sende beskeder til hinanden: communication-spi og discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 genstart\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommunication-spi giver noder mulighed for at kommunikere direkte og sende beskeder. Det er velegnet til at overf\u00f8re store datam\u00e6ngder. Discovery-spi g\u00f8r det muligt at sende en besked til alle noder i klyngen. I den standardm\u00e6ssige implementering g\u00f8res dette i en \"ring\"-topologi. Der er ogs\u00e5 integration med Zookeeper, hvor der i det tilf\u00e6lde anvendes en \"stjerne\"-topologi. Det er ogs\u00e5 vigtigt at bem\u00e6rke, at discovery-spi giver garantier for, at beskeden sikkert vil blive leveret i den rigtige r\u00e6kkef\u00f8lge til alle noder. <\/p>\n<p>Lad os se p\u00e5 deploymentsprotokollen. Alle brugerforesp\u00f8rgsler til deployment og undeployment sendes via discovery-spi. Dette giver f\u00f8lgende <i>garantier<\/i>:<\/p>\n<ul>\n<li>Foresp\u00f8rgslen vil blive modtaget af alle noder i klyngen. Dette muligg\u00f8r fortsat behandling af foresp\u00f8rgslen ved skift af koordinator. Det betyder ogs\u00e5, at hver node vil have alle n\u00f8dvendige metadata for en enkelt besked, s\u00e5som tjenestekonfiguration og dens serialiserede instans.\n<\/li>\n<li>Den strenge r\u00e6kkef\u00f8lge for levering af beskeder muligg\u00f8r h\u00e5ndtering af konflikter mellem konfigurationer og konkurrede foresp\u00f8rgsler.\n<\/li>\n<li>Da indtr\u00e6den af noder i topologien ogs\u00e5 behandles via discovery-spi, vil den nye node modtage alle n\u00f8dvendige data for at arbejde med tjenesterne.\n<\/li>\n<\/ul>\n<p>\nVed modtagelse af en foresp\u00f8rgsel validerer noderne i klyngen den og danner opgaver til behandling. Disse opgaver placeres i en k\u00f8 og behandles derefter i en anden tr\u00e5d af en separat worker. Det er implementeret p\u00e5 denne m\u00e5de, fordi deployment kan tage betydelig tid, og det ville v\u00e6re uacceptabelt at forsinke den dyre discovery-str\u00f8m.<\/p>\n<p>Alle foresp\u00f8rgsler fra k\u00f8en behandles af deployment-manageren. Den har en speciel worker, der tr\u00e6kker en opgave fra denne k\u00f8 og initialiserer den for at p\u00e5begynde deployment. Herefter sker f\u00f8lgende handlinger:<\/p>\n<ol>\n<li>Hver node beregner selv fordelingen takket v\u00e6re den nye deterministiske tildelingsfunktion.\n<\/li>\n<li>Noderne danner en besked med resultaterne af deployment og sender den til koordinatoren.\n<\/li>\n<li>Koordinatoren aggregerer alle beskeder og danner resultatet af hele deploymentsprocessen, som sendes via discovery-spi til alle noder i klyngen.\n<\/li>\n<li>Ved modtagelse af resultatet afsluttes deploymentsprocessen, hvorefter opgaven fjernes fra k\u00f8en.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 genstart\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ny event-drevet design: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Hvis der opstod en fejl under implementeringen, inkluderer knuden straks denne fejl i meddelelsen, som sendes til koordinatoren. Efter aggregering af meddelelserne vil koordinatoren have information om alle fejl under deployment og sende denne besked via discovery-spi. Fejlinformation vil v\u00e6re tilg\u00e6ngelig p\u00e5 enhver knude i klyngen. <\/p>\n<p>Denne arbejdsmetode behandler alle vigtige begivenheder i Service Grid. For eksempel er \u00e6ndringen af topologien ogs\u00e5 en meddelelse via discovery-spi. Samlet set, n\u00e5r man sammenligner med det, der var, er protokollen blevet ganske lettilg\u00e6ngelig og p\u00e5lidelig. S\u00e5 meget, at den kan h\u00e5ndtere enhver situation under deployment. <\/p>\n<h2>Hvad vil der ske videre<\/h2>\n<p>\nNu til planerne. Enhver st\u00f8rre forbedring i projektet Ignite udf\u00f8res som en initiativ til forbedring af Ignite, kaldet IEP. Redesign af Service Grid har ogs\u00e5 et IEP - <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> med det sjove navn 'Udskiftning af olie i Service Grid'. Men reelt set har vi ikke skiftet olie i motoren, men motoren helt. <\/p>\n<p>Vi har delt opgaverne i IEP i 2 faser. Den f\u00f8rste - en stor fase, som handler om omarbejdning af deploy-protokollen. Den er allerede integreret i masteren, man kan pr\u00f8ve den nye Service Grid, der vil komme i version 2.8. Den anden fase omfatter mange andre opgaver:<\/p>\n<ul>\n<li>Hot redeploy\n<\/li>\n<li>Versionering af services\n<\/li>\n<li>Forbedring af fejltolerance\n<\/li>\n<li>Tynd klient\n<\/li>\n<li>Overv\u00e5gningsv\u00e6rkt\u00f8jer og beregning af forskellige metrikker\n<\/li>\n<\/ul>\n<p>\nTil sidst kan vi anbefale Service Grid til at opbygge fejltolerante systemer med h\u00f8j tilg\u00e6ngelighed. Og vi inviterer dig til vores <noindex><a rel=\"nofollow\" href=\"mailto:dev@ignite.apache.org\">dev-list<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"mailto:user@ignite.apache.org\">user-list<\/a><\/noindex> for at dele din erfaring. Din erfaring er virkelig vigtig for samfundet, den vil hj\u00e6lpe med at forst\u00e5, hvilken retning vi skal bev\u00e6ge os i fremover, og hvordan vi kan udvikle komponenten.<br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/ignite-service-grid-perezagruzka\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 genstart | ProHoster","description":"Den 26. februar afholdt vi et meetup om Apache Ignite GreenSource, hvor bidragsydere til open source-projektet Apache Ignite deltog.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}