2011-08-04 14 views
8

Actualmente tenemos 2 servidores de aplicaciones, cada uno tiene un caché de nivel de aplicación y tiene un servidor de base de datos centralizado. Para mantener la caché de la aplicación de ambos servidores sincronizada, hemos configurado el intermediario JMS en el medio. En caché, borre en un servidor que envíe el mensaje a JMS, ya que se registrará otro para que reciba el mensaje y borre la entrada particular según el contenido del mensaje.servidor de caché centralizado. (Ehcache o Hazelcast)

Dado que este sistema de mensajes agrega latencia al borrar la entrada de la memoria caché, durante cierto tiempo habrá inconsistencia entre las cachés de nivel de la aplicación.

Así que pensamos en tener un servidor de caché centralizado para evitar todo este trabajo adicional para mantener todas las cachés sincronizadas.

Estamos pensando en el uso de Ehcache/o terracotaHazelcast, estos conjuntos de resultados de retención de caché, las cerraduras de información, y algunos varaibles específicos del sistema.

Por favor sugiera la mejor solución de caché para nosotros.

Respuesta

1

Hemos estado utilizando el servidor centralizado Memcached (como Hibernate de segundo nivel y otros requisitos de almacenamiento en caché) y funciona bien para nosotros. Estamos utilizando Memcached con el cliente XMemcached y hasta ahora funciona sin ningún problema.

+1

Cualquier cliente de Memcache se puede usar para almacenar cosas en los nodos Hazelcast. Hazelcast admite el protocolo de Memcache fuera de la caja. –

9

que probablemente no puede sugerir la mejor solución para usted, pero voy a tratar de dar algunas ideas:

Hazelcast: ofrece muy fácil de usar mapa distribuido (y mucho de otras cosas vale la pena échale un vistazo - la consulta SQL distribuida es muy clara):

Map<String, Object> map = Hazelcast.getMap("xxx"); 

y listo. Trabaja en el mapa usando API estándar. Hazelcast config/setup es bastante fácil (en comparación con Ehcache/TC). La aplicación web de supervisión también es fácil de usar y útil, pero faltan elementos. El rendimiento debería ser más que suficiente para un clúster pequeño (como sus 2 servidores).

Ehcache/Terracotta: introduciría un nuevo componente de infraestructura en su configuración (Terracotta Server) - puede ser un inconveniente. Usar esta configuración es en mi experiencia bastante intensa en términos de cosas que aprender y probar. La promesa es el rendimiento a nivel de clase empresarial y las instalaciones de monitoreo.

Si no tiene requisitos de alto rendimiento extremo yo personalmente iría por Hazelcast y evitaría la complejidad de Ehcache/TC.

+1

Estoy de acuerdo con jeha. Además, Hazelcast ofrece una hábil capacidad de subprocesamiento remoto que se entrega de forma muy precisa en las operaciones de clúster y funciona muy bien con JMX. Hemos estado muy contentos con Hazelcast. – ecodan