2009-02-12 8 views
13

He estado leyendo sobre las llamadas soluciones de "cuadrícula de datos" para la plataforma Java, incluidas 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?¿Qué recomendarías para una tecnología de cuadrícula de datos Java a gran escala: Terracota, GigaSpaces, Coherence, etc.?

Me siento atraído por Terracotta debido a su soporte "drop in" para Hibernate y Spring, los cuales utilizamos en gran medida. 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 pasado tiempo leyendo 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.

+0

He hecho una gran JVM de servidor único (6-8 GB actualmente), usando Prevayler y Memcached para algunas cosas descargadas. Estoy muy interesado en ver qué respuestas obtienes. ¿De qué tamaño de implementación estás hablando? –

+0

La mayoría de las implementaciones que estamos viendo no son enormes (4 o menos nodos) pero realmente siento curiosidad por conocer despliegues significativamente más grandes, principalmente para ver si estas soluciones se escalan linealmente como se afirma en gran parte de su documentación. –

+1

I * always * upvote una buena pregunta de recomendar-algo, especialmente * si se han cerrado. – mtyson

Respuesta

7

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.

Utilizamos 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.

+7

100 solicitudes por segundo en 50 servidores es una carga muy baja, a menos que las solicitudes sean computacionalmente pesadas. – stivlo

2

no tengo suficiente experiencia con estas tecnologías, pero creo Apache Hadoop se prueba que es escalable y fiable. Yahoo lo ejecutó en 10,000 core Linux cluster.

Se basa en el algoritmo Google MapReduce.

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

+0

¿No crees que Hadoop es BigData y esta pregunta se ha puesto para Big-Memory (Terracotta, GigaSpaces, Coherence). Solo un pensamiento. – deadpool

3

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.

Yo personalmente me mantendría alejado de un "complemento". 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 será capaz de determinar qué elementos deben estar en caché, cuánto tiempo necesitan para vivir, cómo se usará su aplicación, etc.

8

Es posible que desee echa un vistazo a 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 libera bajo la licencia de Apache y también está disponible la compatibilidad de grado empresarial. El código está alojado en Google Code.

Cuestiones relacionadas