Invalidation des groupes multi-cellules et multi-coeurs du service de cache dynamique
L'invalidation des groupes multi-cellules et multi-coeurs du service de cache dynamique permet aux mémoires cache créées dans des cellules différentes d'être synchronisées sans que les entrées de la mémoire cache soient répliquées au-delà des limites des cellules. Lorsque cette fonction est activée pour les instances de servlet ou de cache d'objets, les données sont mises en cache dans les deux cellules car ces dernières gèrent le même trafic. Lorsqu'une entrée de cache est invalidée à l'aide de JMS (Java Message Service), l'ID de l'entrée de cache invalidée est envoyé à une cellule homologue. La cellule réceptrice utilise un bus d'intégration de services pour traiter l'invalidation. Cette fonction peut également être utilisée pour propager les invalidations vers d'autres groupes centraux dans la même cellule.
L'adaptateur de cache externe du cache dynamique, ExternalCacheAdapter (ECA), est utilisé pour capturer des invalidations à partir d'un serveur. JMS/bus d'intégration de services est utilisé pour envoyer et recevoir des invalidations dans la cellule distante ou le groupe central. Des serveurs d'applications additionnels sont créés pour héberger l'application d'invalidation. Ils deviennent automatiquement membres du bus d'intégration de services. Les serveurs d'applications traitent les invalidations, qui sont composées de messages JMS, depuis la cellule distante et les transmettent aux membres du cluster dans la cellule locale.
L'adaptateur de cache externe, com.ibm.websphere.servlet.cache.RemoteInvalidator, est utilisé pour envoyer les ID des caches invalidés vers un bus d'intégration de services dans une cellule distante. Plutôt que de spécifier host:port pour l'adresse, ce type d'adaptateur de cache externe utilise le nom JNDI de la fabrique de connexions de file d'attente JMS et le nom de destination de file d'attente du bus d'intégration de services distant comme adresse :
Adapter bean name = com.ibm.websphere.servlet.cache.RemoteInvalidator
Address = JMS_QUEUE_CONNECTION_FACTORY_JNDI_NAME, REMOTE_QUEUE_DESTINATION_NAME
- Chaque groupe de cellules ou de coeurs contient un cluster hébergeant un application de production. Vous devez utiliser la même application de production dans les deux cellules ou les deux groupes pour que les ID d'invalidation soient traités correctement.
- Un cluster distinct comportant deux serveurs est créé dans chaque groupe de cellules ou de coeurs pour héberger le bus d'intégration de services. Un groupe de caches externes RemoteJMSInvalidator ne peut pas être défini pour les membres de ce cluster. Si un groupe de caches externes RemoteJMSInvalidator est défini pour ces membres du cluster, une condition de boucle infinie se produit et des invalidations sont envoyées et reçues indéfiniment entre les cellules.
- Une source de données est définie et accessible depuis les deux membres du cluster du bus d'intégration de services. Si lababase de données est partagée par les deux cellules, utilisez un nom de base de données unique pour définir chaque source de données de chaque cellule.
- Chaque groupe de cellules ou de coeurs contient un domaine de réplication qui contient le cluster du bus d'intégration de services et tous les autres clusters qui hébergent les applications de production.
- com.ibm.ws.cache.CacheConfig.interCellReplication
- enableInterCellInvalidation
Remarques relatives à la configuration
WAS_INSTALL_ROOT/profiles/Dmgr01/bin)
La configuration des instances de servlet ou de cache d'objet doit être disponible pour les deux clusters d'un groupe central. Vous pouvez utiliser un fichier de propriétés, une fabrique ou la console d'administration pour configurer une instance de servlet ou de cache d'objet. Cette configuration doit être définie dans la portée de la cellule et être accessible au bus d'intégration de services et aux clusters de production du groupe central. La méthode la plus simple d'assurer cette disponibilité est de créer et définir les instances de cache sur les clusters de bus d'intégration de services et de production Web lorsque vous installez l'application.
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);
Pour définir ces propriétés dans la console d'administration, cliquez sur Serveurs > Serveurs d'applications >nom_serveur,
puis, dans la section Infrastructure du serveur, cliquez sur Gestion des processus et Java > Définition
des processus > Contrôle > Machine virtuelle Java > Propriétés personnalisées, ou cliquez sur Ressources > Instances de cache > Instances de cache d'objet > nom_instance_cache.
Pour définir ces propriétés dans la console d'administration, cliquez sur Serveurs > Serveurs d'applications > nom_serveur,
puis, dans la section Infrastructure du serveur, cliquez sur Gestion des processus et Java > Définition
des processus > Machine virtuelle Java > Propriétés personnalisées, ou cliquez sur Ressources > Instances de cache > Instances de cache d'objet > nom_instance_cache.
- La configuration de Inbound JMS/du bus d'intégration de services, qui est composée des actions suivantes :
- la création d'un bus d'intégration de services et la spécification de la destination d'un bus d'intégration de services ;
- la création d'une file d'attente JMS ;
- l'activation de JMS ;
- l'installation du fichier WAS_INSTALL_ROOT/installables/DynacacheMessageHandler.ear, qui est un bean géré par message, sur le cluster du bus d'intégration de services.
- La configuration de Outbound JMS/du bus d'intégration de services, qui implique la configuration de la fabrique de connexions de la file d'attente JMS.
- La configuration du groupe de caches externes qui implique la configuration du groupe de caches externes et de l'adaptateur de cache externe sur chaque membre de cluster qui héberge les applications de production.
Remarques relatives à l'optimisation
- dynacache.jms.connRetryInterval
- Indique le délai d'attente en secondes d'un membre du cluster avant qu'il tente de se reconnecter à un serveur de bus d'intégration de services. La valeur par défaut est 30
- dynacache.jms.numStoredInvalidations
- Indique le nombre maximal d'ID d'invalidation que peut stocker un membre du cluster en attendant qu'un serveur de bus d'intégration de services devienne disponible. Lorsque le seuil est atteint, les invalidations les plus anciennes sont supprimées. La valeur par défaut est 10000.
- dynacache.jms.cacheInstance
- Indique l'instance de cache à utiliser pour le traitement des invalidations. Si vous affectez la valeur "*" à la propriété, les ID d'invalidation sont traitées dans toutes les instances de cache. Par défaut, l'instance de cache baseCache est utilisée. Cette propriété ne s'applique qu'aux serveurs de bus d'intégration de services.
- dynacache.jms.invProcessingDelay
- Indique le délai en secondes de la mise en file d'attente des ID d'invalidation par le serveur de bus d'intégration de services avant de les traiter. La valeur par défaut est 20.