java memcached terracotta gigaspaces datagrid

¿Qué recomendarías para una tecnología de grid de datos Java a gran escala: Terracotta, GigaSpaces, Coherence, etc.?



memcached datagrid (4)

He estado leyendo sobre las llamadas soluciones de "cuadrícula de datos" para la plataforma Java, que incluyen Terracotta, GigaSpaces y Coherence. Me preguntaba si alguien tiene experiencia en el mundo real trabajando con cualquiera de estas herramientas y podría compartir su experiencia. También tengo mucha curiosidad por saber con qué escala de implementación han trabajado las personas: ¿estamos hablando de clústeres de 2 o 4 nodos o hemos trabajado con algo significativamente más grande que eso?

Me siento atraído por Terracotta debido a su soporte "drop in" para Hibernate y Spring, los cuales usamos mucho. También me gusta la idea de cómo decora bytecode en función de la configuración y no requiere que programes contra una "API de grilla". No conozco ninguna ventaja para las herramientas que usan el enfoque de una API explícita, pero me encantaría escuchar sobre ellas si es que realmente existen. :)

También he dedicado tiempo a leer sobre memcached, pero estoy más interesado en escuchar comentarios sobre estas tres soluciones específicas. Sentiría curiosidad por saber cómo se comparan con los memcached en caso de que alguien haya usado ambos.


La biblioteca que elija realmente depende de su aplicación y de lo que esté tratando de lograr.

Trabajé para una tienda que usaba Coherence para proporcionar escalabilidad (y redundancia, más o menos) para sus aplicaciones web. Descubrimos que debe tener entre 4 y 5 nodos para comenzar a obtener beneficios de la coherencia (2 o 3 nodos reducen potencialmente el rendimiento). Creo que los documentos de Oracle dicen que necesitas muchos nodos (más de 30) para obtener realmente un beneficio con Coherence. Si va con Coherence, asegúrese de configurar su hardware correctamente, es muy sensible a la latencia.

Personalmente, me mantendría alejado de un material "sin cita". Podrían darle algo para empezar, pero eventualmente se encontrará con problemas de sincronización o rendimiento y tendrá que comenzar a escribir código específico para su capa de cuadrícula de todos modos. Básicamente, conoce su aplicación mejor que la biblioteca, y podrá determinar qué elementos deben estar en caché, cuánto tiempo necesitan para vivir, cómo se usará su aplicación, etc.


No tengo suficiente experiencia con estas tecnologías, pero creo que Apache Hadoop ha demostrado ser escalable y confiable. Yahoo lo ejecutó en un clúster Linux de 10.000 núcleos .

Está basado en el algoritmo Google MapReduce .

Este artículo describe MapReduce y por qué debería preocuparse por él.


Teníamos 50 servidores que ejecutaban una aplicación de servicio web y todos estos servidores se balanceaban usando bigIP. El requisito era almacenar en caché cada estado de usuario para que los estados subsiguientes no vuelvan a hacer el mismo procesamiento y obtengan los datos del estado anterior. De esta forma, el cliente del servicio web no necesita mantener el estado.

Usamos Terracotta para almacenar en caché los estados y nunca tuvimos problemas de rendimiento. En los momentos pico, la cantidad de solicitud solicitada es de 100 por segundo.


Es posible que desee comprobar Hazelcast también. Hazelcast es una implementación transaccional, distribuida / particionada de código abierto de cola, tema, mapa, conjunto, lista, bloqueo y servicio del ejecutor. Es muy fácil trabajar con él; simplemente agrega hazelcast.jar en tu classpath y comienza a codificar. Casi no se requiere configuración.

Hazelcast se lanza bajo la licencia de Apache y el soporte de grado empresarial también está disponible. El código está alojado en Google Code .