Invalidación de grupo de varios núcleos y varias células del servicio de memoria caché dinámica
La invalidación de grupo de varios núcleos y varias células del servicio de memoria caché dinámica de varios grupos permite que las memorias caché creadas en células diferentes se sincronicen sin que se repliquen las entradas de memoria caché en los límites de la célula. Cuando esta función está habilitada para cualquiera de las instancias de memoria caché de servlet y de objetos, los datos se almacenan en la memoria caché en ambas células, ya que las células manejan el mismo tráfico. Cuando se invalida una entrada de memoria caché, utilizando el servicio de mensajes Java (JMS), el ID de la entrada de memoria caché invalidado se envía a una célula de igual. La célula receptora utiliza un bus de integración de servicios para procesar la invalidación. Esta función también se puede utilizar para propagar invalidaciones a otros grupos principales de la misma célula.
El adaptador de memoria caché externo de memoria caché dinámica, ExternalCacheAdapter (ECA), sirve para capturar las invalidaciones de un servidor. El bus de integración de servicios/JMS se utiliza para enviar y recibir invalidaciones en la célula remota, o en el grupo principal. Los servidores de aplicaciones adicionales se crean para alojar la aplicación de invalidación. Estos servidores se convierten, automáticamente, en miembros del bus de integración de servicios. Estos servidores de aplicaciones procesan las invalidaciones, que constan de mensajes JMS, procedentes de la célula remota, que comunica a los miembros del clúster de la célula local.
El adaptador de memoria caché externa, com.ibm.websphere.servlet.cache.RemoteInvalidator, se utiliza para enviar los ID de las memorias caché invalidadas a un bus de integración de servicios de una célula remota. En lugar de especificar un par host:puerto para la dirección, este tipo de adaptador de memoria caché externa utiliza el nombre JNDI de la fábrica de conexiones de cola JMS, y el nombre de destino de cola del bus de integración de servicios remoto como la dirección:
Adapter bean name = com.ibm.websphere.servlet.cache.RemoteInvalidator
Address = JMS_QUEUE_CONNECTION_FACTORY_JNDI_NAME, REMOTE_QUEUE_DESTINATION_NAME
- Cada grupo de células o núcleos contiene un clúster que aloja una aplicación de producción. Se ha de utilizar la misma aplicación de producción en los grupos de células o de núcleos para asegurarse de que los ID de invalidación se procesan correctamente.
- Se crea un clúster independiente de dos servidores en grupo de células o núcleos para alojar el bus de integración de servicios. Los miembros de este clúster no pueden tener definido un grupo de memoria caché externa RemoteJMSInvalidator. Si se define un grupo de memoria caché externa RemoteJMSInvalidator para estos miembros del clúster, se produce una condición de bucle de retorno infinito en el que las invalidaciones se vuelven a enviar de forma reiterada entre las células.
- Se ha definido un origen de datos y se puede acceder al mismo desde el bus de integración de servicios y los miembros del clúster. Si las dos células comparten la base de datos, asegúrese de que se utiliza un nombre de base de datos exclusivo cuando defina cada uno de los orígenes de datos para cada célula.
- Cada grupo de células o núcleos contiene un dominio de réplica que contiene un clúster de bus de integración de servicios y todos los clústeres que alojan las aplicaciones de producción.
- com.ibm.ws.cache.CacheConfig.interCellReplication
- enableInterCellInvalidation
Consideraciones de configuración
RAÍZ_INSTALACIÓN_WAS/profiles/Dmgr01/bin)
La configuración de las instancias de servlet o de memoria caché de objeto debe estar disponible para ambos clústeres de un grupo principal. Puede utilizar un archivo de propiedades cualquiera, una fábrica o la consola administrativa para configurar una instancia de servlet o de caché de objeto. Esta configuración se debe establecer en el ámbito de la célula, y debe estar disponible tanto para el bus de integración de servicios como para los clústeres de producción del grupo principal. La forma más fácil de garantizar esta disponibilidad es crear y definir las instancias de memoria caché tanto en la producción web como en los clústeres de bus de integración de servicios al instalar la aplicación.
cache.instance.0=/services/cache/instance_one
cache.instance.0.cacheSize=1000
cache.instance.0.enableInterCellInvalidation=true
Properties p = new Properties();
==>p.put("com.ibm.ws.cache.CacheConfig.enableInterCellInvalidation", "true");
DistributedMap map1 = DistributedMapFactory.getMap("+myMap", p);
Para establecer estas propiedades en la consola administrativa, pulse Servidores > Servidores de aplicaciones >nombre_servidor y, a continuación, en la sección Infraestructura de servidor, pulse Java™ y gestión de procesos > Definición de proceso > Control > Máquina virtual Java > Propiedades personalizadas, o pulse Recursos > Instancias de memoria caché > Instancias de memoria caché de objetos > nombre_instancia_memoria_caché.
Para establecer estas propiedades en la consola administrativa, pulse Servidores > Servidores de aplicaciones > nombre_servidor y, a continuación, en la sección Infraestructura de servidor, pulse Java y gestión de procesos > Definición de proceso > Máquina virtual Java > Propiedades personalizadas, o bien pulse Recursos > Instancias de memoria caché > Instancias de memoria caché de objetos > nombre_instancia_memoria_caché.
- La configuración del bus de integración de servicios/JMS de entrada, que consta de las acciones siguientes:
- La creación de un bus de integración de servicios y la especificación de un destino de bus de integración de servicios.
- La creación de la cola JMS.
- La activación de JMS.
- La instalación del archivo RAÍZ_INSTALACIÓN_WAS/installables/DynacacheMessageHandler.ear, que es un bean controlado por mensajes, en el clúster bus de integración de servicios.
- La configuración del bus de integración de servicios/JMS de salida, que consiste en configurar la fábrica de conexiones de cola JMS.
- La configuración del grupo de memoria caché externa, que consiste en configurar el grupo de memoria caché externa, y el adaptador de memoria caché externa en cada miembro del clúster en el que se alojen las aplicaciones de producción.
Consideraciones de ajuste
- dynacache.jms.connRetryInterval
- Especifica el número de segundos que un miembro de clúster espera antes de intentar volver a conectarse a un servidor del bus de integración de servicios. El valor predeterminado es 30.
- dynacache.jms.numStoredInvalidations
- Especifica el número máximo de ID de invalidación que un miembro del clúster puede almacenar mientras espera a que un servidor del bus de integración de servicios esté disponible. Una vez alcanzado el umbral, se eliminan las invalidaciones antiguas. El valor predeterminado es 10000.
- dynacache.jms.cacheInstance
- Especifica la instancia de memoria caché que debe utilizarse para procesar las invalidaciones. Establecer esta propiedad en "*" hace que se procesen los ID de invalidación en todas las instancias de memoria caché. De forma predeterminada, se utiliza la instancia de memoria caché baseCache. Esta propiedad sólo es aplicable a los servidores del bus de integración de servicios.
- dynacache.jms.invProcessingDelay
- Especifica el número de segundos que el servidor del bus de integración de servicios coloca en la cola los ID de invalidación, antes de procesarlos. El valor predeterminado es 20.