{"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\/pt\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 reinicializa\u00e7\u00e3o","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>No dia 26 de fevereiro, realizamos um meetup do Apache Ignite GreenSource, onde participaram contribuidores do projeto de c\u00f3digo aberto. <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>. Um evento importante na vida dessa comunidade foi a reestrutura\u00e7\u00e3o do componente <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, que permite implantar microsservi\u00e7os personalizados diretamente no cluster Ignite. Sobre esse processo desafiador, falou no meetup <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vyacheslav Daradur<\/a><\/noindex>, engenheiro de software e contribuinte do Apache Ignite h\u00e1 mais de dois anos.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicializa\u00e7\u00e3o\" 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 \/>\nVamos come\u00e7ar pelo que \u00e9 o Apache Ignite. \u00c9 um banco de dados que representa um armazenamento distribu\u00eddo de Key\/Value com suporte a SQL, transa\u00e7\u00f5es e caching. Al\u00e9m disso, o Ignite permite implantar servi\u00e7os personalizados diretamente no cluster Ignite. O desenvolvedor tem acesso a todas as ferramentas oferecidas pelo Ignite \u2014 estruturas de dados distribu\u00eddas, Messaging, Streaming, Compute e Data Grid. Por exemplo, ao utilizar o Data Grid, a necessidade de administrar uma infraestrutura separada para o armazenamento de dados desaparece, reduzindo, consequentemente, os custos associados.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicializa\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUsando a API Service Grid, \u00e9 poss\u00edvel implantar um servi\u00e7o ao simplesmente especificar no arquivo de configura\u00e7\u00e3o o esquema de implanta\u00e7\u00e3o e, consequentemente, o pr\u00f3prio servi\u00e7o.<\/p>\n<p>Normalmente, o esquema de implanta\u00e7\u00e3o \u00e9 a indica\u00e7\u00e3o da quantidade de inst\u00e2ncias que devem ser implantadas nos n\u00f3s do cluster. Existem dois esquemas de implanta\u00e7\u00e3o t\u00edpicos. O primeiro \u00e9 o Cluster Singleton: em qualquer momento, haver\u00e1 garantidamente uma inst\u00e2ncia do servi\u00e7o personalizado dispon\u00edvel no cluster. O segundo \u00e9 o Node Singleton: em cada n\u00f3 do cluster, h\u00e1 uma inst\u00e2ncia do servi\u00e7o implantada. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicializa\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO usu\u00e1rio tamb\u00e9m pode especificar a quantidade de inst\u00e2ncias do servi\u00e7o em todo o cluster e definir um predicado para filtrar os n\u00f3s adequados. Nesse cen\u00e1rio, o Service Grid calcular\u00e1 automaticamente a distribui\u00e7\u00e3o ideal para a implanta\u00e7\u00e3o dos servi\u00e7os.<\/p>\n<p>Al\u00e9m disso, existe um recurso chamado Affinity Service. Affinity \u00e9 uma fun\u00e7\u00e3o que define a rela\u00e7\u00e3o das chaves com parti\u00e7\u00f5es e a rela\u00e7\u00e3o das parti\u00e7\u00f5es com n\u00f3s na topologia. Com a chave, \u00e9 poss\u00edvel determinar o n\u00f3 prim\u00e1rio onde os dados s\u00e3o armazenados. Dessa forma, voc\u00ea pode associar seu pr\u00f3prio servi\u00e7o a uma chave e ao cache da fun\u00e7\u00e3o affinity. Caso a fun\u00e7\u00e3o affinity seja alterada, ocorrer\u00e1 um redeploy autom\u00e1tico. Assim, o servi\u00e7o estar\u00e1 sempre localizado pr\u00f3ximo dos dados que deve manipular, reduzindo, portanto, os custos de acesso \u00e0 informa\u00e7\u00e3o. Esse esquema pode ser chamado de c\u00e1lculos colaborativos de certa maneira.<\/p>\n<p>Agora que abordamos as vantagens do Service Grid, vamos falar sobre sua hist\u00f3ria de desenvolvimento.<\/p>\n<h2>O que havia antes<\/h2>\n<p>\nA implementa\u00e7\u00e3o anterior do Service Grid era baseada em um cache de sistema replicado transacional chamado Ignite. Sob a palavra \"cache\" em Ignite, entende-se um armazenamento. Ou seja, n\u00e3o \u00e9 algo tempor\u00e1rio, como se poderia pensar. Apesar de o cache ser replicado e cada n\u00f3 conter todo o conjunto de dados, internamente o cache tem uma representa\u00e7\u00e3o particionada. Isso est\u00e1 relacionado \u00e0 otimiza\u00e7\u00e3o dos armazenamentos. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicializa\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO que acontecia quando um usu\u00e1rio queria implantar um servi\u00e7o?<\/p>\n<ul>\n<li>Todos os n\u00f3s no cluster assinavam para atualiza\u00e7\u00f5es de dados no armazenamento usando o mecanismo embutido Continuous Query.\n<\/li>\n<li>O n\u00f3 iniciador, sob uma transa\u00e7\u00e3o read-committed, fazia uma grava\u00e7\u00e3o no banco que continha a configura\u00e7\u00e3o do servi\u00e7o, incluindo uma inst\u00e2ncia serializada.\n<\/li>\n<li>Ao receber uma notifica\u00e7\u00e3o sobre uma nova grava\u00e7\u00e3o, o coordenador calculava a distribui\u00e7\u00e3o com base na configura\u00e7\u00e3o. O objeto obtido era gravado de volta no banco.\n<\/li>\n<li>Se o n\u00f3 entrasse na distribui\u00e7\u00e3o, o coordenador deveria implant\u00e1-lo.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>O que n\u00e3o nos agradava<\/h2>\n<p>\nEm algum momento, chegamos \u00e0 conclus\u00e3o de que n\u00e3o era poss\u00edvel operar servi\u00e7os dessa maneira. Havia v\u00e1rias raz\u00f5es.<\/p>\n<p>Se durante o deployment ocorresse algum erro, s\u00f3 poder\u00edamos saber disso atrav\u00e9s dos logs do n\u00f3 onde tudo aconteceu. Existia apenas um deployment ass\u00edncrono, ent\u00e3o ap\u00f3s a devolu\u00e7\u00e3o do controle ao usu\u00e1rio pelo m\u00e9todo de deployment, seria necess\u00e1rio um tempo adicional para o servi\u00e7o iniciar \u2014 e nesse tempo o usu\u00e1rio n\u00e3o poderia gerenciar nada. Para continuar desenvolvendo o Service Grid, implementar novos recursos, atrair novos usu\u00e1rios e facilitar a vida de todos, era necess\u00e1rio mudar algo.<\/p>\n<p>Ao projetar a nova Service Grid, nossa prioridade foi garantir uma implanta\u00e7\u00e3o s\u00edncrona: assim que o usu\u00e1rio recupera o controle da API, ele pode imediatamente usar os servi\u00e7os. Tamb\u00e9m quer\u00edamos dar ao iniciador a capacidade de lidar com erros de implanta\u00e7\u00e3o.<\/p>\n<p>Al\u00e9m disso, quer\u00edamos facilitar a implementa\u00e7\u00e3o, especificamente afastar-nos de transa\u00e7\u00f5es e reequil\u00edbrio. Embora o cache seja replic\u00e1vel e n\u00e3o haja balanceamento, durante uma grande implanta\u00e7\u00e3o com m\u00faltiplos n\u00f3s surgiram problemas. Ao alterar a topologia, os n\u00f3s precisam trocar informa\u00e7\u00f5es e, em uma grande implanta\u00e7\u00e3o, esses dados podem pesar bastante.<\/p>\n<p>Quando a topologia estava inst\u00e1vel, o coordenador precisava recalcular a distribui\u00e7\u00e3o dos servi\u00e7os. E no geral, trabalhar com transa\u00e7\u00f5es em uma topologia inst\u00e1vel pode levar a erros dif\u00edceis de prever.<\/p>\n<h2>Problemas<\/h2>\n<p>\nQuais grandes mudan\u00e7as n\u00e3o v\u00eam acompanhadas de problemas? O primeiro deles foi a altera\u00e7\u00e3o da topologia. \u00c9 importante entender que a qualquer momento, mesmo durante a implanta\u00e7\u00e3o do servi\u00e7o, um n\u00f3 pode entrar ou sair do cluster. Al\u00e9m disso, se um n\u00f3 entrar no cluster durante a implanta\u00e7\u00e3o, ser\u00e1 necess\u00e1rio transmitir todas as informa\u00e7\u00f5es sobre os servi\u00e7os para o novo n\u00f3 de maneira consistente. E isso inclui n\u00e3o apenas o que j\u00e1 foi implementado, mas tamb\u00e9m implanta\u00e7\u00f5es atuais e futuras.<\/p>\n<p>Este \u00e9 apenas um dos problemas que podem ser reunidos em uma lista separada:<\/p>\n<ul>\n<li>Como implantar servi\u00e7os configurados estaticamente ao iniciar um n\u00f3?\n<\/li>\n<li>Sa\u00edda de um n\u00f3 do cluster \u2013 o que fazer se o n\u00f3 hospedava servi\u00e7os?\n<\/li>\n<li>O que fazer se o coordenador mudou?\n<\/li>\n<li>O que fazer se o cliente se reconectar ao cluster?\n<\/li>\n<li>\u00c9 necess\u00e1rio processar solicita\u00e7\u00f5es de ativa\u00e7\u00e3o\/desativa\u00e7\u00e3o e como?\n<\/li>\n<li>E se chamarmos a destrui\u00e7\u00e3o do cache, e tivermos servi\u00e7os de afinidade ligados a ele?\n<\/li>\n<\/ul>\n<p>\nE isso est\u00e1 longe de ser tudo. <\/p>\n<h2>Solu\u00e7\u00e3o<\/h2>\n<p>\nComo alvo, escolhemos a abordagem orientada a eventos com a implementa\u00e7\u00e3o da comunica\u00e7\u00e3o entre processos por meio de mensagens. No Ignite, j\u00e1 est\u00e3o implementados dois componentes que permitem que os n\u00f3s se enviem mensagens, sendo eles o communication-spi e o discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicializa\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO Communication-spi permite que os n\u00f3s se comuniquem diretamente e troquem mensagens. Ele \u00e9 ideal para transferir grandes volumes de dados. O Discovery-spi permite enviar uma mensagem para todos os n\u00f3s no cluster. Na implementa\u00e7\u00e3o padr\u00e3o, isso \u00e9 feito utilizando a topologia de \"anel\". Tamb\u00e9m h\u00e1 integra\u00e7\u00e3o com o Zookeeper, nesse caso, utiliza-se a topologia de \"estrela\". \u00c9 importante notar que o discovery-spi oferece garantias de que a mensagem ser\u00e1 entregue na ordem correta a todos os n\u00f3s. <\/p>\n<p>Vamos considerar o protocolo de deployment. Todas as solicita\u00e7\u00f5es de usu\u00e1rios para deployment e undeployment s\u00e3o enviadas pelo discovery-spi. Isso fornece as seguintes <i>garantias<\/i>:<\/p>\n<ul>\n<li>A solicita\u00e7\u00e3o ser\u00e1 recebida por todos os n\u00f3s do cluster. Isso permitir\u00e1 que o processamento da solicita\u00e7\u00e3o continue com a troca de coordenadores. Tamb\u00e9m significa que, para uma \u00fanica mensagem, cada n\u00f3 ter\u00e1 todos os metadados necess\u00e1rios, tais como a configura\u00e7\u00e3o do servi\u00e7o e sua inst\u00e2ncia serializada.\n<\/li>\n<li>A entrega estrita das mensagens permite resolver conflitos de configura\u00e7\u00f5es e solicita\u00e7\u00f5es concorrentes.\n<\/li>\n<li>Como a entrada de um n\u00f3 na topologia tamb\u00e9m \u00e9 processada via discovery-spi, o novo n\u00f3 receber\u00e1 todos os dados necess\u00e1rios para trabalhar com os servi\u00e7os.\n<\/li>\n<\/ul>\n<p>\nAo receber a solicita\u00e7\u00e3o, os n\u00f3s no cluster a validam e formam tarefas para processamento. Essas tarefas s\u00e3o colocadas em uma fila e depois processadas em outra thread por um trabalhador separado. Isso \u00e9 implementado dessa forma porque o deployment pode levar um tempo significativo e atrasar o caro fluxo de discovery \u00e9 inaceit\u00e1vel.<\/p>\n<p>Todas as solicita\u00e7\u00f5es na fila s\u00e3o processadas pelo gerenciador de deployment. Ele tem um trabalhador especial que retira a tarefa dessa fila e a inicializa para come\u00e7ar o deployment. Ap\u00f3s isso, as seguintes a\u00e7\u00f5es ocorrem:<\/p>\n<ol>\n<li>Cada n\u00f3 calcula autonomamente a distribui\u00e7\u00e3o usando uma nova fun\u00e7\u00e3o de assignment determin\u00edstica.\n<\/li>\n<li>Os n\u00f3s formam uma mensagem com os resultados do deployment e a enviam ao coordenador.\n<\/li>\n<li>O coordenador agrega todas as mensagens e forma o resultado de todo o processo de deployment, que \u00e9 enviado via discovery-spi para todos os n\u00f3s no cluster.\n<\/li>\n<li>Ao receber o resultado, o processo de deployment \u00e9 conclu\u00eddo, ap\u00f3s o qual a tarefa \u00e9 removida da fila.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicializa\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Novo design orientado a eventos: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Se ocorrer um erro durante a implanta\u00e7\u00e3o, o n\u00f3 imediatamente inclui esse erro na mensagem que envia ao coordenador. Ap\u00f3s a agrega\u00e7\u00e3o das mensagens, o coordenador ter\u00e1 informa\u00e7\u00f5es sobre todos os erros ocorridos durante a implanta\u00e7\u00e3o e enviar\u00e1 essa mensagem pelo discovery-spi. As informa\u00e7\u00f5es sobre os erros estar\u00e3o dispon\u00edveis em qualquer n\u00f3 do cluster. <\/p>\n<p>Esse algoritmo de trabalho processa todos os eventos importantes na Service Grid. Por exemplo, uma mudan\u00e7a de topologia tamb\u00e9m \u00e9 uma mensagem pelo discovery-spi. E, em geral, se compararmos com o que havia antes, o protocolo se tornou bastante leve e confi\u00e1vel. O suficiente para lidar com qualquer situa\u00e7\u00e3o durante a implanta\u00e7\u00e3o. <\/p>\n<h2>O que vem a seguir<\/h2>\n<p>\nAgora sobre os planos. Qualquer grande melhoria no projeto Ignite \u00e9 realizada como uma iniciativa para aprimorar o Ignite, o chamado IEP. O redesign da Service Grid tamb\u00e9m possui um IEP \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/IEP-17%3A+Oil+Change+in+Service+Grid\">IEP n\u00ba 17<\/a><\/noindex> com o t\u00edtulo irreverente \"Troca de \u00f3leo na Service Grid\". Mas, na verdade, n\u00f3s n\u00e3o trocamos o \u00f3leo do motor, mas o motor inteiro. <\/p>\n<p>Dividimos as tarefas do IEP em 2 fases. A primeira \u2014 uma fase importante, que consiste na reformula\u00e7\u00e3o do protocolo de implanta\u00e7\u00e3o. Ela j\u00e1 foi integrada ao master, e voc\u00ea pode experimentar a nova Service Grid que aparecer\u00e1 na vers\u00e3o 2.8. A segunda fase inclui muitas outras tarefas:<\/p>\n<ul>\n<li>Redeploy quente\n<\/li>\n<li>Versionamento de servi\u00e7os\n<\/li>\n<li>Aumento da resist\u00eancia a falhas\n<\/li>\n<li>Cliente leve\n<\/li>\n<li>Ferramentas de monitoramento e contagem de v\u00e1rias m\u00e9tricas\n<\/li>\n<\/ul>\n<p>\nPor \u00faltimo, podemos recomendar a Service Grid para a constru\u00e7\u00e3o de sistemas de alta disponibilidade e toler\u00e2ncia a falhas. E tamb\u00e9m o convidamos a participar do <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> compartilhando sua experi\u00eancia. Sua experi\u00eancia \u00e9 realmente importante para a comunidade, ajudando a entender o caminho a seguir e como desenvolver o componente no futuro.<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.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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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 reinicializa\u00e7\u00e3o | ProHoster","description":"No dia 26 de fevereiro, realizamos o meetup Apache Ignite GreenSource, onde apresentaram colaboradores do projeto open source Apache Ignite.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}