WebSphere eXtreme
Scale incluye plug-ins de memoria caché de nivel 2 para proveedores de OpenJPA e Hibernate Java Persistence
API (JPA). Para configurar el plug-in de memoria caché L2, debe actualizar las propiedades en el archivo persistence.xml.
Consejo: El plug-in de memoria caché L2 JPA requiere una aplicación que utilice las API JPA. Si desea utilizar las API
WebSphere eXtreme
Scale para acceder a un origen de datos JPA, utilice el cargador JPA. Para obtener más información, consulte
Configuración de cargadores JPA.
Ubicación de las propiedades
Puede configurar estas propiedades en el archivo
persistence.xml. La sintaxis para especificar las propiedades de este archivo varía en función de si utiliza OpenJPA o Hibernate:
- OpenJPA: puede establecer las propiedades en DataCache o
QueryCache:
<property name="openjpa.DataCache"
value="<object_grid_datacache_class(<property>=<value>,...)"/>
o bien<property name="openjpa.QueryCache"
value="<object_grid_querycache_class(<property>=<value>,...)"/>
- Hibernate:
<property name="objectgrid.configuration" value="<property>=<value>,..." />
Topología y propiedades predeterminadas
Se utilizan los siguientes valores predeterminados de las propiedades si no especifica valores en la configuración:
- ObjectGridName: nombre de unidad de persistencia
- ObjectGridType: EMBEDDED
- NumberOfPartitions: 1 (no se puede modificar, si el tipo de
ObjectGrid es EMBEDDED)
- ReplicaMode: SYNC
- ReplicaReadEnabled: TRUE (no se puede modificar cuando el tipo de
ObjectGrid es EMBEDDED)
- MaxUsedMemory: TRUE
- MaxNumberOfReplicas: 47 (debe ser inferior o igual al número de Máquinas virtuales Java en un sistema distribuido)
Propiedades
Puede configurar los plug-ins de memoria caché JPA con las propiedades siguientes.
- ObjectGridName
- Especifica el nombre ObjectGrid exclusivo.
El valor predeterminado es el nombre de la unidad de persistencia definida. Si el nombre de la unidad de persistencia no está disponible desde el proveedor JPA, se utiliza un nombre generado.
- ObjectGridType
- Especifica el tipo de ObjectGrid.
Valores válidos:
- EMBEDDED
- El tipo de configuración predeterminado y recomendado. Sus valores predeterminados incluyen: NumberOfPartitions=1, ReplicaMode=SYNC, ReplicaReadEnabled=true y MaxNumberOfReplicas=47.
Utilice el parámetro ReplicaMode para establecer la modalidad de réplica y el parámetro MaxNumberOfReplicas para establecer el número máximo de réplicas. Si un sistema tiene más de 47 Máquinas virtuales Java, establezca el valor MaxNumberOfReplicas para que sea igual al número de Máquinas virtuales Java.
- EMBEDDED_PARTITION
- El tipo que se utilizará cuando el sistema necesite almacenar en memoria caché una gran cantidad de datos en un sistema distribuido. El número predeterminado de particiones es 47 con una modalidad de réplica de NONE. En un sistema pequeño que sólo tiene unas pocas Máquinas virtuales Java, establezca el valor NumberOfPartitions en un valor igual o menor que el número de Máquinas virtuales Java. Puede especificar los valores ReplicaMode, NumberOfPartitions,
y ReplicaReadEnabled para ajustar el sistema.
- REMOTE
- La memoria caché intenta conectarse a un ObjectGrid remoto distribuido desde el servicio de catálogo.
- MaxNumberOfReplicas
- Especifica el número máximo de réplicas que se utilizarán para la memoria caché.
Este valor se aplica solo al tipo EMBEDDED.
Este número debe ser igual o mayor que el número de Máquinas virtuales Java en un sistema. El valor predeterminado es 47.
Valores válidos: mayor o igual que 1
- MaxUsedMemory
Valores válidos: TRUE o FALSE
Habilita el desalojo de las entradas de la memoria caché cuando la memoria se restringe. El valor predeterminado es TRUE y desaloja los datos cuando el umbral de uso del almacenamiento dinámico de la JVM supera el 70 por ciento. Puede modificar el porcentaje predeterminado del umbral de utilización del almacenamiento dinámico de la JVM estableciendo la propiedad memoryThresholdPercentage en el archivo objectGridServer.properties y colocando este archivo en la classpath. Para obtener más información sobre los desalojadores, consulte Plug-ins para desalojar los objetos de memoria cachéla información sobre los desalojadores de la Visión general del producto.
Si desea más información sobre el archivo de propiedades de servidor, consulte Archivo de propiedades de servidor.
- NumberOfPartitions
Valores válidos: mayor o igual que 1
Especifica el número de particiones que se utiliza para la memoria caché. Esta propiedad se aplica cuando el valor ObjectGridType está establecido en EMBEDDED_PARTITION.
El valor predeterminado es 47. Para el tipo EMBEDDED, el valor de NumberOfPartitions siempre es 1.
- PlacementScope
- Indica la granularidad de una única instancia de un conjunto de correlaciones.
Valores válidos: - DOMAIN_SCOPE
- (Valor predeterminado) Coloca un fragmento primario para cada partición en un servidor de contenedor del dominio de servicio de catálogo. Los fragmentos de réplica para cada partición se colocan en otros servidores de contenedor del dominio de servicio de catálogo.
- CONTAINER_SCOPE
- Coloca un fragmento primario en cada servidor de contenedor del dominio de servicio de catálogo.
- PlacementScopeTopology
- Define la topología de enlace de los servidores de contenedor del dominio de servicio de catálogo. Este valor solo se utiliza cuando el valor PlacementScope se establece en un valor distinto a DOMAIN_SCOPE.
Valores válidos: - HUB
- (Valor predeterminado) Si se selecciona la topología de hub, se seleccionará una única cuadrícula de datos para que sea el hub. Todas las demás cuadrículas de datos se conectarán al hub. Esta topología es bastante escalable porque los radios tienen una única conexión. El hub puede convertirse en un cuello de botella y un único punto temporal de anomalía. El hub se reubicará a otro servidor de contenedor se falla. La ventaja de esta configuración es que se puede escribir un código de arbitraje más complejo que permite que un único punto, el hub, maneje todas las colisiones.
- RING
- Si se selecciona la topología de anillo, todas las cuadrículas de datos se enlazan con otras dos cuadrículas de datos. No se garantiza el orden de los enlaces.
Sin embargo, cada contenedor que se inicie probablemente se enlazará al primer contenedor y al último contenedor añadidos al anillo. Esta topología es la más escalable, pero solo pueden fallar dos enlaces antes de que se produzca una interrupción temporal. Si los servidores de contenedor fallan, se establecerán enlaces entre los supervivientes después de que se haya descubierto la anomalía.
- ReplicaMode
Valores válidos: SYNC/ASYNC/NONE
Especifica el método que se utiliza para copiar la memoria caché en las réplicas. Esta propiedad se aplica cuando el valor
de ObjectGridType está establecido en EMBEDDED o EMBEDDED_PARTITION.
El valor predeterminado es NONE para el tipo EMBEDDED_PARTITION y SYNC para el tipo EMBEDDED.
Si el valor ReplicaMode está establecido en NONE para el ObjectType EMBEDDED, el tipo EMBEDDED sigue utilizando una ReplicaMode de SYNC.
- ReplicaReadEnabled
Valores válidos: TRUE o FALSE
Cuando está habilitado, los clientes leen las réplicas. Esta propiedad se aplica al tipo EMBEDDED_PARTITION.
El valor predeterminado es FALSE para el tipo EMBEDDED_PARTITION.
El tipo EMBEDDED siempre establece el valor ReplicaReadEnabled en TRUE.
- writeBehind
Para proveedores de Hibernate solamente: cuando writeBehind está habilitado, las actualizaciones se almacenan temporalmente en un almacenamiento de datos con ámbito de JVM hasta que se cumplen las condiciones de writeBehindInterval o writeBehindMaxBatchSize.
Atención: A no ser que esté habilitado writeBehind, se
omiten los demás valores de configuración de grabación diferida.
Importante: Tenga cuidado al utilizar la función de grabación diferida. Las configuraciones de grabación diferida presentan una latencia mayor de la sincronización de datos entre todas las JVM y mayores posibilidades de pérdida de actualizaciones. En un sistema que tiene habilitada la configuración de grabación diferida con cuatro o más JVM, la actualización realizada en una JVM tiene un retardo aproximado de 15 segundos antes de que la actualización pase a estar disponible a otras JVM. Si dos JVM actualizan la misma entrada, la que deseche primero la actualización perderá su actualización.
Valores válidos: TRUE o FALSE
Valor predeterminado: FALSE
- writeBehindInterval
Para proveedores de Hibernate solamente: especifica el intervalo de tiempo, en milisegundos, para desechar actualizaciones en la memoria caché.
Valores válidos: mayor o igual que 1
Valor
predeterminado: 5000 (5 segundos)
- writeBehindPoolSize
Para proveedores Hibernate solamente: especifica el tamaño máximo de la agrupación de hebras utilizado para desechar actualizaciones en la memoria caché.
Valores válidos: mayor o igual que 1
Valor
predeterminado: 5
- writeBehindMaxBatchSize
Para proveedores de Hibernate solamente: especifica el tamaño de lote máximo por memoria caché de región para desechar actualizaciones en la memoria caché. Por ejemplo, si el tamaño se establece en 1000, y las actualizaciones almacenadas en el almacenamiento de grabación diferida de una memoria caché de región sobrepasan las 1000 entradas, las actualizaciones se desecharán en la memoria caché, incluso si no se cumple la condición writeBehindInterval especificada. Las actualizaciones se desechan en la memoria caché con la periodicidad aproximada especificada del número de segundos especificados por el valor writeBehindInterval o siempre que el tamaño del almacenamiento de grabación diferida sobrepase las 1000 entradas. Tenga en cuenta que, en el caso de cumplimiento de la condición writeBehindMaxBatchSize, solo la memoria caché de región que cumpla esta condición desechará sus actualizaciones en almacenamiento de grabación diferida en la memoria caché. Un memoria caché de región normalmente se corresponde con una entidad o una consulta.
Valores válidos: mayor o igual que 1
Valor
predeterminado: 1000