{"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\/es\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","title":{"rendered":"Ignite Service Grid \u2014 reinicio","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>El 26 de febrero celebramos un meetup de Apache Ignite GreenSource, donde presentaron contribuyentes del proyecto de c\u00f3digo abierto. <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Apache Ignite<\/a><\/noindex>Un evento importante en la vida de esta comunidad fue la reestructuraci\u00f3n del componente <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/features\/servicegrid.html\">Ignite Service Grid<\/a><\/noindex>, que permite desplegar microservicios personalizados directamente en el cl\u00faster Ignite. Sobre este complejo proceso habl\u00f3 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/daradurvs\/\">Vyacheslav Daradur<\/a><\/noindex>, ingeniero de software y contribuyente de Apache Ignite desde hace m\u00e1s de dos a\u00f1os.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicio\" 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 \/>\nComencemos explicando qu\u00e9 es Apache Ignite. Es una base de datos que act\u00faa como un almac\u00e9n distribuido de clave\/valor con soporte para SQL, transacciones y cach\u00e9. Adem\u00e1s, Ignite permite desplegar servicios personalizados directamente en el cl\u00faster Ignite. El desarrollador tiene acceso a todas las herramientas que ofrece Ignite: estructuras de datos distribuidas, mensajer\u00eda, streaming, computaci\u00f3n y Data Grid. Por ejemplo, al usar Data Grid se elimina el problema de administrar una infraestructura separada para el almacenamiento de datos, as\u00ed como los costos indirectos resultantes.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicio\" src=\"\/wp-content\/uploads\/2019\/04\/e3259ea6113d1c6549da556ec365b394.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUtilizando la API de Service Grid, se puede desplegar un servicio simplemente especificando en la configuraci\u00f3n el esquema de despliegue y, por supuesto, el propio servicio.<\/p>\n<p>Generalmente, el esquema de despliegue significa indicar la cantidad de instancias que deben desplegarse en los nodos del cl\u00faster. Existen dos esquemas de despliegue t\u00edpicos. El primero es Cluster Singleton: en cualquier momento en el cl\u00faster habr\u00e1 garantizado un \u00fanico ejemplar del servicio personalizado. El segundo es Node Singleton: en cada nodo del cl\u00faster se despliega un ejemplar del servicio. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicio\" src=\"\/wp-content\/uploads\/2019\/04\/645b2c11a95d4ad578e3c14d44894e30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl usuario tambi\u00e9n puede especificar la cantidad de instancias del servicio en todo el cl\u00faster y definir un predicado para filtrar nodos adecuados. En este escenario, Service Grid calcular\u00e1 autom\u00e1ticamente la distribuci\u00f3n \u00f3ptima para el despliegue de servicios.<\/p>\n<p>Adem\u00e1s, existe una funci\u00f3n llamada Affinity Service. Affinity es una caracter\u00edstica que determina la relaci\u00f3n entre las claves y las particiones, as\u00ed como la relaci\u00f3n entre los grupos y los nodos en la topolog\u00eda. A trav\u00e9s de la clave se puede identificar el nodo primario donde se almacenan los datos. De esta manera, puedes asociar tu propio servicio con una clave y la cach\u00e9 de la funci\u00f3n affinity. En caso de que cambie la funci\u00f3n affinity, se realizar\u00eda un redeployment autom\u00e1tico. As\u00ed, el servicio siempre estar\u00e1 ubicado cerca de los datos que necesita manipular, reduciendo as\u00ed los costos de acceso a la informaci\u00f3n. Este esquema puede considerarse como una especie de computaci\u00f3n colocalizada.<\/p>\n<p>Ahora que hemos explorado las ventajas de Service Grid, hablemos de su historia de desarrollo.<\/p>\n<h2>Lo que hab\u00eda antes<\/h2>\n<p>\nLa implementaci\u00f3n anterior de Service Grid se basaba en un cach\u00e9 de sistema replicado transaccional Ignite. Por \"cach\u00e9\" en Ignite se entiende un almacenamiento. Es decir, no es algo temporal, como se podr\u00eda pensar. A pesar de que el cach\u00e9 es replicado y cada nodo contiene todo el conjunto de datos, dentro del cach\u00e9 existe una representaci\u00f3n particionada. Esto est\u00e1 relacionado con la optimizaci\u00f3n de los almacenes. <\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicio\" src=\"\/wp-content\/uploads\/2019\/04\/ce452b6f16aa7b3207648eed45fa6576.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00bfQu\u00e9 suced\u00eda cuando un usuario quer\u00eda desplegar un servicio?<\/p>\n<ul>\n<li>Todos los nodos del cl\u00faster se suscrib\u00edan a la actualizaci\u00f3n de datos en el almacenamiento mediante el mecanismo incorporado Continuous Query.\n<\/li>\n<li>El nodo iniciador, bajo una transacci\u00f3n read-committed, realizaba una escritura en la base de datos que conten\u00eda la configuraci\u00f3n del servicio, incluyendo la instancia serializada.\n<\/li>\n<li>Al recibir la notificaci\u00f3n de una nueva entrada, el coordinador calculaba la distribuci\u00f3n a partir de la configuraci\u00f3n. El objeto obtenido se escrib\u00eda de nuevo en la base de datos.\n<\/li>\n<li>Si un nodo entraba en la distribuci\u00f3n, el coordinador deb\u00eda desplegarlo.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Lo que no nos satisfac\u00eda<\/h2>\n<p>\nEn alg\u00fan momento, llegamos a la conclusi\u00f3n de que no se pod\u00eda trabajar as\u00ed con los servicios. Las razones eran varias.<\/p>\n<p>Si durante el despliegue ocurr\u00eda alg\u00fan error, solo se pod\u00eda conocer a trav\u00e9s de los registros del nodo donde ocurri\u00f3 todo. Exist\u00eda solo un despliegue as\u00edncrono, as\u00ed que despu\u00e9s de devolver el control al usuario desde el m\u00e9todo de despliegue, era necesario un tiempo adicional para iniciar el servicio, y durante ese tiempo, el usuario no pod\u00eda administrar nada. Para avanzar en Service Grid, desarrollar nuevas funciones, atraer nuevos usuarios y facilitar la vida a todos, era necesario realizar cambios.<\/p>\n<p>Al dise\u00f1ar la nueva Service Grid, quer\u00edamos ofrecer primero la garant\u00eda de un despliegue s\u00edncrono: tan pronto como el usuario recupera el control de la API, puede comenzar a utilizar los servicios de inmediato. Tambi\u00e9n dese\u00e1bamos brindar al iniciador la posibilidad de manejar los errores de despliegue.<\/p>\n<p>Adem\u00e1s, quer\u00edamos facilitar la implementaci\u00f3n, espec\u00edficamente alejarnos de las transacciones y el reequilibrio. A pesar de que la cach\u00e9 es replicable y no hay balanceo, durante un gran despliegue con m\u00faltiples nodos surgieron problemas. Al cambiar la topolog\u00eda, los nodos deben intercambiar informaci\u00f3n, y durante un gran despliegue, estos datos pueden ser muy pesados.<\/p>\n<p>Cuando la topolog\u00eda era inestable, el coordinador necesitaba recalcular la distribuci\u00f3n de los servicios. Y en general, cuando se trabaja con transacciones en una topolog\u00eda inestable, esto puede llevar a errores dif\u00edciles de predecir.<\/p>\n<h2>Problemas<\/h2>\n<p>\n\u00bfQu\u00e9 cambios globales vienen sin problemas asociados? El primero de ellos fue el cambio de topolog\u00eda. Hay que entender que en cualquier momento, incluso durante el despliegue de un servicio, un nodo puede unirse o salir del cl\u00faster. Adem\u00e1s, si un nodo entra en el cl\u00faster durante el despliegue, se necesita transmitir de manera consistente toda la informaci\u00f3n sobre los servicios al nuevo nodo. Y esto no solo se refiere a lo que ya ha sido desplegado, sino tambi\u00e9n a los despliegues actuales y futuros.<\/p>\n<p>Este es solo uno de los problemas que se pueden recopilar en una lista separada:<\/p>\n<ul>\n<li>\u00bfC\u00f3mo desplegar servicios configurados est\u00e1ticamente al iniciar un nodo?\n<\/li>\n<li>Salida de un nodo del cl\u00faster: \u00bfqu\u00e9 hacer si el nodo aloj\u00f3 servicios?\n<\/li>\n<li>\u00bfQu\u00e9 hacer si el coordinador cambia?\n<\/li>\n<li>\u00bfQu\u00e9 hacer si el cliente se reconecta al cl\u00faster?\n<\/li>\n<li>\u00bfEs necesario manejar las solicitudes de activaci\u00f3n \/ desactivaci\u00f3n y c\u00f3mo?\n<\/li>\n<li>\u00bfY si se invoca la destrucci\u00f3n de la cach\u00e9 y tenemos servicios de afinidad vinculados a ella?\n<\/li>\n<\/ul>\n<p>\nY esto no es todo. <\/p>\n<h2>Soluci\u00f3n<\/h2>\n<p>\nComo objetivo, elegimos un enfoque basado en eventos con una implementaci\u00f3n de comunicaci\u00f3n entre procesos a trav\u00e9s de mensajes. En Ignite ya se han implementado dos componentes que permiten a los nodos enviar mensajes entre s\u00ed: communication-spi y discovery-spi.<\/p>\n<p><img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicio\" src=\"\/wp-content\/uploads\/2019\/04\/b95a4951ae4e04a67581a44921e88bcc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCommunication-spi permite que los nodos se comuniquen directamente y env\u00eden mensajes. Es adecuado para el env\u00edo de grandes vol\u00famenes de datos. Discovery-spi permite enviar un mensaje a todos los nodos en el cl\u00faster. En la implementaci\u00f3n est\u00e1ndar, esto se realiza mediante la topolog\u00eda \"anillo\". Tambi\u00e9n hay integraci\u00f3n con Zookeeper, en este caso se utiliza la topolog\u00eda \"estrella\". Adem\u00e1s, es importante se\u00f1alar que discovery-spi proporciona garant\u00edas de que el mensaje se entregar\u00e1 en el orden correcto a todos los nodos. <\/p>\n<p>Analicemos el protocolo de despliegue. Todas las solicitudes de los usuarios para desplegar y desimplantar se env\u00edan a trav\u00e9s de discovery-spi. Esto proporciona las siguientes <i>garant\u00edas<\/i>:<\/p>\n<ul>\n<li>La solicitud ser\u00e1 recibida por todos los nodos en el cl\u00faster. Esto permitir\u00e1 continuar el procesamiento de la solicitud al cambiar de coordinador. Tambi\u00e9n significa que cada nodo tendr\u00e1 todos los metadatos necesarios para un mensaje, como la configuraci\u00f3n del servicio y su instancia serializada.\n<\/li>\n<li>Un estricto orden de entrega de mensajes permite resolver conflictos de configuraciones y solicitudes en competencia.\n<\/li>\n<li>Dado que la entrada de un nodo en la topolog\u00eda tambi\u00e9n se maneja a trav\u00e9s de discovery-spi, el nuevo nodo recibir\u00e1 todos los datos necesarios para trabajar con los servicios.\n<\/li>\n<\/ul>\n<p>\nAl recibir una solicitud, los nodos en el cl\u00faster la validan y crean tareas para procesarla. Estas tareas se colocan en una cola y luego se procesan en otro hilo por un trabajador separado. Esto se implementa de esta manera porque el despliegue puede llevar un tiempo considerable y retardar el valioso flujo de discovery es inaceptable.<\/p>\n<p>Todas las solicitudes de la cola son procesadas por el gestor de despliegue. Tiene un trabajador especial que extrae una tarea de esta cola e inicia su proceso para comenzar el despliegue. Despu\u00e9s de esto, se realizan las siguientes acciones:<\/p>\n<ol>\n<li>Cada nodo calcula de forma independiente la distribuci\u00f3n gracias a una nueva funci\u00f3n de asignaci\u00f3n determinista.\n<\/li>\n<li>Los nodos forman un mensaje con los resultados del despliegue y lo env\u00edan al coordinador.\n<\/li>\n<li>El coordinador agrega todos los mensajes y forma el resultado de todo el proceso de despliegue, que se env\u00eda a trav\u00e9s de discovery-spi a todos los nodos en el cl\u00faster.\n<\/li>\n<li>Al recibir el resultado, el proceso de despliegue finaliza, despu\u00e9s de lo cual la tarea se elimina de la cola.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Ignite Service Grid \u2014 reinicio\" src=\"\/wp-content\/uploads\/2019\/04\/5f16bfae25e00c2e125be8fedb7cccb7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nuevo dise\u00f1o impulsado por eventos: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java<\/i><\/p>\n<p>Si ocurre un error en el momento de la implementaci\u00f3n, el nodo incluye inmediatamente este error en el mensaje que env\u00eda al coordinador. Despu\u00e9s de agregar los mensajes, el coordinador tendr\u00e1 informaci\u00f3n sobre todos los errores durante el despliegue y enviar\u00e1 ese mensaje a trav\u00e9s de discovery-spi. La informaci\u00f3n sobre los errores estar\u00e1 disponible en cualquier nodo del cl\u00faster. <\/p>\n<p>Todos los eventos importantes en el Service Grid se procesan seg\u00fan este algoritmo de trabajo. Por ejemplo, un cambio de topolog\u00eda tambi\u00e9n es un mensaje a trav\u00e9s de discovery-spi. En general, compar\u00e1ndolo con lo que hab\u00eda antes, el protocolo result\u00f3 ser bastante ligero y confiable. Suficientemente para manejar cualquier situaci\u00f3n durante el despliegue. <\/p>\n<h2>\u00bfQu\u00e9 viene despu\u00e9s?<\/h2>\n<p>\nAhora sobre los planes. Cualquier mejora importante en el proyecto Ignite se lleva a cabo como una iniciativa para mejorar Ignite, denominado IEP. El redise\u00f1o del Service Grid tambi\u00e9n tiene su propio 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> con el t\u00edtulo humor\u00edstico \u00abCambio de aceite en el Service Grid\u00bb. Pero de hecho, no cambiamos el aceite en el motor, sino el motor completo. <\/p>\n<p>Dividimos las tareas del IEP en 2 fases. La primera - una fase importante que consiste en rehacer el protocolo de despliegue. Ya se ha integrado en la rama principal, se puede probar el nuevo Service Grid, que aparecer\u00e1 en la versi\u00f3n 2.8. La segunda fase incluye muchas otras tareas:<\/p>\n<ul>\n<li>Redespliegue en caliente\n<\/li>\n<li>Versionado de servicios\n<\/li>\n<li>Aumento de la tolerancia a fallos\n<\/li>\n<li>Cliente ligero\n<\/li>\n<li>Herramientas de monitoreo y conteo de diversas m\u00e9tricas\n<\/li>\n<\/ul>\n<p>\nPor \u00faltimo, podemos recomendarle Service Grid para construir sistemas tolerantes a fallos de alta disponibilidad. Tambi\u00e9n lo invitamos a nuestro <noindex><a rel=\"nofollow\" href=\"mailto:dev@ignite.apache.org\">dev-list<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"mailto:user@ignite.apache.org\">user-list<\/a><\/noindex> para compartir su experiencia. Su experiencia es realmente importante para la comunidad, ayudar\u00e1 a entender hacia d\u00f3nde avanzar en el futuro y c\u00f3mo desarrollar el componente.<br \/>\n<br \/>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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 reinicio | ProHoster","description":"El 26 de febrero organizamos un meetup de Apache Ignite GreenSource, donde presentaron contribuidores del proyecto de c\u00f3digo abierto Apache Ignite.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/ignite-service-grid-perezagruzka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/31137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=31137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/23105"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}