Invalidierung mehrerer Zellen und mehrerer Stammgruppen des dynamischen Cache-Service
Wenn die Invalidierung mehrerer Zellen und mehrerer Stammgruppen des dynamischen Cache-Service aktiviert ist, können Sie Caches, die in verschiedenen Zellen erstellt wurden, synchronisieren, ohne dass die Cacheeinträge zellenübergreifend repliziert werden müssen. Wenn diese Funktion für Servlet- und Objektcacheinstanzen aktiviert ist, werden Daten in beiden Zellen zwischengespeichert, da die Zellen denselben Datenverkehr verarbeiten. Wird ein Cacheeintrag mit dem Java Message Service (JMS) invalidiert, wird die ID des invalidierten Cacheeintrags an eine Peer-Zelle gesendet. Die empfangende Zelle verwendet einen Service Integration Bus, um die Invalidierung zu verarbeiten. Diese Funktion kann auch verwendet werden, um Invalidierungen an andere Stammgruppen in derselben Zelle weiterzugeben.
Der externe Cacheadapter des dynamischen Cache, ExternalCacheAdapter (ECA), wird verwendet, um Invalidierungen auf einem Server zu erfassen. Der Java Message Service (JMS) bzw. der Service Integration Bus (SIB) wird verwendet, um Invalidierungen zu senden und in der fernen Zelle bzw. in der Stammgruppe zu empfangen. Es werden zusätzliche Anwendungsserver für die Invalidierungsanwendung erstellt. Diese Server werden automatisch zu Membern des Service Integration Bus. Diese Anwendungsserver verarbeiten die Invalidierungen, die aus JMS-Nachrichten bestehen, in der fernen Zelle und übertragen sie an die Cluster-Member in der lokalen Zelle.
Der externe Cacheadapter, com.ibm.websphere.servlet.cache.RemoteInvalidator, wird verwendet, um IDs invalidierter Caches an einen Service Integration Bus in einer fernen Zelle zu senden. Anstatt den Wert für "Host:Port" für die Adresse festzulegen, verwendet der externe Cacheadapter dieses Typs den JNDI-Namen für die JMS-Warteschlangenverbindungsfactory und den Namen für das Warteschlangenziel des fernen Service Integration Bus als Adresse:
Adapter bean name = com.ibm.websphere.servlet.cache.RemoteInvalidator
Address = JMS_QUEUE_CONNECTION_FACTORY_JNDI_NAME, REMOTE_QUEUE_DESTINATION_NAME
- Jede Zelle oder Stammgruppe enthält einen Cluster, in dem eine Produktionsanwendung ausgeführt wird. Dieselbe Produktionsanwendung muss in beiden Zellen oder Stammgruppen verwendet werden, um sicherzustellen, dass Invalidierungs-IDs ordnungsgemäß verarbeitet werden.
- In jeder Zelle oder Stammgruppe wird ein eigenständiger Cluster mit zwei Servern für den Service Integration Bus erstellt. Für die Member dieses Clusters darf keine externe Cachegruppe RemoteJMSInvalidator definiert werden. Wenn für diese Cluster-Member eine externe Cachegruppe "RemoteJMSInvalidator" definiert wird, entsteht eine Endlosschleife, d. h., dass Invalidierungen wiederholt zwischen Zellen hin- und hergesendet werden.
- Es wird eine Datenquelle definiert, die für beide SIB-Cluster-Member zugänglich ist. Wird die Datenbank von beiden Zellen gemeinsam genutzt, müssen Sie sicherstellen, dass bei der Definition der Datenquelle für die einzelnen Zellen ein eindeutiger Datenbankname verwendet wird.
- Jede Zelle oder Stammgruppe enthält eine Replikationsdomäne, die sowohl den SIB-Cluster als auch alle Cluster, in denen sich die Produktionsanwendungen befinden, umfasst.
- com.ibm.ws.cache.CacheConfig.interCellReplication
- enableInterCellInvalidation
Hinweise zur Konfiguration
WAS_INSTALL_ROOT/profiles/Dmgr01/bin)
Die Konfiguration des Servlets oder der Objektcacheinstanz muss für beide Cluster in einer Stammgruppe verfügbar sein. Sie können entweder eine Eigenschaftendatei, eine Factory oder die Administrationskonsole verwenden, um ein Servlet oder eine Objektcacheinstanz zu konfigurieren. Diese Konfiguration muss auf Zellenebene durchgeführt werden und für den Service Integration Bus und die Produktionscluster in der Stammgruppe verfügbar sein. Diese Verfügbarkeit wird am einfachsten dadurch sichergestellt, dass bei der Installation der Anwendung die Cacheinstanzen in den Clustern der Webproduktion und des Service Integration Bus erstellt und definiert werden.
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);
Klicken Sie in der Administrationskonsole auf
Server > Anwendungsserver >Servername und
anschließend im Abschnitt "Serverinfrastruktur" auf Java™- und
Prozessverwaltung > Prozessdefinition > Steuerung > Java Virtual Machine
> Angepasste Eigenschaften, oder klicken Sie auf
Ressourcen > Cacheinstanzen > Objektcacheinstanzen > Name_der_Cacheinstanz.
Klicken Sie in der Administrationskonsole auf
Server > Anwendungsserver > Servername und
anschließend im Abschnitt "Serverinfrastruktur" auf Java- und
Prozessverwaltung > Prozessdefinition > Java Virtual Machine
> Angepasste Eigenschaften, oder klicken Sie auf
Ressourcen > Cacheinstanzen > Objektcacheinstanzen > Name_der_Cacheinstanz.
- Die Konfiguration des JMS/SIB für eingehende Nachrichten, die die folgenden Aktionen umfasst:
- Die Erstellung eines Service Integration Bus und die Angabe eines SIB-Ziels.
- Die Erstellung der JMS-Warteschlange.
- Die Aktivierung des Java Message Service.
- Die Installation der Datei WAS_INSTALL_ROOT/installables/DynacacheMessageHandler.ear, einer nachrichtengesteuerten Bean (MDB), im SIB-Cluster.
- Die Konfiguration des JMS/SIB für abgehende Nachrichten, d. h. die Konfiguration der JMS-Warteschlangenverbindungsfactory.
- Die Konfiguration der externen Cachegruppe, die die Konfiguration der externen Cachegruppe und des externen Cacheadapters in jedem Cluster-Member, in dem sich die Produktionsanwendungen befinden, umfasst.
Hinweise zur Optimierung
- dynacache.jms.connRetryInterval
- Gibt den Zeitraum in Sekunden an, den ein Cluster-Member warten muss, bevor er versucht, erneut eine neue Verbindung zu einem SIB-Server herzustellen. Der Standardwert ist 30 Sekunden.
- dynacache.jms.numStoredInvalidations
- Gibt die maximale Anzahl Invalidierungs-IDs an, die ein Cluster-Member speichern kann, während er darauf wartet, dass ein SIB-Server verfügbar wird. Ist der Schwellenwert erreicht, werden die ältesten Invalidierungen entfernt. Der Standardwert ist "10000".
- dynacache.jms.cacheInstance
- Gibt die Cacheinstanz an, die für die Verarbeitung von Invalidierungen verwendet werden soll. Wenn Sie diese Eigenschaft auf "*" setzen, werden Invalidierungs-IDs in allen Cacheinstanzen verarbeitet. Standardmäßig wird die Cacheinstanz "baseCache" verwendet. Diese Eigenschaft hat nur für die SIB-Server Gültigkeit.
- dynacache.jms.invProcessingDelay
- Gibt den Zeitraum in Sekunden an, in dem der SIB-Server Invalidierungs-IDs in die Warteschlange stellen muss, bevor er sie verarbeiten kann. Der Standardwert ist 20.