{"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\/de\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 Neulandung","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Am 26. Februar veranstalteten wir das Meetup Apache Ignite GreenSource, bei dem Mitwirkende des Open-Source-Projekts sprachen. <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. Ein wichtiges Ereignis im Leben dieser Gemeinschaft war die Neugestaltung des Components <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, das es erm\u00f6glicht, benutzerdefinierte Mikrodienste direkt im Ignite-Cluster bereitzustellen. \u00dcber diesen anspruchsvollen Prozess sprach beim Meetup <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vyacheslav Daradur<\/a><\/noindex>, Software-Ingenieur und bereits seit \u00fcber zwei Jahren Mitwirkender bei Apache Ignite.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 Neulandung\" 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 \/>\nBeginnen wir damit, was Apache Ignite eigentlich ist. Es ist eine Datenbank, die ein verteiltes Key\/Value-Speichersystem mit Unterst\u00fctzung f\u00fcr SQL, Transaktionsf\u00e4higkeit und Caching bietet. Dar\u00fcber hinaus erm\u00f6glicht Ignite die Bereitstellung benutzerdefinierter Dienste direkt im Ignite-Cluster. Entwicklern stehen alle Werkzeuge zur Verf\u00fcgung, die Ignite bereitstellt \u2014 verteilte Datenstrukturen, Messaging, Streaming, Compute und Data Grid. Zum Beispiel entf\u00e4llt bei der Verwendung des Data Grid das Problem mit der Verwaltung einer separaten Infrastruktur f\u00fcr das Datenspeicher, was wiederum die daraus resultierenden Kosten senkt.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 Neulandung\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMit der API von Service Grid kann ein Dienst bereitgestellt werden, indem einfach das Bereitstellungsschema in der Konfiguration angegeben und entsprechend der Dienst selbst definiert wird.<\/p>\n<p>Das Bereitstellungsschema gibt normalerweise die Anzahl der Instanzen an, die auf den Knoten des Clusters bereitgestellt werden sollen. Es gibt zwei typische Bereitstellungsschemata. Das erste ist Cluster Singleton: zu jedem Zeitpunkt wird im Cluster garantiert ein Exemplar des benutzerdefinierten Dienstes verf\u00fcgbar sein. Das zweite ist Node Singleton: auf jedem Knoten des Clusters wird eine Instanz des Dienstes bereitgestellt. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 Neulandung\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAu\u00dferdem kann der Benutzer die Anzahl der Instanzen des Dienstes im gesamten Cluster angeben und ein Pr\u00e4dikat zur Filterung geeigneter Knoten definieren. In diesem Szenario berechnet das Service Grid selbst die optimale Verteilung f\u00fcr die Bereitstellung der Dienste.<\/p>\n<p>Dar\u00fcber hinaus gibt es eine Funktion wie den Affinity Service. Affinity ist eine Funktion, die die Beziehung zwischen Schl\u00fcsseln und Partitionen sowie die Beziehung zwischen Partitionen und Knoten in der Topologie definiert. Anhand des Schl\u00fcssels kann der prim\u00e4re Knoten bestimmt werden, auf dem die Daten gespeichert sind. So kann Ihr eigener Service mit dem Schl\u00fcssel und dem Cache der Affinity-Funktion assoziiert werden. Im Falle einer \u00c4nderung der Affinity-Funktion wird ein automatischer Redeployment durchgef\u00fchrt. Dadurch wird der Service immer in der N\u00e4he der Daten platziert, mit denen er arbeiten soll, und reduziert somit die Betriebskosten f\u00fcr den Zugriff auf Informationen. Ein solches Schema kann als eine Art kollokierte Berechnung bezeichnet werden.<\/p>\n<p>Jetzt, da wir die Vorteile des Service Grids behandelt haben, erz\u00e4hlen wir von seiner Entwicklungsgeschichte.<\/p>\n<h2>Was war fr\u00fcher<\/h2>\n<p>\nDie vorherige Umsetzung des Service Grids basierte auf einem transaktionalen, replizierten System-Cache Ignite. Unter dem Begriff \"Cache\" versteht man in Ignite ein Speicher. Das hei\u00dft, es handelt sich nicht um etwas Zeitweiliges, wie man vielleicht denken k\u00f6nnte. Obwohl der Cache replizierbar ist und jeder Knoten die gesamte Datensammlung enth\u00e4lt, hat der Cache intern eine partitionierte Darstellung. Dies h\u00e4ngt mit der Optimierung der Speicher zusammen. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 Neulandung\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWas geschah, wenn ein Benutzer einen Service implementieren wollte?<\/p>\n<ul>\n<li>Alle Knoten im Cluster abonnierten die Datenaktualisierung im Speicher \u00fcber den integrierten Mechanismus Continuous Query.\n<\/li>\n<li>Der Initiator-Knoten f\u00fchrte unter einer Read-Committed-Transaktion einen Datensatz in die Datenbank ein, der die Konfiguration des Services, einschlie\u00dflich einer serialisierten Instanz, enthielt.\n<\/li>\n<li>Bei Erhalt der Benachrichtigung \u00fcber den neuen Datensatz berechnete der Koordinator die Verteilung basierend auf der Konfiguration. Das erhaltene Objekt wurde zur\u00fcck in die Datenbank geschrieben.\n<\/li>\n<li>Wenn der Knoten in die Verteilung fiel, musste der Koordinator ihn implementieren.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Was uns nicht gefiel<\/h2>\n<p>\nIrgendwann kamen wir zu dem Schluss: So kann man nicht mit Services arbeiten. Es gab mehrere Gr\u00fcnde daf\u00fcr.<\/p>\n<p>Wenn w\u00e4hrend des Deployments ein Fehler auftrat, konnte man nur aus den Protokollen des Knotens, an dem alles passierte, davon erfahren. Es gab nur ein asynchrones Deployment, sodass nach der R\u00fcckgabe der Kontrolle an den Benutzer vom Deployment-Methoden einige zus\u00e4tzliche Zeit f\u00fcr den Start des Services erforderlich war \u2013 in dieser Zeit konnte der Benutzer nichts steuern. Um das Service Grid weiterzuentwickeln, neue Funktionen zu implementieren, neue Benutzer zu gewinnen und allen das Leben zu erleichtern, musste etwas ge\u00e4ndert werden.<\/p>\n<p>Bei der Planung des neuen Service Grids wollten wir in erster Linie die Garantie f\u00fcr einen synchronen Deployment-Prozess bieten: Sobald der Benutzer von der API die Kontrolle zur\u00fcckerh\u00e4lt, kann er sofort die Dienste nutzen. Au\u00dferdem wollten wir dem Initiator die M\u00f6glichkeit geben, Fehler beim Deployment zu behandeln.<\/p>\n<p>Dar\u00fcber hinaus wollten wir die Implementierung erleichtern, indem wir auf Transaktionen und Rebalancierung verzichten. Trotz der Tatsache, dass der Cache repliziert und keine Balancierung vorhanden ist, traten w\u00e4hrend eines gro\u00dfen Deployments mit vielen Knoten Probleme auf. Bei \u00c4nderungen der Topologie m\u00fcssen die Knoten Informationen austauschen, und bei einem gro\u00dfen Deployment k\u00f6nnen diese Daten sehr viel wiegen.<\/p>\n<p>Wenn die Topologie instabil war, musste der Koordinator die Verteilung der Dienste neu berechnen. Im Allgemeinen k\u00f6nnen beim Arbeiten mit Transaktionen in einer instabilen Topologie schwer vorhersehbare Fehler auftreten.<\/p>\n<h2>Probleme<\/h2>\n<p>\nWelche globalen Ver\u00e4nderungen kommen schon ohne begleitende Probleme? Die erste davon war die Ver\u00e4nderung der Topologie. Man muss verstehen, dass jederzeit, auch w\u00e4hrend eines Service-Deployments, ein Knoten dem Cluster beitreten oder ihn verlassen kann. Dar\u00fcber hinaus, wenn ein Knoten w\u00e4hrend des Deployments dem Cluster beitritt, muss alle Informationen \u00fcber die Dienste konsistent an den neuen Knoten \u00fcbertragen werden. Dabei geht es nicht nur um das, was bereits bereitgestellt wurde, sondern auch um aktuelle und zuk\u00fcnftige Deployments.<\/p>\n<p>Das ist nur eines der Probleme, die man in eine eigene Liste aufnehmen kann:<\/p>\n<ul>\n<li>Wie kann man statisch konfigurierte Dienste beim Start eines Knotens bereitstellen?\n<\/li>\n<li>Was tun, wenn ein Knoten den Cluster verl\u00e4sst \u2013 was ist, wenn der Knoten Dienste gehostet hat?\n<\/li>\n<li>Was tun, wenn der Koordinator gewechselt wurde?\n<\/li>\n<li>Was tun, wenn sich der Client erneut mit dem Cluster verbindet?\n<\/li>\n<li>M\u00fcssen Aktivierungs-\/Deaktivierungsanfragen verarbeitet werden und wie?\n<\/li>\n<li>Und was, wenn der Cache zerst\u00f6rt wird und wir abh\u00e4ngige Affinit\u00e4tsdienste haben?\n<\/li>\n<\/ul>\n<p>\nUnd das ist bei weitem nicht alles. <\/p>\n<h2>L\u00f6sung<\/h2>\n<p>\nAls Ziel haben wir den Event-Driven-Ansatz gew\u00e4hlt, der die Kommunikation der Prozesse \u00fcber Nachrichten realisiert. In Ignite sind bereits zwei Komponenten implementiert, die es den Knoten erm\u00f6glichen, Nachrichten untereinander zu versenden \u2013 communication-spi und discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 Neulandung\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommunication-spi erm\u00f6glicht es Knoten, direkt zu kommunizieren und Nachrichten zu senden. Es eignet sich gut f\u00fcr die \u00dcbertragung gro\u00dfer Datenmengen. Discovery-spi erm\u00f6glicht das Senden einer Nachricht an alle Knoten im Cluster. In der Standardimplementierung erfolgt dies nach der Topologie \u201eRing\u201c. Au\u00dferdem gibt es eine Integration mit Zookeeper, in diesem Fall wird die Topologie \u201eStern\u201c verwendet. Ein wichtiger Punkt ist, dass discovery-spi Garantien bietet, dass die Nachricht in der richtigen Reihenfolge an alle Knoten zugestellt wird. <\/p>\n<p>Betrachten wir das Deployment-Protokoll. Alle Benutzeranfragen zum Deployment und Undeployment werden \u00fcber discovery-spi gesendet. Dies bietet folgende <i>Garantien<\/i>:<\/p>\n<ul>\n<li>Die Anfrage wird von allen Knoten im Cluster empfangen. Dies erm\u00f6glicht die Fortsetzung der Bearbeitung der Anfrage beim Wechsel des Koordinators. Das bedeutet auch, dass jeder Knoten f\u00fcr eine Nachricht alle erforderlichen Metadaten erh\u00e4lt, wie z.B. die Konfiguration des Dienstes und seine serialisierte Instanz.\n<\/li>\n<li>Die strikte Reihenfolge der Zustellung von Nachrichten erm\u00f6glicht es, Konflikte bei Konfigurationen und konkurrierenden Anfragen zu l\u00f6sen.\n<\/li>\n<li>Da der Eintritt des Knotens in die Topologie ebenfalls \u00fcber discovery-spi verarbeitet wird, erh\u00e4lt der neue Knoten alle Daten, die f\u00fcr die Arbeit mit den Diensten erforderlich sind.\n<\/li>\n<\/ul>\n<p>\nBeim Empfang einer Anfrage validieren die Knoten im Cluster diese und erstellen Aufgaben zur Bearbeitung. Diese Aufgaben werden in eine Warteschlange gelegt und dann in einem anderen Thread von einem separaten Worker bearbeitet. Dies ist so implementiert, da das Deployment erheblich Zeit in Anspruch nehmen kann und die teure Discovery-Leitung nicht verz\u00f6gert werden darf.<\/p>\n<p>Alle Anfragen aus der Warteschlange werden vom Deployment-Manager bearbeitet. Er hat einen speziellen Worker, der eine Aufgabe aus dieser Warteschlange entnimmt und sie initiiert, um das Deployment zu starten. Danach erfolgen die folgenden Schritte:<\/p>\n<ol>\n<li>Jeder Knoten berechnet eigenst\u00e4ndig die Verteilung mithilfe einer neuen deterministischen Zuweisungsfunktion.\n<\/li>\n<li>Die Knoten erstellen eine Nachricht mit den Ergebnissen des Deployments und senden sie an den Koordinator.\n<\/li>\n<li>Der Koordinator aggregiert alle Nachrichten und erstellt das Ergebnis des gesamten Deploymentprozesses, das \u00fcber discovery-spi an alle Knoten im Cluster gesendet wird.\n<\/li>\n<li>Beim Empfang des Ergebnisses wird der Deploymentprozess abgeschlossen, danach wird die Aufgabe aus der Warteschlange entfernt.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 Neulandung\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Neues eventgesteuertes Design: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Wenn beim Bereitstellen ein Fehler auftritt, wird dieser sofort in die Nachricht aufgenommen, die an den Koordinator gesendet wird. Nach der Aggregation der Nachrichten hat der Koordinator Informationen \u00fcber alle Fehler w\u00e4hrend des Deployments und sendet diese Nachricht \u00fcber discovery-spi. Informationen zu den Fehlern sind auf jedem Knoten im Cluster verf\u00fcgbar. <\/p>\n<p>Nach diesem Arbeitsalgorithmus werden alle wichtigen Ereignisse im Service Grid verarbeitet. Beispielsweise stellt der Wechsel der Topologie ebenfalls eine Nachricht \u00fcber discovery-spi dar. Insgesamt betrachtet ist das Protokoll im Vergleich zu fr\u00fcheren Versionen recht leichtgewichtig und zuverl\u00e4ssig geworden. So zuverl\u00e4ssig, dass es jede Situation w\u00e4hrend des Deployments bew\u00e4ltigen kann. <\/p>\n<h2>Was kommt als N\u00e4chstes<\/h2>\n<p>\nJetzt zu den Pl\u00e4nen. Jede gr\u00f6\u00dfere \u00c4nderung im Ignite-Projekt wird als Initiative zur Verbesserung von Ignite umgesetzt, der sogenannte IEP. Auch f\u00fcr das Redesign des Service Grids gibt es einen 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> mit dem humorvollen Titel \u201e\u00d6lwechsel im Service Grid\u201c. Tats\u00e4chlich haben wir jedoch nicht nur das \u00d6l im Motor gewechselt, sondern den Motor vollst\u00e4ndig. <\/p>\n<p>Die Aufgaben im IEP haben wir in 2 Phasen unterteilt. Die erste - eine gro\u00dfe Phase, die die \u00dcberarbeitung des Deployment-Protokolls umfasst. Diese ist bereits in den Master integriert, man kann das neue Service Grid ausprobieren, das in Version 2.8 erscheinen wird. Die zweite Phase umfasst viele andere Aufgaben:<\/p>\n<ul>\n<li>Hot Redeploy\n<\/li>\n<li>Versionierung der Dienste\n<\/li>\n<li>Erh\u00f6hung der Ausfallsicherheit\n<\/li>\n<li>D\u00fcnner Client\n<\/li>\n<li>\u00dcberwachungs- und Metriktools\n<\/li>\n<\/ul>\n<p>\nAbschlie\u00dfend empfehlen wir Ihnen das Service Grid zum Aufbau von ausfallsicheren Hochverf\u00fcgbarkeitssystemen. Au\u00dferdem laden wir Sie ein, sich uns anzuschlie\u00dfen bei <noindex><a rel=\"nofollow\" href=\"mailto:dev@ignite.apache.org\">dev-list<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"mailto:user@ignite.apache.org\">user-list<\/a><\/noindex> um Ihre Erfahrungen zu teilen. Ihre Erfahrungen sind f\u00fcr die Community wirklich wichtig und helfen dabei zu verstehen, in welche Richtung wir uns weiterentwickeln sollten und wie wir die Komponente in Zukunft verbessern k\u00f6nnen.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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 Neustart | ProHoster","description":"Am 26. Februar haben wir das Meetup Apache Ignite GreenSource veranstaltet, bei dem Mitwirkende des Open-Source-Projekts Apache Ignite referierten.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}