2008-12-21 13 views

Respuesta

31

Hay varios:

Ahora no he usado todos estos pero he usado o investigado la mayoría de ellos.

GridGai ny GigaSpaces están más centrados en grid computing que en el almacenamiento en caché y (imho) más adecuados para calcular cuadrículas que cuadrículas de datos (consulte this explanation of compute vs data grids). Encuentro que GigaSpaces es una tecnología realmente interesante y tiene varias opciones de licencia, incluidas una versión gratuita y una versión completa gratuita para startups.

Coherence y Terracotta intentan tratar cachés como Maps, que es una abstracción bastante natural. He usado mucho Coherence y es un excelente producto de alto rendimiento pero no es barato. Terracota con la que estoy menos familiarizado. La documentación de Coherence me parece un poco escasa a veces, pero realmente es un producto poderoso.

OSCache He utilizado principalmente como un medio para reducir el uso de memoria y la fragmentación en las aplicaciones web de Java, ya que tiene una etiqueta JSP bastante clara. Si alguna vez ha mirado los JSP compilados, verá que realizan muchas concatenaciones de cadenas. Esta etiqueta le permite almacenar efectivamente en caché los resultados de un segmento de código JSP y HTML en una sola Cadena, lo que puede mejorar enormemente el rendimiento en algunos casos.

EHCache es una solución de almacenamiento en caché fácil que también he usado en aplicaciones web. Nunca como un caché distribuido, pero puede hacer eso. Tiendo a verlo como una solución rápida y sucia, pero ese es quizás mi prejuicio.

memcached es particularmente preventivo en el mundo de PHP (y utilizado por sitios tales como Facebook). Es una solución realmente ligera y fácil, y tiene la ventaja de que no se ejecuta en el mismo proceso y, posiblemente, tendrá mejores opciones de interoperabilidad con otras pilas de tecnología, si esto es importante para usted.

+0

Disculpe por la marca, pero su respuesta es más una descripción completa de los marcos de caché distribuidos en lugar de información sobre cómo habilitar/configurar el clúster para aplicaciones Java :-) – Karl

+0

¿Puede consultar contra cualquiera de estos (sin ir a un marco ORM completo)? – systemoutprintln

+0

No estoy seguro de entender la pregunta. ORM y el almacenamiento en caché tienen un poco en común, pero en su mayoría son objetivos diferentes. – cletus

5

Creo que el resumen de @ cletus es bastante bueno.Quería mencionar que Terracotta proporciona mucho más que solo un caché distribuido en forma de mapa. Agrupa las primitivas de sincronización y montón de Java, convirtiendo un programa Java simultáneo en un programa Java distribuido. Puede hacer el almacenamiento en caché con él (incluido el uso de versiones distribuidas de bibliotecas de caché de código abierto) o un montón de otras cosas.

Para la distribución del trabajo, hay algunas librerías adicionales escritas encima de Terracota, en particular las tim-pipes (para mensajes) y tim-masterworker (para distribución de estilo Master-Worker) son grandes abstracciones sobre Terracotta. Esta biblioteca está en la terracota Forge:

Esta página recientemente añadida puede añadir un poco de información adicional en comparación con algunas otras tecnologías de datos posibles:

2

Si quiere ir un poco más abajo, hay JGroups, que le proporciona los principios básicos de la agrupación de procesos Java.

21

Es posible que también desee consultar Hazelcast. 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.

Si usted está interesado en la ejecución de sus tareas, se puede llamar Ejecutables de una manera distribuida, después compruebe por favor hacia fuera documentación del Servicio Distribuida al Ejecutor http://code.google.com/docreader/#p=hazelcast

Hazelcast está publicado bajo licencia Apache y soporte de nivel empresarial también está disponible.

2

Otro que puede agregar a la lista es Appistry CloudIQ. Es un entorno de computación distribuida. Está disponible como free download hasta 5 máquinas. Incluye la distribución de la carga y la recuperación automática del trabajo en caso de falla del hardware, entre otras características.

1

Para grid computing, también puede considerar Ice Grid o DataSynapse GridServer. Ambos proporcionan mecanismos muy efectivos para distribuir tareas y proporcionar recuperación de fallas y redundancia.

1

Creo que su pregunta ha sido interpretada de diferentes maneras, usted pregunta acerca de una biblioteca que puede usar para "habilitar en conjunto" su aplicación.

Si bien algunas de las bibliotecas mencionadas anteriormente pueden ayudar a proporcionar funciones de clúster específicas, como el almacenamiento en caché distribuido, la forma más convencional de habilitar la administración de carga de trabajo es mediante el uso de un contenedor J2EE.

Al configurar una instancia de contenedor agrupado, esto le permite utilizar las características de HA y la administración de la carga de trabajo, la agrupación es casi transparente a nivel de la aplicación. Digo casi porque cuando se escriben aplicaciones que van a agruparse, hay que tener cuidado con la administración del estado, por ejemplo, si implementó algún tipo de caché, necesitaría replicar el estado de la caché en cada máquina.

Un buen lugar para comenzar sería descargar glassfish y probar y configurar una instancia de glassfish en clúster.

Espero que ayude.

Karl

1

También compruebe Fura

1

Una respuesta muy tarde - pero depende en parte de la manera en la configuración de su aplicación. Es posible que desee ejecutar un ejecutable de forma remota en lugar de utilizar uno de los enfoques anteriores.

Disculpas por la falta de enlaces, pero hasta que mis representantes no pueda publicar más de uno. Los productos en cursiva deberían ser fáciles de usar para Google.

Si desea ejecutar un ejecutable en una búsqueda paramétrica, digamos que desea girar el mismo ejecutable con un rango de opciones para cada instancia, entonces un enfoque por lotes tradicional funciona bien. Este es un enfoque muy tradicional computación de alto rendimiento que todavía está en uso amplio - infraestructuras adecuadas para el manejo de este a escala de la empresa son Plataforma LSF, DataSynapse GridServer, PBS o medida que madura Windows HPC Server. También es posible que desee echar un vistazo a los productos de código abierto como Globus y Condor. Dependiendo de cuán grande sea su aplicación, también puede consultar gLite, que se utiliza para proyectos científicos a gran escala como el LHC.

El enfoque trad HPC se beneficia de tener su código de aplicación aislada de los procesos que comprenden la infraestructura de cómputo, pero puede tener un impacto en el rendimiento, mientras que otros pueden mostrar el rendimiento más rápido, pero ser propensos a pérdidas de memoria y otros problemas para los sistemas de tiempo de actividad largo .

6

¿Has considerado Infinispan? Es una plataforma de red de datos de código abierto, de JBoss.org. Para obtener más detalles, le recomiendo que lea este (anterior) blog post anunciando el proyecto, junto con publicaciones de blog más interesantes, incluida una en using Infinispan with Hibernate y como standalone cache. Incluso más recientemente, en Red Hat's Enterprise Data Grid. Hay a quick "getting started" guide, y DZone RefCard también, incluso a YouTube video :)

Cuestiones relacionadas