{"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\/it\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 riavvio","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Il 26 febbraio abbiamo tenuto un meetup su Apache Ignite GreenSource, dove hanno parlato i contributori del progetto open source <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. Un evento importante nella vita di questa comunit\u00e0 \u00e8 stata la ristrutturazione del componente <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, che consente di distribuire microservizi personalizzati direttamente nel cluster Ignite. Di questo processo complesso ha parlato al meetup <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vyacheslav Daradur<\/a><\/noindex>, ingegnere del software e da oltre due anni contributore di Apache Ignite.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 riavvio\" 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 \/>\nIniziamo con cosa sia Apache Ignite in generale. \u00c8 un database che rappresenta un archivio distribuito Key\/Value con supporto per SQL, transazionalit\u00e0 e caching. Inoltre, Ignite consente di distribuire servizi personalizzati direttamente nel cluster Ignite. Gli sviluppatori hanno accesso a tutti gli strumenti forniti da Ignite: strutture dati distribuite, Messaging, Streaming, Compute e Data Grid. Ad esempio, utilizzando il Data Grid, si elimina il problema della gestione di un'infrastruttura separata per l'archiviazione dei dati e, di conseguenza, le spese generali correlate.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 riavvio\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUtilizzando l'API Service Grid, \u00e8 possibile distribuire un servizio semplicemente specificando nella configurazione lo schema di distribuzione e, di conseguenza, il servizio stesso.<\/p>\n<p>Di solito, lo schema di distribuzione indica il numero di istanze che devono essere distribuite sui nodi del cluster. Ci sono due schemi di distribuzione tipici. Il primo \u00e8 Cluster Singleton: in qualsiasi momento nel cluster sar\u00e0 garantito che ci sia un solo esemplare del servizio personalizzato. Il secondo \u00e8 Node Singleton: su ogni nodo del cluster \u00e8 distribuito un esemplare del servizio. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 riavvio\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInoltre, l'utente pu\u00f2 specificare il numero di istanze del servizio nell'intero cluster e definire un predicato per filtrare i nodi appropriati. In questo scenario, il Service Grid calcoler\u00e0 autonomamente la distribuzione ottimale per la distribuzione dei servizi.<\/p>\n<p>Inoltre, esiste una funzionalit\u00e0 chiamata Affinity Service. Affinity \u00e8 una funzione che determina la connessione tra le chiavi e le partizioni e la connessione tra le partizioni e i nodi nella topologia. Con una chiave, \u00e8 possibile determinare il nodo primario su cui sono memorizzati i dati. In questo modo, puoi associare il tuo servizio con una chiave e la cache della funzione di affinit\u00e0. In caso di modifica della funzione di affinit\u00e0, si verificher\u00e0 un ridistribuzione automatica. Cos\u00ec il servizio sar\u00e0 sempre posizionato vicino ai dati con cui deve lavorare, riducendo di conseguenza i costi per l'accesso alle informazioni. Questo schema pu\u00f2 essere definito una sorta di calcolo collocato.<\/p>\n<p>Ora che abbiamo esplorato il fascino del Service Grid, parleremo della sua storia di sviluppo.<\/p>\n<h2>Cosa c'era prima<\/h2>\n<p>\nLa precedente implementazione del Service Grid si basava su una cache di sistema replicata transazionale chiamata Ignite. Con la parola \"cache\" in Ignite si intende uno storage. Cio\u00e8, non \u00e8 qualcosa di temporaneo, come si potrebbe pensare. Nonostante la cache sia replicata e ogni nodo contenga l'intero set di dati, all'interno la cache ha una rappresentazione partizionata. Questo \u00e8 correlato all'ottimizzazione degli storage. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 riavvio\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCosa succedeva quando un utente voleva distribuire un servizio?<\/p>\n<ul>\n<li>Tutti i nodi nel cluster si iscrivevano agli aggiornamenti dei dati nello storage tramite un meccanismo integrato di Continuous Query.\n<\/li>\n<li>Il nodo iniziatore, sotto una transazione read-committed, inseriva nel database una registrazione che conteneva la configurazione del servizio, incluso l'istanza serializzata.\n<\/li>\n<li>Quando riceveva una notifica di una nuova registrazione, il coordinatore calcolava la distribuzione in base alla configurazione. L'oggetto ottenuto veniva scritto di nuovo nel database.\n<\/li>\n<li>Se il nodo era incluso nella distribuzione, il coordinatore doveva distribuirlo.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Cosa non andava bene<\/h2>\n<p>\nA un certo punto, siamo giunti alla conclusione che non si poteva lavorare in questo modo con i servizi. Ci sono state diverse ragioni.<\/p>\n<p>Se durante la distribuzione si verificava un errore, si poteva venire a conoscenza solo dai log di quel nodo, dove tutto era accaduto. Esisteva solo una distribuzione asincrona, quindi dopo che il controllo veniva restituito all'utente dal metodo di distribuzione, ci voleva del tempo aggiuntivo per l'avvio del servizio \u2014 e in quel momento l'utente non poteva gestire nulla. Per sviluppare ulteriormente il Service Grid, implementare nuove funzionalit\u00e0, attirare nuovi utenti e rendere la vita pi\u00f9 semplice a tutti, era necessario cambiare qualcosa.<\/p>\n<p>Nella progettazione del nuovo Service Grid, la nostra priorit\u00e0 era garantire un deployment sincrono: non appena il controllo torna all'utente dall'API, pu\u00f2 immediatamente utilizzare i servizi. Volevamo anche dare all'iniziatore la possibilit\u00e0 di gestire gli errori di deployment.<\/p>\n<p>Inoltre, volevamo semplificare l'implementazione, ossia allontanarci dalle transazioni e dal rebalance. Nonostante la cache fosse replicabile e non ci fossero bilanciamenti, durante un grande deployment con molte nodi si sono presentati problemi. Quando la topologia cambia, le nodi devono scambiarsi informazioni, e durante un grande deployment, questi dati possono pesare molto.<\/p>\n<p>Quando la topologia era instabile, il coordinatore doveva ricalcolare la distribuzione dei servizi. E in generale, quando si lavora con transazioni su una topologia instabile, questo pu\u00f2 portare a errori difficilmente prevedibili.<\/p>\n<h2>Problemi<\/h2>\n<p>\nQuali possono essere le grandi trasformazioni senza problemi collaterali? Il primo \u00e8 stato il cambiamento della topologia. \u00c8 importante capire che in qualsiasi momento, anche durante il deployment di un servizio, un nodo pu\u00f2 entrare o uscire dal cluster. Inoltre, se durante il deployment un nodo entra nel cluster, sar\u00e0 necessario trasferire in modo coerente tutte le informazioni sui servizi al nuovo nodo. E non si tratta solo di ci\u00f2 che \u00e8 gi\u00e0 stato implementato, ma anche dei deployment attuali e futuri.<\/p>\n<p>Questa \u00e8 solo una delle problematiche che possono essere raccolte in un elenco separato:<\/p>\n<ul>\n<li>Come si pu\u00f2 deployare servizi configurati staticamente all'avvio di un nodo?\n<\/li>\n<li>Cosa fare se un nodo esce dal cluster ed era l'host di servizi?\n<\/li>\n<li>Cosa fare se il coordinatore cambia?\n<\/li>\n<li>Cosa fare se un client si riconnette al cluster?\n<\/li>\n<li>\u00c8 necessario elaborare richiesta di attivazione\/disattivazione e come?\n<\/li>\n<li>E se fosse stata chiamata la distruzione della cache, e noi abbiamo servizi affini legati ad essa?\n<\/li>\n<\/ul>\n<p>\nE questo \u00e8 solo l'inizio. <\/p>\n<h2>Soluzione<\/h2>\n<p>\nCome obiettivo abbiamo scelto l'approccio Event Driven con comunicazione tra processi tramite messaggi. In Ignite sono gi\u00e0 stati implementati due componenti che consentono ai nodi di inviare messaggi tra loro: communication-spi e discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 riavvio\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommunication-spi consente ai nodi di comunicare direttamente e inviare messaggi. \u00c8 particolarmente adatto per la trasmissione di grandi volumi di dati. Discovery-spi permette di inviare un messaggio a tutti i nodi nel cluster. Nella sua implementazione standard, questo avviene con una topologia \"anello\". Esiste inoltre un'integrazione con Zookeeper, nel qual caso si utilizza una topologia \"stella\". Vale la pena notare un aspetto importante: discovery-spi fornisce garanzie sul fatto che il messaggio sar\u00e0 consegnato nell'ordine corretto a tutti i nodi. <\/p>\n<p>Consideriamo il protocollo di deploy. Tutte le richieste degli utenti per il deploy e l'un-deploy vengono inviate tramite discovery-spi. Questo offre le seguenti <i>garanzie<\/i>:<\/p>\n<ul>\n<li>La richiesta sar\u00e0 ricevuta da tutti i nodi nel cluster. Questo consentir\u00e0 di continuare a elaborare la richiesta in caso di cambio del coordinatore. Significa anche che per un singolo messaggio ogni nodo avr\u00e0 a disposizione tutte le metadati necessarie, come la configurazione del servizio e la sua istanza serializzata.\n<\/li>\n<li>L'ordine rigido di consegna dei messaggi consente di risolvere conflitti tra configurazioni e richieste concorrenti.\n<\/li>\n<li>Poich\u00e9 l'ingresso del nodo nella topologia viene gestito anch'esso tramite discovery-spi, anche il nuovo nodo ricever\u00e0 tutti i dati necessari per interagire con i servizi.\n<\/li>\n<\/ul>\n<p>\nQuando ricevono una richiesta, i nodi nel cluster la convalidano e formano compiti da elaborare. Questi compiti vengono messi in coda e successivamente elaborati in un altro thread da un lavoratore distinto. Questo \u00e8 stato implementato in questo modo perch\u00e9 il deploy pu\u00f2 richiedere un tempo significativo e ritardare il costoso flusso discovery \u00e8 inaccettabile.<\/p>\n<p>Tutte le richieste in coda vengono elaborate dal deployment-manager. Esso dispone di un lavoratore speciale che estrae un compito da questa coda e lo inizializza per avviare il deploy. Successivamente si svolgono le seguenti operazioni:<\/p>\n<ol>\n<li>Ogni nodo calcola autonomamente la distribuzione grazie a una nuova funzione di assegnazione deterministica.\n<\/li>\n<li>I nodi creano un messaggio con i risultati del deploy e lo inviano al coordinatore.\n<\/li>\n<li>Il coordinatore aggrega tutti i messaggi e forma il risultato dell'intero processo di deploy, che viene inviato tramite discovery-spi a tutti i nodi nel cluster.\n<\/li>\n<li>Al ricevimento del risultato, il processo di deploy termina, dopodich\u00e9 il compito viene rimosso dalla coda.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 riavvio\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nuovo design event-driven: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Se si verifica un errore durante il dispiegamento, il nodo include immediatamente questo errore nel messaggio che invia al coordinatore. Dopo l'aggregazione dei messaggi, il coordinatore avr\u00e0 informazioni su tutti gli errori durante il dispiegamento e invier\u00e0 questo messaggio tramite discovery-spi. Le informazioni sugli errori saranno disponibili su qualsiasi nodo nel cluster. <\/p>\n<p>Secondo questo algoritmo, vengono elaborati tutti gli eventi importanti nel Service Grid. Ad esempio, un cambiamento nella topologia \u00e8 anch'esso un messaggio tramite discovery-spi. In generale, rispetto al passato, il protocollo risulta abbastanza leggero e affidabile. Tanto da poter gestire qualsiasi situazione durante il dispiegamento. <\/p>\n<h2>Cosa succeder\u00e0 dopo<\/h2>\n<p>\nOra parliamo dei progetti. Qualsiasi grande modifica nel progetto Ignite viene eseguita come iniziativa per migliorare Ignite, il cosiddetto IEP. Anche il redesign del Service Grid ha il suo IEP \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/IEP-17%3A+Oil+Change+in+Service+Grid\">IEP n. 17<\/a><\/noindex> con il divertente titolo \u00abSostituzione dell'olio nel Service Grid\u00bb. Ma in realt\u00e0 abbiamo cambiato non solo l'olio nel motore, ma l'intero motore. <\/p>\n<p>Abbiamo suddiviso i compiti nell'IEP in 2 fasi. La prima \u00e8 una fase importante che consiste nella revisione del protocollo di dispiegamento. \u00c8 gi\u00e0 stata integrata nel master, quindi si pu\u00f2 provare il nuovo Service Grid, che sar\u00e0 disponibile nella versione 2.8. La seconda fase comprende molte altre attivit\u00e0:<\/p>\n<ul>\n<li>Ridispiegamento caldo\n<\/li>\n<li>Versionamento dei servizi\n<\/li>\n<li>Aumento della resilienza\n<\/li>\n<li>Client leggero\n<\/li>\n<li>Strumenti di monitoraggio e per il conteggio di varie metriche\n<\/li>\n<\/ul>\n<p>\nInfine, possiamo consigliarvi il Service Grid per costruire sistemi ad alta disponibilit\u00e0 resilienti. Vi invitiamo anche a unirvi a noi in <noindex><a rel=\"nofollow\" href=\"mailto:dev@ignite.apache.org\">dev-list<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"mailto:user@ignite.apache.org\">user-list<\/a><\/noindex> per condividere la vostra esperienza. La vostra esperienza \u00e8 realmente importante per la comunit\u00e0, aiuter\u00e0 a capire in che direzione andare e come sviluppare ulteriormente il componente.<br \/>\n<br \/>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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 rilancio | ProHoster","description":"Il 26 febbraio abbiamo tenuto un meetup di Apache Ignite GreenSource, dove sono intervenuti i contributor del progetto open source Apache Ignite.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}