Proveedor de memoria caché dinámica

La API de memoria caché dinámica está disponible para las aplicaciones Java EE desplegadas en WebSphere Application Server. Puede utilizar el proveedor de memoria caché dinámica para almacenar en la memoria caché los datos empresariales, el HTML generado o para sincronizar los datos de la memoria caché en la célula utilizando el servicio de réplica de datos (DRS).

Visión general

Previamente, el único proveedor de servicios para la API de memoria caché dinámica era el motor de la memoria caché dinámica incorporada en WebSphere Application Server. Los clientes pueden utilizar la interfaz del proveedor de servicios de memoria caché dinámica en WebSphere Application Server para conectarse a la memoria caché dinámica de eXtreme Scale. Configurando esta prestación, podrá habilitar aplicaciones escritas con la API de memoria caché dinámica o aplicaciones que utilizan la memoria caché de nivel de contenedor (como, por ejemplo, servlets) para utilizar las características y capacidades de rendimiento de WebSphere eXtreme Scale.

Puede instalar y configurar el proveedor de memoria caché dinámico tal como se describe en Configuración del proveedor de memoria caché dinámica para WebSphere eXtreme Scale.

Cómo decidir el uso de WebSphere eXtreme Scale

Las características disponibles en WebSphere eXtreme Scale aumentan de forma significativa las capacidades distribuidas de la API de memoria caché dinámica más allá de lo que ofrece el motor de memoria caché dinámica predeterminado y el servicio de duplicación de datos. Con eXtreme Scale, puede crear memorias caché que se distribuyen verdaderamente entre varios servidores, en lugar de sólo duplicarlas y sincronizarlas entre los servidores. Además, las memorias caché de eXtreme Scale son transaccionales y están disponibles, lo que asegura que cada servidor ve los mismos contenidos para el servicio de memoria caché dinámica. WebSphere eXtreme Scale ofrece una mayor calidad de servicio para la réplica de memoria caché que DRS.

Sin embargo, estas ventajas no implican que el proveedor de memoria caché dinámica de eXtreme Scale sea la opción correcta para cada aplicación. Utilice los árboles de decisiones y la matriz de comparaciones de característica siguiente para determinar qué tecnología se adapta mejora a la aplicación.

Árbol de decisiones para migrar las aplicaciones de la memoria caché dinámica existente

Aplicación de memoria caché dinámica existente

Árbol de decisiones para seleccionar un proveedor de memoria caché para las nuevas aplicaciones

Nueva aplicación

Comparación de características

Tabla 1. Comparación de características
Características de memoria caché Proveedor predeterminado Proveedor de eXtreme Scale API de eXtreme Scale

Memoria caché local en memoria

x

x

x

Memoria caché distribuida

Incorporado

Incorporado, particionado-incorporado y particionado-remoto

Varios

Ampliable de forma lineal

 

x

x

Réplica fiable (síncrona)

 

ORB

ORB

Desbordamiento de disco

x

   

Desalojo

LRU/TTL/basado en almacenamiento dinámico

LRU/TTL (por partición)

Varios

Invalidación

x

x

x

Relaciones

ID de dependencia, plantillas,

ID de dependencia, plantillas,

x

Búsquedas sin clave

   

Consulte e índice

Integración de fondo

   

Cargadores

Transaccional

 

Implícita

x

Almacenamiento basado en clave

x

x

x

Sucesos y receptores

x

x

x

Integración de WebSphere Application Server

Sólo una única célula

Varias células

Célula independiente

Soporte de Java Standard Edition

x

x

Supervisión y estadísticas

x

x

x

Seguridad

x

x

x

Tabla 2. Integración de tecnología sin fisuras
Características de memoria caché Proveedor predeterminado Proveedor de eXtreme Scale API de eXtreme Scale

Colocación en memoria caché de los resultados del servlet/JSP de WebSphere Application Server

V5.1+

V6.1.0.25+

 

Colocación en memoria caché del resultado de WebSphere Application Server Web Services (JAX-RPC)

V5.1+

V6.1.0.25+

 

Colocación en memoria caché de la sesión HTTP

   

x

Proveedor de memoria caché para OpenJPA e Hibernate

   

x

Sincronización de la base de datos utilizando OpenJPA e Hibernate

   

x

Tabla 3. Interfaces de programación
Características de memoria caché Proveedor predeterminado Proveedor de eXtreme Scale API de eXtreme Scale

API basada en mandato

API de infraestructura de mandatos

API de infraestructura de mandatos

API de DataGrid

API basada en correlación

API DistributedMap

API DistributedMap

API ObjectMap

API EntityManager

   

x

Para ver una descripción más detallada sobre cómo funcionan las memorias caché distribuidas de eXtreme Scale, consulte Planificación de la topología .

Nota: Una memoria caché distribuida de eXtreme Scale sólo puede almacenar entradas en las que la clave y el valor ambos implementan la interfaz java.io.Serializable.

Tipos de topología

Un servicio de memoria caché dinámica creado con el proveedor eXtreme Scale se puede desplegar en cualquiera de las tres topologías disponibles, lo que le permite adaptar la memoria caché específicamente al rendimiento, los recursos y las necesidades administrativas. Estas topologías son: incorporado, particionado incorporado y remoto.

Topología incorporada

La topología incorporada es similar a la memoria caché dinámica predeterminada y al proveedor DRS. Las instancias de memoria caché distribuida creadas con la topología incorporada conservan una copia de la memoria caché dentro de cada proceso eXtreme Scale que accede al servicio de memoria caché dinámica, lo que permite que todas las operaciones de lectura se produzcan de forma local. Todas las operaciones de escritura pasan por un proceso de único servidor, en el que se gestionan los bloqueos transaccionales, antes de duplicarse el resto de los servidores. Consecuentemente, esta topología es mejor para las cargas de trabajo donde las operaciones de memoria caché-lectura superan en número a las operaciones de memoria caché-escritura.

Con la topología incorporada, las entradas de memoria caché nuevas o actualizadas no son visibles de forma inmediata en cada proceso de servidor único. Una entrada de caché no será visible, incluso para el servidor que lo ha generado, hasta que se propague a través de los servicios de duplicación asíncrona de WebSphere eXtreme Scale. Estos servicios funcionan tan rápido como lo permita el hardware, pero sigue habiendo un pequeño retardo. La topología incorporada se muestra en la siguiente imagen:

Topología incorporada

Topología incorporada con particiones

Para las cargas de trabajo donde se producen las escrituras de memoria caché tan a menudo o con más frecuencia que las lecturas, se recomiendan las topologías incorporadas con particiones o las remotas. La topología incorporada con particiones conserva todos los datos de la memoria caché dentro de los procesos WebSphere Application Server que acceden a la memoria caché. Sin embargo, cada proceso sólo almacena una parte de los datos de la memoria caché. Todas las lecturas y escrituras de los datos situados en esta “partición” pasan por el proceso, lo que significa que la mayoría de las solicitudes para la memoria caché se cumplirán con una llamada a procedimiento remoto. Esto genera una mayor latencia para las operaciones de lectura que la topología incorporada, pero la capacidad de la memoria caché distribuida para manejar las operaciones de lectura y escritura se ampliará de forma lineal con el número de procesos WebSphere Application Server que acceden a la memoria caché. Además, con esta topología, el tamaño máximo de la memoria caché no está vinculado al tamaño de un único proceso WebSphere. Puesto que cada proceso sólo alberga una parte de la memoria caché, el tamaño máximo de la memoria caché pasa a ser el tamaño agregado de todos los procesos, menos la sobrecarga del proceso. La topología incorporada con particiones se muestra en la siguiente imagen:

Topología incorporada con particiones

Por ejemplo, suponga que tiene una cuadrícula de procesos de servidor con 256 megabytes de almacenamiento dinámico libre para alojar el servicio de memoria caché dinámica. El proveedor de la memoria caché dinámica predeterminada y el proveedor eXtreme Scale que utiliza la topología incorporada se deben limitar ambos a un tamaño de memoria caché en memoria de 256 megabytes menos la sobrecarga. Consulte la sección Planificación de capacidad y Alta disponibilidad más adelante en este documento. El proveedor eXtreme Scale que utiliza la topología incorporada con particiones se limitará a un tamaño de memoria caché de un gigabyte menos la sobrecarga. De esta forma, el proveedor WebSphere eXtreme Scale posibilita tener servicios de memoria caché dinámica en memoria mayores que el tamaño de un proceso de servidor único. El proveedor de la memoria caché dinámica predeterminada se basa en el uso de una memoria caché de disco para permitir a las instancias de memoria caché crecer más allá del tamaño de un proceso único. En muchas situaciones, el proveedor WebSphere eXtreme Scale puede eliminar la necesidad de una memoria caché de disco y los caros sistemas de almacenamiento en disco que hacen que funcione.

Topología remota

La topología remota también se puede utilizar para eliminar la necesidad de una memoria caché de disco. La única diferencia entre las topologías remota e incorporada con particiones es que todos los datos de la memoria caché se almacenan fuera de los procesos WebSphere Application Server cuando se utiliza la topología remota. WebSphere eXtreme Scale soporta los procesos de contenedor autónomo para los datos de memoria caché. Estos procesos de contenedor tienen una sobrecarga menor que un proceso WebSphere Application Server y, además, no están limitados a utilizar una máquina virtual Java (JVM) determinada. Por ejemplo, un proceso WebSphere Application Server de 32 bits que está accediendo a los datos de un servicio de memoria caché dinámica podría estar situado en un proceso de contenedor eXtreme Scale que se ejecuta en una JVM de 64 bits. Esto permite a los usuarios utilizar la capacidad de memoria aumentada de los procesos de 64 bits para la colocación en memoria caché, sin generar la sobrecarga adicional de 64 bits para los procesos de servidor de aplicaciones. La topología remota se muestra en la siguiente imagen:

Topología remota

Compresión de datos

La compresión es otra característica de rendimiento ofrecida por el proveedor de memoria caché dinámica WebSphere eXtreme Scale que puede ayudar a los usuarios a gestionar la sobrecarga de la memoria caché. El proveedor de la memoria caché dinámica predeterminada no permite la compresión de los datos almacenados en la memoria caché. Con el proveedor eXtreme Scale, esto ahora es posible. La compresión de memoria caché mediante el algoritmo de deflate se puede habilitar en cualquiera de las tres topologías distribuidas. Habilitar la compresión aumentará la sobrecarga para las operaciones de lectura y escritura, pero aumentará drásticamente la densidad de la memoria caché para las aplicaciones, como la colocación en memoria caché de servlet y JSP.

Almacenamiento local de memoria caché en memoria

El proveedor de memoria caché dinámica de WebSphere eXtreme Scale se puede utilizar también para recuperar las instancias de memoria caché dinámica que tienen la réplica inhabilitada. Al igual que el proveedor de memoria caché dinámica predeterminado, estas memorias caché pueden almacenar datos no serializables. También pueden ofrecer un mejor rendimiento que el proveedor de memoria caché dinámica en grandes servidores de varios procesadores porque la vía de acceso del código eXtreme Scale está diseñado para maximizar la concurrencia de la memoria caché en memoria.

Diferencias funcionales del motor de memoria caché dinámica y eXtreme Scale

En el caso de las memorias de caché en memoria donde la réplica está inhabilitada, no debería haber ninguna diferencia funcional apreciable entre las memorias caché respaldadas por el proveedor de la memoria caché dinámica predeterminada y WebSphere eXtreme Scale. Los usuarios no deberían advertir ninguna diferencia funcional entre las dos memorias caché, excepto que las memorias caché respaldadas por WebSphere eXtreme Scale no soportan las estadísticas ni la descarga de disco, ni las operaciones relacionadas con el tamaño de la memoria caché en memoria.

En el caso de las memorias caché donde está habilita la réplica, no habrá ninguna diferencia apreciable en los resultados devueltos por las mayoría de las llamadas de la API de memoria caché dinámica, independientemente de si el cliente está utilizando el proveedor de memoria caché dinámica o el proveedor de memoria caché dinámica eXtreme Scale. Para algunas operaciones, no podrá emular el comportamiento del motor de memoria caché dinámica utilizando eXtreme Scale.

Estadísticas de la memoria caché dinámica

Se informa de las estadísticas de memoria caché dinámica a través de la aplicación CacheMonitor o el MBean de memoria caché dinámica. Cuando se utiliza el proveedor de memoria caché dinámica eXtreme Scale, se informará de las estadísticas a través de estas interfaces, pero el contexto de los valores estadísticos serán diferentes.

Si se comparte una instancia de memoria caché dinámica entre tres servidores llamados A, B y C, el objeto de las estadísticas de memoria caché dinámica sólo devuelve las estadísticas para la copia de la memoria caché en el servidor que realizó la llamada. Si se recuperan las estadísticas en el servidor A, sólo reflejan la actividad en el servidor A.

Con eXtreme Scale, sólo hay una memoria caché distribuida compartida entre todos los servidores, de forma que no es posible rastrear las mayoría de las estadísticas en una base de servidor-por-servidor, como lo hace el proveedor de la memoria caché dinámica predeterminada. A continuación, aparece una lista de las estadísticas generadas por la API de estadísticas de memoria caché y lo que representan cuando se utiliza el proveedor de memoria caché dinámica WebSphere eXtreme Scale. Del mismo modo que el proveedor predeterminado, estas estadísticas no se sincronizan y, por lo tanto, pueden variar hasta el 10% para las cargas de trabajo concurrentes.

  • Coincidencias en la memoria caché: las coincidencias de la memoria caché se rastrean por servidor. Si el tráfico en el servidor A genera 10 coincidencias de memoria caché y el tráfico en el servidor B genera 20 coincidencias de memoria caché, las estadísticas de la memoria caché informarán de 10 coincidencias de memoria caché en el servidor A y 20 coincidencias de memoria caché en el servidor B.
  • Faltas de coincidencia de la memoria caché: las faltas de coincidencia de la memoria caché se rastrean por servidor simplemente como las coincidencias de memoria caché.
  • Entradas de la memoria caché: esta estadística informa del número de entradas de memoria caché en la memoria caché distribuida. Todos los servidores que acceden a la memoria caché informarán del mismo valor para esta estadística y dicho valor será el número total de entradas de memoria caché en la memoria de todos los servidores.
  • Tamaño de la memoria caché en MB: esta métrica se admite solo para memorias caché que utilizan las topologías remota, incorporada o embedded_partitioned. Notifica el número de megabytes del espacio de almacenamiento dinámico Java consumido por la memoria caché, en toda la cuadrícula. Esta estadística notifica el uso de almacenamiento dinámico solo para las particiones primarias; debe tener en cuenta las réplicas. Dado que el valor predeterminado de las topologías remotas y embedded_partitioned en una réplica asíncrona, doble este número para obtener el consumo real de memoria de la memoria caché.
  • Supresiones de memoria caché: esta estadística informa del número total de entradas eliminadas de la memoria caché por un método cualquiera y es un valor de agregado para toda la memoria caché distribuida. Si el tráfico en el servidor A genera 10 invalidaciones y el tráfico en el servidor B genera 20 invalidaciones, el valor en ambos servidores será 30.
  • Supresiones de la memoria caché menos utilizada recientemente (LRU): esta estadística es un agregado, al igual que las supresiones de memoria caché. Rastrea el número de entradas que se eliminaron para mantener la memoria caché debajo de su tamaño máximo.
  • Invalidaciones de tiempo de espera: también se trata de una estadística agregada y rastrea el número de entradas que se eliminaron porque excedieron el tiempo de espera.
  • Invalidaciones explícitas: también es una estadística agregada, rastrea el número de entradas que se eliminaron con la invalidación directa mediante clave, ID de dependencia o plantilla.
  • Stats ampliados: el proveedor de memoria caché dinámica de eXtreme Scale exporta las siguientes series de clave stat ampliada.
    • com.ibm.websphere.xs.dynacache.remote_hits: el número total de coincidencias de memoria caché en el contenedor eXtreme Scale. Se trata de una estadística agregada y su valor en la correlación de stats ampliados es long.
    • com.ibm.websphere.xs.dynacache.remote_misses: el número total de faltas de coincidencia de la memoria caché rastreadas en el contenedor eXtreme Scale. Una estadística agregada, su valor en la correlación de stats ampliados es long.

Informando de las estadísticas de restablecimiento

El proveedor de memoria caché dinámica le permite restablecer las estadísticas de memoria caché. Con el proveedor predeterminado, la operación restablecer sólo borra las estadísticas en el servidor afectado. El proveedor de memoria caché dinámica eXtreme Scale rastrea la mayoría de sus datos estadísticos en los contenedores de la memoria caché remota. Estos datos no se borran ni modifican cuando se restablecen las estadísticas. En lugar de esto, el comportamiento de la memoria caché dinámica predeterminada se simula en el cliente informando de la diferencia entre el valor actual de una estadística determinada y el valor de dicha estadística la última que se llamó a la operación restablecer en dicho servidor.

Por ejemplo, si el tráfico en el servidor A genera 10 supresiones de memoria caché, las estadísticas en el servidor A y en el servidor B informarán de 10 supresiones. Ahora, si las estadísticas en el servidor B se restablecen y el tráfico en el servidor A genera 10 supresiones adicionales, las estadísticas en el servidor A informarán de 20 supresiones y los stats en el servidor B informarán de 10 supresiones.

Sucesos de la memoria caché dinámica

La API de memoria caché dinámica permite a los usuarios registrar escuchas de sucesos. Cuando se utiliza eXtreme Scale como el proveedor de memoria caché dinámica, los escuchas de sucesos funcionan como se esperaba para las memorias caché locales.

Para las memorias caché distribuidas, el comportamiento del sucesos dependerá de la topología que se utiliza. Para las memorias caché que utilizan la topología incorporada, los sucesos se generarán en el servidor que maneja las operaciones de escritura, también conocidas como el fragmento primario. Esto significa que sólo un servidor recibirá notificaciones de suceso, pero tendrá todas las notificaciones de suceso esperadas normalmente del proveedor de memoria caché dinámica. Puesto que WebSphere eXtreme Scale elige el fragmento primario en el tiempo de ejecución, no es posible garantizar que un proceso de servidor determinado reciba siempre estos sucesos.

Las memorias caché incorporadas con particiones generarán sucesos en cualquier servidor que aloje una partición de la memoria caché. Si una memoria caché tiene 11 particiones y cada servidor de una cuadrícula de 11 servidores de WebSphere Application Server Network Deployment aloja una de estas particiones, cada servidor recibirá los sucesos de la memoria caché dinámica para las entradas de memoria caché que aloja. Ningún proceso de servidor único verá toda la información de todos los sucesos, a menos que las 11 particiones estuvieran alojadas en dicho proceso de servidor. Del mismo modo que la topología incorporada, no es posible garantizar que un proceso de servidor determinado vaya a recibir un conjunto determinado de sucesos o cualquier suceso.

Las memorias caché que utilizan la topología remota no soportan los sucesos de memoria caché dinámica.

Llamadas de MBean

El proveedor de la memoria caché dinámica WebSphere eXtreme Scale no soporta la memoria caché de disco. Cualquier llamada de MBean relacionadas con la memoria caché de disco no funcionará.

Correlación de políticas de duplicación de memoria caché dinámica

El proveedor de memoria caché dinámica incorporada de WebSphere Application Server soporta varias políticas de duplicación de memoria caché. Estas políticas se pueden configurar de forma global o en cada entrada de memoria caché. Consulte la documentación de la memoria caché dinámica si desea una descripción de de estas políticas de duplicación.

El proveedor de memoria caché dinámica eXtreme Scale no permite estas políticas directamente. Las características de duplicación de una memoria caché se determinan a través del tipo de topología distribuida de eXtreme Scale configurado y se aplica a todos los valores colocados en dicha memoria caché, independientemente de la política de duplicación establecida por el servicio de memoria caché dinámica en la entrada. A continuación, aparece una lista de todas las políticas de duplicación soportadas por el servicio de memoria caché dinámica e ilustra que topología eXtreme Scale proporciona características de duplicación similares.

Tenga en cuenta que el proveedor de memoria caché dinámica eXtreme Scale ignora los valores de la política de duplicación DRS en una memoria caché o en una entrada de memoria caché. Los usuarios deben elegir la topología que sea apropiada para sus necesidades de duplicación.

  • NOT_SHARED: actualmente ninguna de las topologías proporcionadas por el proveedor de memoria caché dinámica eXtreme Scale puede aproximarse a esta política. Esto significa que todos los datos almacenados en la memoria caché deben tener claves y valores que implementen java.io.Serializable.
  • SHARED_PUSH: la topología incorporada se aproxima a esta topología de duplicación. Cuando se crea una entrada de memoria caché, se duplica en todos los servidores. Los servidores sólo buscan las entradas de memoria caché localmente. Si no se encuentra una entrada de forma local, se da por supuesto que no existe y que no se consulta a otros servidores en relación con esta.
  • SHARED_PULL y SHARED_PUSH_PULL: la topología incorporada particionada y la topología remota se aproximan a esta política de réplica. El estado distribuido de la memoria caché es completamente coherente entre todos los servidores.

Esta información se proporciona principalmente para que pueda garantizar que la topología cumple con sus necesidades de coherencia distribuida. Por ejemplo, si la topología incorporada es una mejor opción para sus necesidades de despliegue y rendimiento, pero necesita el nivel de coherencia de memoria caché proporcionado por SHARED_PUSH_PULL, considere utilizar la topología incorporada con particiones, aunque el rendimiento pueda disminuir ligeramente.

Seguridad

Puede proteger las instancias de memoria caché dinámica que se ejecutan en las topologías incorporada e incorporada con particiones con las funciones de seguridad incorporadas en WebSphere Application Server. Consulte la documentación en Protección de servidores de aplicaciones en el centro de información de WebSphere Application Server.

Cuando se ejecuta una memoria caché en la topología remota, es posible para un cliente autónomo de eXtreme Scale para conectarse a la memoria caché y afecta a los contenidos de la instancia de la memoria caché dinámica. El proveedor de la memoria caché dinámica eXtreme Scale tiene una característica de cifrado de sobrecarga baja que puede impedir que los clientes no WebSphere Application Server lean o modifiquen los datos de la memoria caché. Para habilitar esta característica, establezca el parámetro opcional com.ibm.websphere.xs.dynacache.encryption_password en el mismo valor en todas las instancias de WebSphere Application Server que accedan al proveedor de memoria caché dinámica. Así se cifrará el valor y los metadatos de usuario para la CacheEntry que utiliza el cifrado AES de 128 bits. Es muy importante que se establezca el mismo valor en todos los servidores. Los servidores no podrán leer los datos colocados en la memoria caché por los servidores con un valor diferente para este parámetro.

Si el proveedor eXtreme Scale detecta que se han establecido distintos valores para esta variable en la misma memoria caché, genera un aviso en el registro del proceso del contenedor eXtreme Scale.

Consulte la documentación de eXtreme Scale sobre Visión general de seguridad si se requiere autenticación SSL o de cliente.

Información adicional