{"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\/fr\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 un nouveau d\u00e9part","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Le 26 f\u00e9vrier, nous avons organis\u00e9 une rencontre sur Apache Ignite GreenSource, avec la participation de contributeurs du projet open source. <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. Un \u00e9v\u00e9nement marquant dans la vie de cette communaut\u00e9 a \u00e9t\u00e9 la restructuration du composant <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, qui permet de d\u00e9ployer des microservices personnalis\u00e9s directement dans le cluster Ignite. Ce processus complexe a \u00e9t\u00e9 expliqu\u00e9 lors de la rencontre par <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vyacheslav Daradur<\/a><\/noindex>, ing\u00e9nieur logiciel et contributeur d'Apache Ignite depuis plus de deux ans.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 un nouveau d\u00e9part\" 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 \/>\nCommen\u00e7ons par d\u00e9finir ce qu'est r\u00e9ellement Apache Ignite. C'est une base de donn\u00e9es qui constitue un stockage distribu\u00e9 Key\/Value avec prise en charge de SQL, de la transactionnalit\u00e9 et de la mise en cache. De plus, Ignite permet de d\u00e9ployer des services personnalis\u00e9s directement dans le cluster Ignite. Les d\u00e9veloppeurs ont acc\u00e8s \u00e0 tous les outils offerts par Ignite : structures de donn\u00e9es r\u00e9parties, Messaging, Streaming, Compute et Data Grid. Par exemple, en utilisant Data Grid, on \u00e9vite les probl\u00e8mes d'administration d'une infrastructure s\u00e9par\u00e9e pour le stockage de donn\u00e9es, et par cons\u00e9quent, les frais g\u00e9n\u00e9raux qui en d\u00e9coulent.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 un nouveau d\u00e9part\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn utilisant l'API Service Grid, il est possible de d\u00e9ployer un service en sp\u00e9cifiant simplement, dans la configuration, le sch\u00e9ma de d\u00e9ploiement et, en cons\u00e9quence, le service lui-m\u00eame.<\/p>\n<p>En g\u00e9n\u00e9ral, le sch\u00e9ma de d\u00e9ploiement indique le nombre d'instances qui doivent \u00eatre d\u00e9ploy\u00e9es sur les n\u0153uds du cluster. Il existe deux sch\u00e9mas de d\u00e9ploiement typiques. Le premier est le Cluster Singleton : \u00e0 tout moment, un seul exemplaire du service personnalis\u00e9 sera garanti dans le cluster. Le second est le Node Singleton : une instance du service est d\u00e9ploy\u00e9e sur chaque n\u0153ud du cluster. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 un nouveau d\u00e9part\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'utilisateur peut \u00e9galement sp\u00e9cifier le nombre d'instances du service dans tout le cluster et d\u00e9finir un pr\u00e9dicat pour filtrer les n\u0153uds appropri\u00e9s. Dans ce sc\u00e9nario, Service Grid calculera lui-m\u00eame la r\u00e9partition optimale pour le d\u00e9ploiement des services.<\/p>\n<p>De plus, il existe une fonctionnalit\u00e9 appel\u00e9e Affinity Service. L'Affinity est une fonction qui d\u00e9finit la relation entre les cl\u00e9s et les partitions, ainsi que la relation entre les partitions et les n\u0153uds dans la topologie. Par la cl\u00e9, il est possible de d\u00e9terminer le n\u0153ud principal sur lequel les donn\u00e9es sont stock\u00e9es. Ainsi, vous pouvez associer votre propre service \u00e0 une cl\u00e9 et au cache de la fonction d'affinit\u00e9. En cas de modification de la fonction d'affinit\u00e9, un red\u00e9ploiement automatique aura lieu. Ainsi, le service sera toujours situ\u00e9 \u00e0 proximit\u00e9 des donn\u00e9es auxquelles il doit acc\u00e9der, r\u00e9duisant ainsi les frais d'acc\u00e8s \u00e0 l'information. Ce sch\u00e9ma peut \u00eatre consid\u00e9r\u00e9 comme une sorte de calcul collocatif.<\/p>\n<p>Maintenant que nous avons explor\u00e9 les avantages de Service Grid, parlons de son histoire de d\u00e9veloppement.<\/p>\n<h2>Ce qui \u00e9tait avant<\/h2>\n<p>\nLa version pr\u00e9c\u00e9dente de Service Grid \u00e9tait bas\u00e9e sur un cache syst\u00e8me r\u00e9pliqu\u00e9 transactionnel Ignite. Dans Ignite, par le terme \u00ab cache \u00bb, on entend un stockage. Ce n'est donc pas quelque chose de temporaire, comme on pourrait le penser. Bien que le cache soit r\u00e9pliqu\u00e9 et que chaque n\u0153ud contienne l'ensemble des donn\u00e9es, \u00e0 l'int\u00e9rieur, le cache pr\u00e9sente une vision partitionn\u00e9e. Cela est li\u00e9 \u00e0 l'optimisation des stockages. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 un nouveau d\u00e9part\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQue se passait-il lorsque l'utilisateur voulait d\u00e9ployer un service ?<\/p>\n<ul>\n<li>Tous les n\u0153uds dans le cluster s'inscrivaient aux mises \u00e0 jour des donn\u00e9es dans le stockage via le m\u00e9canisme int\u00e9gr\u00e9 de Query Continue.\n<\/li>\n<li>Le n\u0153ud initiateur effectuait une \u00e9criture dans la base de donn\u00e9es sous une transaction read-committed, qui contenait la configuration du service, y compris une instance s\u00e9rialis\u00e9e.\n<\/li>\n<li>Lors de la r\u00e9ception d'une notification concernant un nouvel enregistrement, le coordinateur calculait la distribution bas\u00e9e sur la configuration. L'objet obtenu \u00e9tait r\u00e9\u00e9crit dans la base.\n<\/li>\n<li>Si un n\u0153ud faisait partie de la distribution, le coordinateur devait le d\u00e9ployer.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ce qui ne nous convenait pas<\/h2>\n<p>\n\u00c0 un moment donn\u00e9, nous avons conclu qu'il n'\u00e9tait pas possible de travailler ainsi avec les services. Plusieurs raisons ont conduit \u00e0 cette conclusion.<\/p>\n<p>Si une erreur se produisait lors du d\u00e9ploiement, on ne pouvait l'apprendre que par les journaux du n\u0153ud o\u00f9 cela s'est produit. Il n'y avait qu'un d\u00e9ploiement asynchrone, donc apr\u00e8s avoir redonn\u00e9 le contr\u00f4le \u00e0 l'utilisateur \u00e0 partir de la m\u00e9thode de d\u00e9ploiement, il fallait un certain temps suppl\u00e9mentaire pour d\u00e9marrer le service \u2014 et pendant ce temps, l'utilisateur ne pouvait rien g\u00e9rer. Pour continuer \u00e0 d\u00e9velopper Service Grid, ajouter de nouvelles fonctionnalit\u00e9s, attirer de nouveaux utilisateurs et faciliter la vie de tous, il fallait changer quelque chose.<\/p>\n<p>Lors de la conception de la nouvelle Service Grid, notre premi\u00e8re priorit\u00e9 \u00e9tait de garantir un d\u00e9ploiement synchrone : d\u00e8s que l'utilisateur a r\u00e9cup\u00e9r\u00e9 le contr\u00f4le de l'API, il peut imm\u00e9diatement utiliser les services. Nous souhaitions \u00e9galement donner \u00e0 l'initiateur la possibilit\u00e9 de g\u00e9rer les erreurs de d\u00e9ploiement.<\/p>\n<p>De plus, nous voulions faciliter la mise en \u0153uvre, notamment en \u00e9liminant les transactions et le r\u00e9\u00e9quilibrage. Bien que le cache soit r\u00e9pliqu\u00e9 et qu'il n'y ait pas de r\u00e9\u00e9quilibrage, des probl\u00e8mes surviennent lors de d\u00e9ploiements massifs avec de nombreux n\u0153uds. Lorsqu'il y a des changements de topologie, les n\u0153uds doivent \u00e9changer des informations, et pendant un grand d\u00e9ploiement, ces donn\u00e9es peuvent prendre beaucoup de place.<\/p>\n<p>Lorsque la topologie \u00e9tait instable, le coordonnateur devait recalculer la r\u00e9partition des services. En g\u00e9n\u00e9ral, lorsque l'on doit travailler avec des transactions sur une topologie instable, cela peut entra\u00eener des erreurs difficiles \u00e0 pr\u00e9voir.<\/p>\n<h2>Probl\u00e8mes<\/h2>\n<p>\nQuelles globales transformations sans probl\u00e8mes associ\u00e9s ? Le premier d'entre eux \u00e9tait le changement de topologie. Il faut comprendre qu\u2019\u00e0 tout moment, m\u00eame lors du d\u00e9ploiement d\u2019un service, un n\u0153ud peut entrer ou sortir du cluster. De plus, si un n\u0153ud entre dans le cluster pendant le d\u00e9ploiement, il faudra transmettre de mani\u00e8re coh\u00e9rente toutes les informations concernant les services au nouveau n\u0153ud. Et il ne s'agit pas seulement de ce qui a d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9ploy\u00e9, mais aussi des d\u00e9ploiements actuels et futurs.<\/p>\n<p>C'est juste un des probl\u00e8mes que l'on peut rassembler dans une liste s\u00e9par\u00e9e :<\/p>\n<ul>\n<li>Comment d\u00e9ployer des services statiquement configur\u00e9s lors du d\u00e9marrage du n\u0153ud ?\n<\/li>\n<li>Sortie d'un n\u0153ud du cluster \u2013 que faire si le n\u0153ud h\u00e9bergeait des services ?\n<\/li>\n<li>Que faire si le coordonnateur a chang\u00e9 ?\n<\/li>\n<li>Que faire si le client se reconnecte au cluster ?\n<\/li>\n<li>Faut-il traiter les demandes d'activation\/d\u00e9sactivation et comment ?\n<\/li>\n<li>Et que faire si une destruction du cache a \u00e9t\u00e9 appel\u00e9e alors que nous avons des services avec affinit\u00e9 li\u00e9s \u00e0 lui ?\n<\/li>\n<\/ul>\n<p>\nEt ce n'est pas tout. <\/p>\n<h2>Solution<\/h2>\n<p>\nNous avons choisi d'adopter une approche Event Driven, avec la mise en \u0153uvre de la communication des processus via des messages. Ignite dispose d\u00e9j\u00e0 de deux composants qui permettent aux n\u0153uds d'\u00e9changer des messages entre eux : communication-spi et discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 un nouveau d\u00e9part\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommunication-spi permet aux n\u0153uds de communiquer directement et d'envoyer des messages. Il convient bien pour le transfert de grandes quantit\u00e9s de donn\u00e9es. Discovery-spi permet d'envoyer un message \u00e0 tous les n\u0153uds du cluster. Dans l'impl\u00e9mentation standard, cela se fait selon la topologie \"anneau\". Il existe \u00e9galement une int\u00e9gration avec Zookeeper, auquel cas la topologie utilis\u00e9e est \"\u00e9toile\". Il est \u00e9galement important de noter que discovery-spi garantit que le message sera pr\u00e9cis\u00e9ment livr\u00e9 dans le bon ordre \u00e0 tous les n\u0153uds. <\/p>\n<p>Consid\u00e9rons le protocole de d\u00e9ploiement. Toutes les demandes d'utilisateur pour d\u00e9ployer et d\u00e9saffecter sont envoy\u00e9es via discovery-spi. Cela offre les <i>garanties<\/i>:<\/p>\n<ul>\n<li>La demande sera re\u00e7ue par tous les n\u0153uds du cluster. Cela permettra de continuer \u00e0 traiter la demande en cas de changement de coordinateur. Cela signifie \u00e9galement qu'avec un seul message, chaque n\u0153ud recevra toutes les m\u00e9tadonn\u00e9es n\u00e9cessaires, telles que la configuration du service et son instance s\u00e9rialis\u00e9e.\n<\/li>\n<li>L'ordre strict de livraison des messages permet de r\u00e9soudre les conflits de configuration et les demandes concurrentes.\n<\/li>\n<li>Puisque l'entr\u00e9e d'un n\u0153ud dans la topologie est \u00e9galement trait\u00e9e par discovery-spi, le nouveau n\u0153ud recevra toutes les donn\u00e9es n\u00e9cessaires pour travailler avec les services.\n<\/li>\n<\/ul>\n<p>\nLors de la r\u00e9ception d'une demande, les n\u0153uds du cluster la valident et forment des t\u00e2ches \u00e0 traiter. Ces t\u00e2ches sont empil\u00e9es dans une queue et ensuite trait\u00e9es dans un autre thread par un worker s\u00e9par\u00e9. Cela est r\u00e9alis\u00e9 ainsi car le d\u00e9ploiement peut prendre un temps consid\u00e9rable et retarder la pr\u00e9cieuse flux de discovery est inacceptable.<\/p>\n<p>Toutes les demandes de la queue sont trait\u00e9es par le gestionnaire de d\u00e9ploiement. Il poss\u00e8de un worker sp\u00e9cial qui extrait une t\u00e2che de cette queue et l'initialise pour commencer le d\u00e9ploiement. Apr\u00e8s cela, les actions suivantes se produisent :<\/p>\n<ol>\n<li>Chaque n\u0153ud calcule de mani\u00e8re autonome la distribution gr\u00e2ce \u00e0 une nouvelle fonction d\u2019assignation d\u00e9terministe.\n<\/li>\n<li>Les n\u0153uds forment un message avec les r\u00e9sultats du d\u00e9ploiement et l'envoient au coordinateur.\n<\/li>\n<li>Le coordinateur agr\u00e8ge tous les messages et forme le r\u00e9sultat de l'ensemble du processus de d\u00e9ploiement, qui est envoy\u00e9 via discovery-spi \u00e0 tous les n\u0153uds du cluster.\n<\/li>\n<li>Lors de la r\u00e9ception du r\u00e9sultat, le processus de d\u00e9ploiement se termine, apr\u00e8s quoi la t\u00e2che est supprim\u00e9e de la queue.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 un nouveau d\u00e9part\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nouveau design bas\u00e9 sur les \u00e9v\u00e9nements : org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Si une erreur se produit lors du d\u00e9ploiement, le n\u0153ud inclut imm\u00e9diatement cette erreur dans le message qu'il envoie au coordinateur. Apr\u00e8s l'agr\u00e9gation des messages, le coordinateur disposera d'informations sur toutes les erreurs survenues pendant le d\u00e9ploiement et transmettra ce message via discovery-spi. Les informations sur les erreurs seront accessibles depuis n'importe quel n\u0153ud du cluster. <\/p>\n<p>Tous les \u00e9v\u00e9nements importants dans le Service Grid sont trait\u00e9s selon cet algorithme de fonctionnement. Par exemple, un changement de topologie est \u00e9galement un message via discovery-spi. En g\u00e9n\u00e9ral, si l'on compare \u00e0 ce qu'il y avait auparavant, le protocole s'est r\u00e9v\u00e9l\u00e9 assez l\u00e9ger et fiable. Suffisamment pour traiter n'importe quelle situation pendant le d\u00e9ploiement. <\/p>\n<h2>Que va-t-il se passer ensuite<\/h2>\n<p>\nParlons maintenant des projets. Toute am\u00e9lioration majeure dans le projet Ignite est r\u00e9alis\u00e9e sous la forme d'une initiative d'am\u00e9lioration d'Ignite, appel\u00e9e IEP. Le redesign du Service Grid a \u00e9galement un IEP - <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/IEP-17%3A+Oil+Change+in+Service+Grid\">IEP n\u00b017<\/a><\/noindex> avec un nom humoristique \u00ab Changement d'huile dans le Service Grid \u00bb. Mais en fait, nous n'avons pas chang\u00e9 l'huile dans le moteur, mais le moteur entier. <\/p>\n<p>Nous avons divis\u00e9 les t\u00e2ches dans l'IEP en 2 phases. La premi\u00e8re est une grande phase qui consiste \u00e0 retravailler le protocole de d\u00e9ploiement. Elle est d\u00e9j\u00e0 int\u00e9gr\u00e9e dans la branche principale, vous pouvez essayer le nouveau Service Grid qui appara\u00eetra dans la version 2.8. La deuxi\u00e8me phase comprend de nombreuses autres t\u00e2ches :<\/p>\n<ul>\n<li>Red\u00e9ploiement \u00e0 chaud\n<\/li>\n<li>Versionnage des services\n<\/li>\n<li>Augmentation de la r\u00e9silience\n<\/li>\n<li>Client l\u00e9ger\n<\/li>\n<li>Outils de surveillance et de comptage de diverses m\u00e9triques\n<\/li>\n<\/ul>\n<p>\nEnfin, nous vous recommandons Service Grid pour la construction de syst\u00e8mes hautement disponibles et tol\u00e9rants aux pannes. Nous vous invitons \u00e9galement \u00e0 nous rejoindre sur <noindex><a rel=\"nofollow\" href=\"mailto:dev@ignite.apache.org\">dev-list<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"mailto:user@ignite.apache.org\">user-list<\/a><\/noindex> pour partager votre exp\u00e9rience. Votre exp\u00e9rience est vraiment importante pour la communaut\u00e9, elle aidera \u00e0 comprendre quelle direction prendre et comment d\u00e9velopper le composant \u00e0 l'avenir.<br \/>\n<br \/>Source : <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.2 - 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\/fr\/blog\/administrirovanie\/ignite-service-grid-perezagruzka\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47 Ignite Service Grid - red\u00e9marrage | ProHoster","description":"Le 26 f\u00e9vrier, nous avons organis\u00e9 un meetup Apache Ignite GreenSource, o\u00f9 ont intervenu des contributeurs du projet open source Apache Ignite.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}