¿Cuál es la mejor estrategia para refactorizar un objeto Singleton a un entorno de clúster?Singleton en entorno de clúster
Usamos Singleton para almacenar en caché alguna información personalizada de la base de datos. Es principalmente de solo lectura pero se actualiza cuando se produce un evento en particular.
Ahora nuestra aplicación debe implementarse en un entorno en clúster. Por definición, cada JVM tendrá su propia instancia de Singleton. Por lo tanto, la memoria caché puede estar desincronizada entre las JVM cuando se produce un evento de actualización en un solo nodo y se actualiza su caché.
¿Cuál es la mejor manera de mantener el caché sincronizado?
Gracias.
Editar: La memoria caché se utiliza principalmente para proporcionar una lista de autocompletar (por motivos de rendimiento) a la interfaz de usuario y usamos Websphere. Así que cualquier sugerencia relacionada con Websphere es bienvenida.
¿Puedes elaborar en 2? ¿Te refieres al modelo JMS pub/subscribe? – lud0h
Sí solución 2 es esencialmente una forma de utilizar un mecanismo pub/sub para la difusión de cambios en las instancias de caché individuales. Debería crear un tema JMS que se ejecute en el servidor de aplicaciones al que está suscrito cada uno de los cachés. Cuando los datos cambian, un mensaje debe ser publicado en el tema. Cada suscriptor recibiría este mensaje y actualizaría los cachés locales en consecuencia. – pjp
Si sus datos no cambian muy a menudo, entonces elegiría la opción 1. He trabajado en varios sistemas usando este enfoque para refrescar los datos de referencia. Creo que solíamos actualizar los cachés cada 30 minutos. El período de actualización que elija obviamente se basará en cómo se utilizan sus datos de referencia. – pjp