WebSphere eXtreme Scale enthält
Cache-Plug-ins der Stufe 2 für die JPA-Provider OpenJPA und Hibernate. Zum Konfigurieren
des L2-Cache-Plug-ins müssen Sie Eigenschaften in der Datei persistence.xml aktualisieren.
Tipp: Das JPA-L2-Cache-Plug-in erfordert eine Anwendung, die die
JPA-APIs verwendet. Wenn Sie APIs von
WebSphere eXtreme Scale
für den Zugriff auf eine JPA-Datenquelle verwenden möchten, verwenden Sie den JPA-Loader. Weitere Informationen finden Sie im Abschnitt
JPA-Loader konfigurieren.
Eigenschaftenposition
Sie können diese Eigenschaften in der Datei
persistence.xml konfigurieren. Die Syntax für die Angabe
der Eigenschaften in dieser Datei ist davon abhängig, ob Sie OpenJPA oder Hibernate verwenden:
- OpenJPA: Sie können die Eigenschaften in DataCache oder
QueryCache definieren:
<property name="openjpa.DataCache"
value="<object_grid_datacache_class(<Eigenschaft>=<Wert>,...)"/>
oder<property name="openjpa.QueryCache"
value="<object_grid_querycache_class(<Eigenschaft>=<Wert>,...)"/>
- Hibernate:
<property name="objectgrid.configuration" value="<Eigenschaft>=<Wert>,..." />
Standardtopologie und -eigenschaften
Die folgenden
Standardeigenschaftswerte werden verwendet, wenn Sie keine Werte in der Konfiguration angeben:
- ObjectGridName: Name der Persistenzeinheit
- ObjectGridType: EMBEDDED
- NumberOfPartitions: 1 (kann nicht geändert werden, wenn
der ObjectGrid-Typ EMBEDDED ist)
- ReplicaMode: SYNC
- ReplicaReadEnabled: TRUE (kann nicht geändert werden, wenn
der ObjectGrid-Typ EMBEDDED ist)
- MaxUsedMemory: TRUE
- MaxNumberOfReplicas: 47 (muss kleiner-gleich der Anzahl
Java Virtual
Machines in einem verteilten System sein)
Eigenschaften
Sie können JPA-Cache-Plug-ins
mit den folgenden Eigenschaften konfigurieren.
- ObjectGridName
- Gibt den eindeutigen ObjectGrid-Namen an. Der Standardwert ist der Name der definierten Persistenzeinheit.
Wenn der Name der Persistenzeinheit nicht über den
JPA-Provider verfügbar ist, wird ein generierter Name verwendet.
- ObjectGridType
- Gibt den Typ des ObjectGrids an.
Gültige Werte:
- EMBEDDED
- Der Standard- und empfohlene Konfigurationstyp.
Zu den Standardeinstellungen gehören NumberOfPartitions=1, ReplicaMode=SYNC, ReplicaReadEnabled=true und
MaxNumberOfReplicas=47.
Verwenden Sie den Parameter ReplicaMode, um den Replikationsmodus
festzulegen, und den Parameter MaxNumberOfReplicas, um die maximale Anzahl an Replikaten
festzulegen.
Wenn ein System mehr als 47 Java Virtual
Machines hat, setzen Sie MaxNumberOfReplicas
auf die Anzahl der Java Virtual
Machines.
- EMBEDDED_PARTITION
- Der zu verwendende Typ, wenn das System hohe Datenvolumen
in einem verteilten System zwischenspeichern muss.
Die Standardanzahl an Partitionen ist 47 beim Replikationsmodus NONE. In einem kleinen System, das nur wenige
Java Virtual
Machines hat, setzen Sie NumberOfPartitions auf einen Wert kleiner-gleich der Anzahl
Java Virtual
Machines. Sie können Werte für ReplicaMode, NumberOfPartitions und
ReplicaReadEnabled angeben, um das System zu optimieren.
- REMOTE
- Der Cache versucht, über den Katalogservice eine Verbindung zu einem fernen, verteilten
ObjectGrid herzustellen.
- MaxNumberOfReplicas
- Gibt die maximale Anzahl der für den Cache zu verwendenden
Replikate an.
Dieser Wert gilt nur für den Typ EMBEDDED. Der muss größer-gleich der Anzahl an
Java Virtual
Machines in einem System sein. Der Standardwert ist 47.
Gültige Werte: Größer-gleich 1
- MaxUsedMemory
Gültige Werte: TRUE oder FALSE
Aktiviert
das Entfernen von Cacheeinträgen, wenn ein Speicherengpass auftritt.
Der Standardwert ist TRUE und sorgt dafür, dass Daten entfernt werden, wenn die Auslastung des
JVM-Heapspeichers den Schwellenwert von 70 % überschreitet. Sie können den Prozentsatz für den Schwellwert für die
Auslastung des JVM-Heapspeichers ändern, indem Sie die Eigenschaft "memoryThresholdPercentage"
in der Datei objectGridServer.properties definieren und diese Datei in den Klassenpfad stellen.
Weitere Einzelheiten zu Bereinigungsprogrammen (Evictor) finden Sie in Plug-ins für die Bereinigung von Cacheobjektenden
Informationen zu Bereinigungsprogrammen in der Veröffentlichung Produktübersicht.
Weitere Informationen zur Servereigenschaftendatei finden Sie im Abschnitt
Servereigenschaftendatei.
- NumberOfPartitions
Gültige Werte: Größer-gleich 1
Gibt die Anzahl der für den Cache zu verwendenden
Partitionen an.
Diese Eigenschaft gilt, wenn EMBEDDED_PARTITION als Wert für ObjectGridType angegeben ist.
Der Standardwert ist 47. Für den Typ EMBEDDED
ist der Wert von NumberOfPartitions immer 1.
- PlacementScope
- Gibt die Granularität einer einzelnen Instanz eines MapSets an.
Gültige Werte:- DOMAIN_SCOPE
- (Standardeinstellung) Verteilt ein primäres Shard für jede Partition an einen Container-Server in der Katalogservicedomäne.
Replikat-Shards für jede Partition werden an die anderen Container-Server in der Katalogservicedomäne verteilt.
- CONTAINER_SCOPE
- Verteilt ein primäres Shard an jeden Container-Server in der Katalogservicedomäne.
- PlacementScopeTopology
- Definiert die Verbindungstopologie der Container-Server in der Katalogservicedomäne.
Dieser Wert wird nur verwendet, wenn der PlacementScope-Wert auf einen anderen Wert als
DOMAIN_SCOPE gesetzt ist.
Gültige Werte:- HUB
- (Standardeinstellung) Wenn die Hubtopologie ausgewählt ist, wird ein einziges Datengrid als Hub ausgewählt.
Jedes andere Datengrid stellt eine Verbindung zum Hub her.
Diese Topologie ist relativ gut skalierbar, weil die Peripheriedomänen eine einzige Verbindung haben.
Der Hub kann zu einem Engpass und Single Point of Failure werden.
Der Hub wird in einen anderen Container-Server verlagert, wenn er ausfällt.
Diese Konfiguration hat den Vorteil, dass komplexerer
Arbitrierungscode geschrieben werden kann, der einem einzigen Punkt, dem Hub, ermöglicht,
alle Kollisionen zu behandeln.
- RING
- Wenn Sie die Ringtopologie auswählen, wird jedes Datengrid mit zwei anderen Datengrids
verbunden.
Die Reihenfolge der Verbindungen ist nicht garantiert.
Jeder gestartete Container wird jedoch wahrscheinlich mit dem ersten Container und dem letzten Container verbunden, der dem Ring hinzugefügt wird.
Diese Topologie ist die Topologie mit der höchsten Skalierbarkeit, aber es können nur zwei Verbindungen ausfallen, bevor
die Topologie vorübergehend stillgelegt wird.
Wenn die Container-Server ausfallen, werden Verbindungen zwischen den verbleibenden Servern hergestellt, sobald der Fehler erkannt
wurde.
- ReplicaMode
Gültige Werte: SYNC/ASYNC/NONE
Gibt die Methode an, die
verwendet wird, um den Cache in die Replikate zu kopieren.
Diese Eigenschaft gilt, wenn Sie EMBEDDED oder EMBEDDED_PARTITION als Wert für ObjectGridType festgelegt haben.
Der Standardwert ist NONE für den Typ EMBEDDED_PARTITION und
SYNC für den Typ EMBEDDED.
Wenn Sie ReplicaMode auf NONE und EMBEDDED für ObjectGridType angeben,
verwendet der Typ EMBEDDED weiterhin den ReplicaMode-Wert SYNC.
- ReplicaReadEnabled
Gültige Werte: TRUE oder FALSE
Wenn Sie
diese Eigenschaft aktivieren, lesen Clients aus Replikaten.
Diese Eigenschaft gilt für den Typ EMBEDDED_PARTITION.
Der Standardwert ist FALSE für den Typ EMBEDDED_PARTITION.
Beim Typ EMBEDDED wird ReplicaReadEnabled immer auf
TRUE gesetzt.
- writeBehind
Nur für Hibernate-Provider: Wenn
writeBehind aktiviert ist, werden Aktualisierungen vorübergehend in einem JVM-spezifischen
Datenspeicher gespeichert, bis die writeBehindInterval- bzw. writeBehindMaxBatchSize-Bedingung erfüllt ist.
Achtung: Wenn writeBehind nicht aktiviert ist, werden
weitere Write-behind-Konfigurationseinstellungen ignoriert.
Wichtig: Verwenden Sie die Write-behind-Funktion mit Vorsicht.
Write-behind-Konfigurationen führen zu längeren Latenzzeiten bei der Datensynchronisation
in allen JVMs und zu einem höheren Risiko von Aktualisierungsverlusten.
In einem System, in dem die Write-behind-Konfiguration mit vier oder mehr JVMs aktiviert ist,
wird die in einer JVM durchgeführte
Aktualisierung mit einer Verzögerung von ca. 15 Sekunden anderen JVMs bereitgestellt.
Wenn zwei JVMs denselben Eintrag aktualisieren, verliert die JVM, die die Aktualisierung zuerst mit einer Flush-Operation
in den Cache schreibt, ihre Aktualisierung.
Gültige Werte: TRUE und FALSE
Standardwert: FALSE
- writeBehindInterval
Nur für Hibernate-Provider: Gibt das
Zeitintervall (in Millisekunden) an, in dem Aktualisierungen mit einer Flush-Operation in den Cache geschrieben werden.
Gültige Werte: Größer-gleich 1
Standardwert 5000 (5 Sekunden)
- writeBehindPoolSize
Nur für Hibernate-Provider: Gibt die maximale Größe des Thread-Pools an, der für das Schreiben von Aktualisierungen
in den Cache verwendet wird.
Gültige Werte: Größer-gleich 1
Standardwert: 5
- writeBehindMaxBatchSize
Nur für Hibernate-Provider: Gibt die maximale Stapelgröße
pro Regionscache für das Schreiben von Aktualisierungen in den Cache an.
Wenn die Größe beispielsweise auf 1000 gesetzt ist und die Anzahl der Aktualisierungen,
die im Write-behind-Speicher eines Regionscaches den Wert 1000 überschreitet, werden die
Aktualisierungen mit einer Flush-Operation in den Cache geschrieben
und zwar auch dann, wenn die angegebene writeBehindInterval-Bedingung nicht erfüllt ist.
Aktualisierungen werden entweder alle fünf Sekunden
oder bei mehr als 1000 Einträgen im Write-behind-Speicher jedes Regionscaches
mit einer Flush-Operation in den Cache geschrieben.
Wenn die writeBehindMaxBatchSize-Bedingung erfüllt ist, schreibt nur der Regionscache, der diese
Bedingung erfüllt, seine Aktualisierungen im Write-behind-Speicher mit einer Flush-Operation
in den Cache.
Ein Regionscache entspricht gewöhnlich einer Entität oder einer Abfrage.
Gültige Werte: Größer-gleich 1
Standardwert: 1000