Configuración de la invalidación de la memoria caché remota
Mediante Apache Kafka y Apache ZooKeeper, puede ejecutar la invalidación de memoria caché desde HCL Commerce Transaction server o de forma remota desde un servidor Liberty. Puede habilitar y personalizar esta característica al editar los archivos de configuración de HCL Commerce.
Antes de empezar
crsApp:
enabled: true
name: crs-app
image: commerce/crs-app
tag: v9-latest
replica: 1
resources:
requests:
memory: 2048Mi
cpu: 500m
limits:
memory: 4096Mi
cpu: 2
## when using custom envParameters, use key: value format
envParameters:
auth:
ZOOKEEPER_SERVERS: my-kafka-zookeeper.kafka.svc.cluster.local:2181
KAFKA_SERVERS: my-kafka.kafka.svc.cluster.local:9092
KAFKA_TOPIC_PREFIX: sample
live:
ZOOKEEPER_SERVERS: my-kafka-zookeeper.kafka.svc.cluster.local:2181
KAFKA_SERVERS: my-kafka.kafka.svc.cluster.local:9092
KAFKA_TOPIC_PREFIX: sample
nodeLabel: ""
fileBeatConfigMap: ""
nodeSelector: {}
coresSharingPersistentVolumeClaim: ""
- KAFKA_SERVERS=<kafkaServerHostOrIPList>
- KAFKA_TOPIC_PREFIX=<kafkaTopicPrefix>
- KAFKA_AUTHENTICATION_USERID=<kafkaAuthenticationUserID>
- KAFKA_AUTHENTICATION_PASSWORD=<kafkaAuthenticationPassword>
run set-kafka-server <KafkaServers> <TopicPrefix> <ZookeeperServers>"https://help.hcltechsw.com/commerce/9.0.0/developer/refs/rre_transaction.html
Si la cadena <KafkaServers> empieza por (no-crs)
, Transaction server no publicará los mensajes de invalidación pensados para que los reciba el Store server.
DB2
y TS-App
, están en zonas horarias separadas al establecer Kafka/ Zookeeper en la versión 9, es posible que las invalidaciones no se produzcan correctamente. En las propiedades de Kafka, asegúrese de lo siguiente: log.message.timestamp.type = LogAppendTime
. De forma predeterminada, el valor se establece en log.message.timestamp.type = CreateTime
.La contraseña de autenticación de Kafka debe ser la cadena cifrada utilizando wcs_encrypt password
. La cadena cifrada ASCII debe guardarse en el archivo de configuración, junto con la contraseña del Sasl de los servidores Kafka.
Por qué y cuándo se efectúa esta tarea
Procedimiento
- Abra WebSphere Commerce Developer y cambie a la vista Explorador de empresa.
-
Vaya al siguiente directorio y abra el archivo de configuración personalizada Transaction server wc-component.xml para editarlo.
workspace_dir\WC\xml\config\com.ibm.commerce.foundation-ext .
Si el archivo de directorio o configuración no existe, deberá crearlos.
-
Localice el parámetro wc.store.remote.kafka de la agrupación de configuración de
RemoteStoreConfiguration
. Añada las direcciones de los clústeres de intermediario de Apache Kafka, como una cadena separada por comas, al atributo value. Establezca los números de puerto según el entorno local. Por ejemplo:<_config:configgrouping name="RemoteStoreConfiguration"> ... <!-- value to kafka servers connection string --> <_config:property name="wc.store.remote.kafka" value="kafka-broker1:9092,kafka-broker2:9092,kafka-broker3:9092"/> ... </_config:configgrouping>
-
Localice el parámetro wc.store.remote.kafka.topicPrefix en la misma agrupación de configuración. Añada el prefijo de tema para la invalidación de memoria caché. Esta cadena contiene el mismo valor que el prefijo configurado en el servidor de tienda remoto. El valor debe ser el mismo en los servidores de transacción.
<!-- value to kafka servers topic prefix --> <_config:property name="wc.store.remote.kafka.topicPrefix" value="sampleprefix"/>
-
Localice el parámetro wc.remote.zookeeper de la agrupación de configuración
TransactionKafkaConfiguration
. Añada las direcciones de los servidores Apache ZooKeeper, como una cadena separada por comas, al atributo value . Establezca los números de puerto según el entorno local. Por ejemplo:<_config:configgrouping name="TransactionKafkaConfiguration"> ... <_config:property name="wc.remote.zookeeper" value="zookeeper1:2181,zookeeper2:2181,zookeeper3:2181/kafka"/> ... </_config:configgrouping>
- Guarde y cierre el archivo de configuración personalizado.
-
Vaya al siguiente directorio.
workspace_dir\Liberty\servers\crsServer\configDropins\overrides
- Edite el archivo de configuración personalizado jndi.xml. Si el archivo no existe, créelo.
-
Añada la cadena de configuración para los servidores ZooKeeper al atributo jndiName del elemento
jndiEntry
. El valor es el mismo que la serie de configuración ZooKeeper en Transaction server.<jndiEntry jndiName="com.ibm.commerce.foundation.server.services.zookeeper.hostnameport" value=""/>
-
Añada la cadena del prefijo del tema. Este valor es el mismo que la cadena del prefijo del tema en Transaction server.
<jndiEntry jndiName="com.ibm.commerce.foundation.server.services.cacheinvalidation.topicprefix" value=" "/>
- Guarde y cierre el archivo de configuración personalizado.
- Despliegue los cambios en el entorno de ejecución de HCL Commerce.
- Lea acerca de enfoques comprobados
- Consulte ¿Zookeeper necesita mantenimiento? en el blog de HCL y la documentación de Apache Kafkapara obtener consejos y programas de utilidad que pueden ayudarle a optimizar la configuración.
- Configurar retención de mensajes
- La retención de mensajes predeterminada es de 7 días, lo que es muy excesivo cuando todos los mensajes ya no son necesarios después de que todas las aplicaciones hayan procesado invalidaciones de memoria caché. Un tiempo de retención de 10 minutos es suficiente para la mayoría de configuraciones.
- Inhabilitar configuración automática de temas
- De forma predeterminada, si se envía un mensaje a un tema que todavía no está configurado, Kafka lo creará automáticamente. Este enfoque hace que configuraciones como retención de mensajes y factor de réplica no se configuren, lo que puede causar problemas de interrupción. Para evitar estos problemas, inhabilite la configuración automática de los temas. Esto fuerza al cliente a configurar temas con los parámetros que ha definido.
- Utilizar réplicas
- Las réplicas proporcionan una alta disponibilidad. Por ejemplo, con dos intermediarios, la configuración puede ser la siguiente:
CacheInvalidation leader: broker0 replica: broker1 PeerCacheInvalidation leader: broker1 replica: broker0
- Optimizar las configuraciones de los productores
- Utilice los valores siguientes con los productores:
Para obtener más información, consulte 3.3 Configuraciones de productor en la documentación de Apache Kafka.//acks=all, This means the leader will wait for the full set of in-sync replicas to acknowledge the record. //This guarantees that the record will not be lost as long as at least one in-sync replica remains alive. configValues.put(ProducerConfig.ACKS_CONFIG, "all"); // Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error. configValues.put(ProducerConfig.RETRIES_CONFIG, 0); //The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. configValues.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384); //LINGER_MS_CONFIG, This setting gives the upper bound on the delay for batching. configValues.put(ProducerConfig.LINGER_MS_CONFIG, 1); //buffer.memory, The total bytes of memory the producer can use to buffer records waiting to be sent to the server. configValues.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);
- Optimizar las configuraciones de los consumidores
- Utilice los valores siguientes con los consumidores:
Para obtener más información, consulte 3.4 Consumer Configs en la documentación de Apache Kafka.//ENABLE_AUTO_COMMIT_CONFIG : If true, periodically commit to Kafka the offsets of messages already returned by the consumer. configValues.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true"); // AUTO_OFFSET_RESET_CONFIG : earliest: automatically reset the offset to the earliest offset configValues.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
Ejemplo
Qué hacer a continuación
- DistributedMaps en Transaction server
-
- WCSessionDistributedMapCache
- WCCatalogEntryDistributedMapCache
- WCCatalogGroupDistributedMapCache
- WCMiscDistributedMapCache
- WCUserDistributedMapCache
- WCPriceDistributedMapCache
- WCMarketingDistributedMapCache
- WCPromotionDistributedMapCache
- WCContractDistributedMapCache
- WCTelesalesDistributedMapCache
- WCSystemDistributedMapCache
- WCFlexFlowDistributedMapCache
- WCRESTTagDistributedMapCache
- WCSEOURLKeyword2URLTokenDistributedMapCache
- wCSEOURLToken2URLKeywordDistributedMapCache
- WCSEORedirectRulesDistributedMapCache
- WCSEOURLDistributedMapCache
- WCWidgetDefinitionDistributedMapCache
- WCLayoutDistributedMapCache
- WCSEOPageDefinitionDistributedMapCache
- WCPR_Cache
- DistributedMaps en el servidor de tienda
-
- WCFlexFlowDistributedMapCache
- WCStoreDistributedMapCache
- WCSEORedirectRulesDistributedMapCache
- WCSEOURLDistributedMapCache
- WCSEOURLToken2URLKeywordDistributedMapCache
- WCSEOURLKeyword2URLTokenDistributedMapCache
- WCRESTTagDistributedMapCache
- WCLayoutDistributedMapCache