¿Cuál es la mejor biblioteca para Java a la red / cluster a habilitar su aplicación? [cerrado]

StackOverflow https://stackoverflow.com/questions/383920

Pregunta

Esta es la capacidad de ejecutar la aplicación en un clúster de servidores con la intención de distribuir la carga y también proporcionar redundancia adicional.

He visto una presentación para GridGain y yo estaba muy impresionado con él.

conoce otras?

¿Fue útil?

Solución

Hay varios:

Ahora no he utilizado todos estos, pero que he utilizado o investigado la mayoría de ellos.

GridGain y GigaSpaces están más centrados alrededor grid computing de almacenamiento en caché y (mi humilde opinión) mejor se adapte a rejillas de cómputo que cuadrículas de datos (véase esta explicación de cálculo vs cuadrículas de datos ). Me parece GigaSpaces ser una tecnología muy interesante y tiene varias opciones de licencia, incluyendo una versión gratuita y una versión completa y gratuita para los arranques.

La coherencia y la terracota intentan tratar cachés como mapas , que es una abstracción bastante natural. He utilizado una gran cantidad de coherencia y es un excelente producto de alto rendimiento, pero no es barato. Terracota estoy menos familiarizado. La documentación de coherencia me parece un poco escaso a veces, pero realmente es un producto de gran alcance.

OSCache he utilizado principalmente como un medio para reducir el uso de memoria y la fragmentación en las aplicaciones Web Java, ya que tiene una etiqueta JSP bastante ordenada. Si alguna vez has mirado JSP compilados, verá que hacen un montón de concatenaciones de cadenas. Esta etiqueta permite almacenar en caché de manera efectiva los resultados de un fragmento de código JSP y HTML en una sola cadena, que puede mejorar enormemente el rendimiento en algunos casos.

EHCache es una solución de almacenamiento en caché fácil que también he utilizado en aplicaciones Web. Nunca como una memoria caché distribuida, pero aunque se puede hacer eso. Tiendo a verlo como una solución rápida y sucia, pero eso es quizás mi sesgo.

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

Otros consejos

Es posible que desee comprobar hacia fuera Hazelcast también. Hazelcast transaccional es un código abierto, distribuido aplicación / particiones de cola, tema, mapa, establezca, lista, bloqueo y ejecutor Servicio. Es muy fácil trabajar con él; sólo tiene que añadir hazelcast.jar en su ruta de clase y empezar a programar. Casi no se necesita configuración.

Si está interesado en la ejecución de sus tareas, se puede llamar Ejecutables de una manera distribuida, por favor, echa un vistazo a la documentación de Servicio Distribuida al Ejecutor http://code.google.com/docreader/#p=hazelcast

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

¿Ha considerado Infinispan ? Es una plataforma cuadrícula de datos de código abierto, de JBoss.org. Para más detalles, le recomiendo que lea esto (antigua) entrada de blog anunciar el proyecto, junto con entradas de blog más interesantes de la nota, incluyendo uno en usando Infinispan con Hibernate y como independiente caché . Aún más recientemente, el de Red Hat Enterprise Data Grid . Hay un rápido "Getting Started" guía , y una DZone refcard también, incluso una vídeo de YouTube:)

Creo @ Resumen de Cletus es bastante bueno. Yo quiero mencionar que terracota ofrece mucho más que sólo un caché distribuido en forma de un mapa. Se agrupa montón de Java y primitivas de sincronización, convirtiendo un programa Java concurrente en un programa Java distribuida. Usted puede hacer el almacenamiento en caché con ella (incluyendo el uso de versiones distribuidos de librerías caché de código abierto) o un montón de otras cosas.

Para la distribución del trabajo, hay algunas librerías adicionales escritas en la parte superior de la terracota, en particular los tim-tubos (para Mensajes) y Tim-masterworker (para la distribución de estilo Master-trabajador) son grandes abstracciones en la parte superior de terracota. 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:

JPPF también es agradable.

Si quieres ir un poco de nivel inferior, hay JGroups , que le proporciona la conceptos básicos de la agrupación de los procesos Java.

Y también comprobar ProActive

Otra puede agregar a la lista es Appistry CloudIQ . Es un entorno informático distribuido. Está disponible como una descarga libre hasta 5 máquinas. Incluye distribución de la carga, así como automática conmutación por anomalía de trabajo en el caso de un fallo de hardware, entre otras características.

Para grid computing, se podría también considerar cuadrícula de hielo o DataSynapse GridServer. Estos dos mecanismos muy eficaces proporcionar para la distribución de tareas y proporcionar una conmutación por error y redundancia.

Creo que su pregunta ha sido interpretado de diferentes maneras, de preguntar acerca de una biblioteca que se puede utilizar para "grupo de activar" su aplicación.

Aunque algunos de los libs nombrados anteriormente pueden ayudar a proporcionar la funcionalidad del clúster específico, como almacenamiento en caché distribuido, la manera más convencional de permitir la gestión de carga de trabajo es a través del uso de un contenedor J2EE.

Con la creación de una instancia del contenedor agrupado esto le permite utilizar las características de alta disponibilidad y gestión de la carga de trabajo, la agrupación es casi transparente a nivel de aplicación. Digo casi porque al escribir aplicaciones que van a ser agrupadas usted tiene que tener cuidado de cómo administrar el estado, por ejemplo, si ha implementado algún tipo de caché que se necesita para replicar el estado de la caché a través de cada máquina.

Un buen punto de partida sería la de descarga glassfish y tratar de configurar una instancia de clúster de GlassFish.

Espero que ayude.

Karl

También puedes Fura

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 archivo ejecutable de forma remota en lugar de utilizar uno de los métodos anteriores.

Disculpas por la falta de enlaces - pero hasta mis repeticiones hasta que no se pueden publicar más de uno. Productos en cursiva deben ser fáciles de Google.

Si desea ejecutar un archivo ejecutable en una búsqueda paramétrica - dice que quiere girar el mismo ejecutable con la gama de opciones para cada instancia - a continuación, un enfoque tradicional por lotes funciona bien. Se trata de un enfoque de computación de alto rendimiento muy tradicional 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 a medida que madura Windows HPC Server . También puede ser que desee echar un vistazo a los productos de código abierto como Globus y Condor . Dependiendo de qué tan grande es su aplicación es, también puede mirar a g-Lite , que se utiliza para proyectos científicos muy 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top