integración de la versión 9 de HCL Commerce con Websphere eXtreme Scale

Integre con WebSphere eXtreme Scale para mejorar el rendimiento de gran volumen.

Visión general

Antes de decidir integrar HCL Commerce con WebSphere eXtreme Scale, revise las ventajas de la integración, los requisitos y los pasos de configuración necesarios. Para la versión 9.0.0.7 y posteriores de IBM HCL Commerce, puede integrar con IBM WebSphere eXtreme Scale para mejorar el rendimiento en su implementación de gran volumen. El programa bajo licencia de WebSphere eXtreme Scale es una cuadrícula de datos elástica, escalable y en memoria que se puede utilizar como memoria caché avanzada para WebSphere Commerce. WebSphere eXtreme Scale procesa un volumen de transacciones masivo con una alta eficacia y escalabilidad lineal. La integración con WebSphere eXtreme Scale puede proporcionar ventajas significativas de rendimiento para clientes de HCL Commerce con gran volumen.

WebSphere eXtreme Scale se ha utilizado en las versiones 7.x y 8.x de HCL Commerce como proveedor de memoria caché externa.

Requisitos previos

Para integrar WebSphere eXtreme Scale con HCL Commerce, son necesarias las siguientes versiones:
  • La versión necesaria de WebSphere eXtreme Scale Server es la 8.6.1.2 o posterior. Desde esta versión, los clientes de WebSphere eXtreme Scale que se ejecutan tanto en WebSphere Application Server como en WebSphere Application Server Liberty tradicionales pueden acceder simultáneamente al mismo WebSphere eXtreme Scale Server.
  • La versión necesaria de HCL Commerce es la 9.0.0.7 o posterior. A partir de esta versión, el cliente de WebSphere eXtreme Scale se empaqueta en el Docker del servidor de aplicaciones (para el servidor de transacciones, el servidor de tienda y el servidor de búsqueda de HCL Commerce).
Además, debe seleccionar una instancia de memoria caché para WebSphere eXtreme Scale. La memoria caché interna de WebSphere Commerce se desarrolla utilizando la API DynaCache de WebSphere Application Server y se organiza por instancias de memoria caché. WebSphere eXtreme Scale proporciona soporte transparente para la API DynaCache, de modo que se puede utilizar como proveedor de memoria caché para cualquier instancia de memoria caché de HCL Commerce.
Importante: No incluya todas las instancias de memoria caché en WebSphere eXtreme Scale. Si sitúa instancias inadecuadas de memoria caché en WebSphere eXtreme Scale, puede provocar la pérdida de funcionalidad o problemas de rendimiento graves. Las instancias de memoria caché son adecuadas para que se pongan en WebSphere eXtreme Scale en las siguientes circunstancias:
  • El coste de pérdida de memoria caché es mucho mayor que el coste de aciertos de memoria caché, lo que significa que mejorar la proporción de aciertos de memoria caché puede mejorar significativamente el rendimiento.
  • El objeto de la memoria caché tiene un tamaño grande o el número total de entradas de la memoria caché es muy grande (por ejemplo, millones de entradas). En este caso, almacenar la instancia de memoria caché en la máquina local virtual Java de servidor de aplicaciones requiere un tamaño de almacenamiento dinámico muy grande.
  • Cuando no son frecuentes los sucesos de invalidación de memoria caché, lo que significa que no hay un gran número de llamadas de invalidación emitidas a WebSphere eXtreme Scale.
Los criterios utilizados para determinar si una instancia de memoria caché es adecuada para su uso en WebSphere eXtreme Scale vienen determinados por el patrón de carga de trabajo real. Por lo tanto, debe realizar pruebas de rendimiento para determinar si una instancia de memoria caché es adecuada para WebSphere eXtreme Scale. Algunas instancias de memoria caché (por ejemplo, services/cache/SearchCatHierarchyDistributedMapCache en el servidor de búsqueda) utilizan un origen de datos que no está almacenado centralmente (es decir, no es una base de datos). Este tipo de instancia de memoria caché no debe ponerse en WebSphere eXtreme Scale para evitar un problema de invalidación de memoria caché.
Antes de empezar
Aunque el cliente de WebSphere eXtreme Scale está empaquetado en los contenedores de Docker de la aplicación, la conexión de WebSphere eXtreme Scale no está habilitada de forma predeterminada. Para habilitar la integración de WebSphere eXtreme Scale, debe seguir los pasos de configuración de esta guía de aprendizaje.
Además, hay mandatos Run Engine en HCL Commerce que pueden simplificar el procedimiento de configuración si crea un contenedor de Docker personalizado.
Importante: Estos mandatos se pueden ejecutar durante la prueba o la creación de una imagen de Docker personalizada, pero estos mandatos no deben ejecutarse en un contenedor de producción.

Procedimiento

1. Configuración del servidor de transacciones

El procedimiento para configurar el servidor de transacciones es diferente del que se utiliza para configurar el servidor de búsqueda y el servidor de tienda, ya que el entorno del servidor es WebSphere Application Server tradicional en lugar de Liberty.

  1. Ejecute el mandato Run Engine create-xs-domain para crear un dominio de WebSphere eXtreme Scale. El puerto y el nombre de host del servidor de catálogo de WebSphere eXtreme Scale son necesarios para ejecutar el mandato Run Engine create-xs-domain. Por ejemplo:
    run create-xs-domain test.cn.ibm.com 2809

    En este ejemplo, test.cn.ibm.com es el nombre de host del servidor de catálogo de WebSphere eXtreme Scale y 2809 es el puerto de escucha.

    Este paso crea el archivo de configuración catalogservice.xml en el repositorio de configuración de WebSphere Application Server tradicional.

    Nota: Ejecute el paso 1 una sola vez.
  2. Conecte la instancia de memoria caché específica a WebSphere eXtreme Scale. Necesita el nombre de la instancia de memoria caché de Java Naming and Directory Interface y el nuevo tamaño de memoria caché para ejecutar el mandato Run Engine connect-basecache-wxs.
    • Para BaseCache, llame a connect-basecache-wxs. Por ejemplo:
      run connect-basecache-wxs 5000
      En este ejemplo, 5000 es el nuevo tamaño de memoria caché para baseCache. El archivo de configuración baseCache es server.xml y el archivo de configuración para otras instancias de memoria caché es resources-pme502.xml.
      Nota: El mandato para baseCache es diferente para otras instancias de la memoria caché, porque el archivo de configuración que se actualiza es diferente.
    • Para otras instancias de memoria caché, llame a connect-objectcache-wxs. Por ejemplo:
      run connect-objectcache-wxs services/cache/WCLayoutDistributedMapCache 1000
      En este ejemplo, services/cache/WCLayoutDistributedMapCache es la instancia de memoria caché de destino de Java Naming and Directory Interface y 1000 es el nuevo tamaño de memoria caché.

      Debe especificar el nuevo tamaño de memoria caché cuando se conecta una instancia de memoria caché específica a WebSphere eXtreme Scale porque el cálculo de número de entrada de memoria caché total es diferente cuando se utiliza el proveedor de memoria caché predeterminado (local) que cuando se utiliza el proveedor de memoria caché de WebSphere eXtreme Scale. Cuando se utiliza el proveedor de memoria caché predeterminado, el número de entrada de memoria caché total solo se determina mediante el parámetro CacheSize de la instancia de memoria caché.

      Cuando se utiliza el proveedor de memoria caché de WebSphere eXtreme Scale, el número de entrada de memoria caché total es igual a CacheSize*Partition-number/Replica-number. En este escenario, Patition-number y Replica-number están determinados por la configuración del lado de WebSphere eXtreme Scale Server.

      Por lo tanto, cuando se sitúa una instancia de memoria caché en WebSphere eXtreme Scale, el parámetro CacheSize se debe ajustar de acuerdo con la configuración del lado del servidor de WebSphere eXtreme Scale.
      Importante: La omisión de la especificación de tamaño de memoria caché puede causar un comportamiento inesperado, como un error de memoria agotada en WebSphere eXtreme Scale Server.

      Además, en este procedimiento, el paso 2 solo pone una instancia de memoria caché en WebSphere eXtreme Scale. Si necesita poner varias instancias de memoria caché en WebSphere eXtreme Scale, ejecute el paso 2 una vez por cada instancia de memoria caché necesaria.

    Este es un archivo de Docker de ejemplo para personalizar la imagen de Docker del servidor de transacciones aprovechando los mandatos Run Engine para habilitar la integración de WebSphere eXtreme Scale:
    FROM repname/library/ts-app:tsapp
    
    RUN run create-xs-domain test.cn.ibm.com 2809 && \
    
    run connect-basecache-wxs 2000 && \
    
    run connect-objectcache-wxs services/cache/DM_UserCache 10000 && \
    
    run connect-objectcache-wxs services/cache/WCPriceDistributedMapCache 5000 && \
    
    ...

2. Configuración del servidor de búsqueda y del servidor de tienda

El procedimiento para configurar el servidor de búsqueda y el servidor de tienda es diferente del que se utiliza para configurar el servidor de transacciones, porque el entorno del servidor es Liberty en lugar de WebSphere Application Server tradicional.

  1. Habilite la característica de memoria caché elástica. El puerto y el nombre de host del servidor de catálogo de WebSphere eXtreme Scale son necesarios para ejecutar el mandato Runtime Engine enable-xs-feature. Por ejemplo:
    run enable-xs-feature test.cn.ibm.com 2809
    En este ejemplo, test.cn.ibm.com es el nombre de host del servidor de catálogo de WebSphere eXtreme Scale y 2809 es el puerto de escucha.

    Este paso crea un archivo de configuración (elasticCache.xml) en la carpeta Liberty configDropins. El contenido del archivo incluye la habilitación de la característica elasticCacheClient-1.0 y la definición de un valor predeterminado elasticCacheClient (con el nombre y puerto de host de WebSphere eXtreme Scale especificado).

  2. Conecte la instancia de memoria caché específica a WebSphere eXtreme Scale. El nombre de instancia de memoria caché de la interfaz de Java Naming Directory Interface Cache y el nuevo tamaño de la memoria caché son necesarios para ejecutar los mandatos Run Engine connect-searchcache-wxs y connect-crscache-wxs.
    • Para el servidor de búsqueda, llame a connect-searchcache-wxs. Por ejemplo:
      run connect-searchcache-wxs services/cache/SearchFacetDistributedMapCache 2000
      En este ejemplo, services/cache/SearchFacetDistributedMapCache es el nombre de la instancia de memoria caché de destino de Java Naming Directory Interface y 2000 es el nuevo tamaño de memoria caché.
      Nota: El mandato para el servidor de búsqueda es diferente al mandato para el servidor de tienda porque el patrón de configuración en el archivo de configuración es distinto.
    • Para el servidor de tienda, llame a connect-crscache-wxs. Por ejemplo:
      run connect-crscache-wxs services/cache/WCLayoutDistributedMapCache 2000
      En este ejemplo, services/cache/WCLayoutDistributedMapCache es el nombre de la instancia de memoria caché de destino de Java Naming Directory Interface y 2000 es el nuevo tamaño de memoria caché.
      Nota: A diferencia del servidor de transacciones, no se diferencia entre baseCache y otras instancias de memoria caché. Por lo tanto, se utiliza el mismo mandato Run Engine tanto para el servidor de búsqueda como para el servidor de tienda, y el nombre de baseCache de Java Naming Directory Interface es baseCache.
    Este es un archivo de Docker de ejemplo para personalizar la imagen de Docker del servidor de búsqueda aprovechando los mandatos Run Engine para habilitar la integración de WebSphere eXtreme Scale:
    FROM repname/library/search-app:searchapp
    
    RUN run enable-xs-feature test.cn.ibm.com 2809 && \
    
    run connect-searchcache-wxs services/cache/SearchFacetDistributedMapCache 2000 && \
    
    ...
    Este es un archivo de Docker de ejemplo para personalizar la imagen de Docker del servidor de tienda aprovechando los mandatos Run Engine para habilitar la integración de WebSphere eXtreme Scale:
    FROM repname/library/crs-app:crsapp
    
    RUN run enable-xs-feature test.cn.ibm.com 2809 && \
    
    run connect-crscache-wxs baseCache 2000 && \
    
    run connect-crscache-wxs services/cache/WCLayoutDistributedMapCache 1000 && \
    
    ...

3. Configuración avanzada

Cuando ejecute los pasos de configuración básicos (paso 1 y paso 2), todas las instancias de memoria caché se introducen en la cuadrícula de WebSphere eXtreme Scale predeterminada denominada DYNACACHE_REMOTE. Las dinstintas instancias de memoria caché se colocan en correlaciones diferentes y el patrón de nombre es IBM_DC_PARTITIONED_ más el nombre de instancia de memoria caché.

Basándose en el rendimiento u otras consideraciones, puede poner instancias de memoria caché en una cuadrícula y en una correlación determinadas de WebSphere eXtreme Scale. En este escenario, se necesitan dos parámetros más cuando se ejecutan los mandatos Run Engine para el paso 2.

Por ejemplo:
run connect-searchcache-wxs services/cache/SearchFacetDistributedMapCache 2000 searchGrid MapA
En este ejemplo, searchGrid es el GridName de destino y MapA es el MapName de destino.

Limitaciones

Estas suposiciones se establecieron durante el desarrollo de los mandatos Run Engine, lo que puede limitar el uso de los mandatos. Para eludir estas limitaciones, debe configurar HCL Commerce de forma diferente (por ejemplo, actualizando directamente el archivo de configuración).

Invalidación de memoria caché entre el servidor de transacciones y el servidor de tienda
Cuando una instancia de memoria caché del servidor de tienda se sitúa en WebSphere eXtreme Scale, también se debe poner la instancia de memoria caché correspondiente (con el mismo nombre de Java Naming Directory Interface) del servidor de transacciones en WebSphere eXtreme Scale (utilizando el mismo servidor de catálogo, la misma cuadrícula y la misma correlación). De lo contrario, el contenido de la memoria caché generado por el servidor de tienda no se puede invalidar correctamente mediante un mensaje de invalidación desde el servidor de transacciones.
Limitación única de servidor de catálogo de WebSphere eXtreme Scale
La implementación actual del mandato Run Engine solo crea un servidor de catálogo de WebSphere eXtreme Scale predeterminado (nombre de host y puerto) en el archivo de configuración. Por lo tanto, todas las instancias de la memoria caché deben acceder al mismo servidor de catálogo de WebSphere eXtreme Scale. Es posible que quiera que diferentes instancias de memoria caché accedan a distintos servidores de catálogo de WebSphere eXtreme Scale para atender la alta disponibilidad. En esta situación, puede implementarlo utilizando una IP virtual o un DNS dinámico. Sin embargo, si desea especificar un nombre de host de WebSphere eXtreme Scale Server diferente para instancias de memoria caché distintas, solo puede hacerlo en el entorno de Liberty para el servidor de tienda y el servidor de búsqueda. Además, es necesario modificar directamente el archivo de configuración para crear varias entradas de elasticCacheClient .
Limitación en el uso de gridName y mapName en el entorno de Liberty
Para la configuración avanzada en el entorno de Liberty, los parámetros gridName y mapName deben ser exclusivos. Esto significa que no puede poner en la misma cuadrícula no predeterminada dos instancias de memoria caché diferentes del servidor de búsqueda o del servidor de tienda.
Nota: No existe una limitación similar para el servidor de transacciones en el entorno tradicional de WebSphere Application Server.

Problemas conocidos

Excepción de captura de datos de primera anomalía en el servidor de transacciones
Para la configuración avanzada, cuando se especifica el parámetro gridName en el servidor de transacciones en un entorno tradicional de WebSphere Application Server, en el registro se produce una excepción de captura de datos de primera anomalía con respecto al parámetro gridName. Un ejemplo del mensaje de excepción es:
FFDC Exception:java.lang.NoSuchFieldException SourceId:com.ibm.ws.util.FieldInitializer ProbeId:133 Reporter:java.lang.Class@fdc0cd34

java.lang.NoSuchFieldException: grid_name

...
Esta excepción se puede ignorar porque la funcionalidad sigue en marcha y la excepción solo se produce durante el inicio del servidor.
Problema de supervisor de memoria caché en el servidor de transacciones
El supervisor de memoria caché ampliado se utiliza para analizar el comportamiento de la memoria caché en un entorno tradicional de WebSphere Application Server. Sin embargo, cuando una instancia de memoria caché utiliza WebSphere eXtreme Scale como proveedor de memoria caché no puede ver el contenido de la memoria caché (se visualiza una página en blanco), aunque no haya ningún problema en el supervisor de memoria caché de Liberty.
Para eludir este problema, extraiga el archivo contents.jsp de webCacheMonitor-1.0.tar.gz (que está empaquetado en el Docker del servidor de búsqueda y en el Docker del servidor de tienda). Este archivo se encuentra en com.ibm.ws.dynacache.cachemonitor_1.0.13.jar. Sustituya este archivo por otro con un nombre similar en el WebSphere Application Server tradicional CacheMonitor.war.
Aviso sobre la configuración de conflictos en el servidor de búsqueda y en el servidor de tienda
La configuración relacionada con WebSphere eXtreme Scale se sitúa en el archivo elasticCache.xml en la carpeta Liberty configDropins. Además, el mismo valor de configuración (por ejemplo, cacheSize) reside en el archivo de configuración predeterminado (server.xml). Un ejemplo del mensaje de aviso de configuración de conflicto en el registro de Liberty es:
com.ibm.ws.config.xml.internal.ConfigValidator A CWWKG0102I: Found conflicting settings for baseCache instance of distributedMap configuration.

Property memorySizeInEntries has conflicting values:

Value 1000 is set in file:/opt/WebSphere/Liberty/usr/servers/default/server.xml.

Value 2000 is set in file:/opt/WebSphere/Liberty/usr/servers/default/configDropins/overrides/elasticCache.xml.

Property memorySizeInEntries will be set to 2000.
Este aviso es el esperado y se puede ignorar.

Resultado

Ha integrado HCL Commerce con WebSphere eXtreme Scale para mejorar el rendimiento de la implementación de gran volumen.