Qual è il miglior biblioteca per Java alla rete / cluster-abilitare la vostra applicazione? [chiuso]

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

Domanda

Questa è la capacità di eseguire l'applicazione su un cluster di server con l'intento di distribuire il carico e anche fornire ridondanza aggiuntiva.

Ho visto una presentazione per GridGain e sono rimasto molto impressionato con esso.

sa di eventuali altri?

È stato utile?

Soluzione

Ci sono diversi:

Ora non ho usato tutti questi, ma ho usato o studiato la maggior parte di loro.

GridGain e GigaSpaces sono maggiormente concentrati intorno grid di cache e (imho) più adatta alle griglie di calcolo di griglie di dati (vedi questa spiegazione di calcolo vs griglie di dati ). Trovo GigaSpaces di essere una tecnologia molto interessante e ha diverse opzioni di licenza, tra cui una versione gratuita e una versione completa gratuita per start-up.

La coerenza e terracotta cercano di trattare le cache come mappe , che è un'astrazione abbastanza naturale. Ho usato coerenza molto e si tratta di un ottimo prodotto ad alte prestazioni, ma non a buon mercato. Terracotta Sono meno familiarità con. La documentazione per coerenza ho trovato un po 'carente a volte, ma in realtà è un prodotto potente.

OSCache Ho usato principalmente come un mezzo per ridurre l'utilizzo della memoria e la frammentazione nelle applicazioni Web Java in quanto ha un tag abbastanza pulito JSP. Se hai mai guardato JSP compilati, vedrete che fanno un sacco di concatenazioni di stringhe. Questo tag consente di memorizzare nella cache in modo efficace i risultati di un segmento di codice JSP e HTML in una singola stringa, che può enormemente migliorare le prestazioni in alcuni casi.

EHCache è una soluzione di caching semplice che ho usato anche in applicazioni Web. Mai come una cache distribuita anche se, ma può farlo. Io tendo a vederlo come una soluzione rapida e sporca ma questo è forse il mio bias.

memcached è particolarmente prevelent nel mondo PHP (e utilizzati da siti come Facebook). E 'una soluzione molto leggero e facile e ha il vantaggio che non viene eseguito nello stesso processo e avrete senza dubbio migliori opzioni di interoperabilità con altri stack tecnologici, se questo è importante per voi.

Altri suggerimenti

Si consiglia di controllare Hazelcast anche. Hazelcast è una fonte transazionale aperto, distribuito / partizionato implementazione di coda, tema, carta, set, list, blocco ed esecutore servizio. E 'super facile da lavorare; basta aggiungere hazelcast.jar nel classpath e iniziare a scrivere codice. è richiesto quasi alcuna configurazione.

Se siete interessati a eseguire i vostri compiti corri, Callable in modo distribuito, quindi si prega di consultare la documentazione distribuita esecutore servizio all'indirizzo http://code.google.com/docreader/#p=hazelcast

Hazelcast è rilasciato sotto licenza Apache e il supporto di livello aziendale è inoltre disponibile.

Avete considerato Infinispan ? È una piattaforma griglia di dati open source, dalle JBoss.org. Per maggiori dettagli, vi consiglio di leggere questo (vecchio) post sul blog annunciando il progetto, insieme a più interessanti i post del blog di nota, tra cui uno su usando Infinispan con Hibernate e come standalone di cache . Ancora più recentemente, il di Red Hat Enterprise Data Grid . C'è un rapido "Getting Started" guida , e un DZone RefCard troppo, anche un video di YouTube :)

Credo @ sintesi di Cletus è piuttosto buona. Volevo ricordare che Terracotta offre molto di più di una semplice cache distribuita sotto forma di una mappa. Esso raggruppa mucchio Java e primitive di sincronizzazione, trasformando un programma Java concorrente in un programma Java distribuito. Si può fare il caching con esso (anche utilizzando le versioni distribuite di aprire librerie di cache fonte) o un sacco di altre cose.

Per la distribuzione di lavoro, ci sono alcune librerie aggiuntive scritte sulla parte superiore della terracotta, in particolare TIM-tubi (per i messaggi) e Tim-masterworker (per la distribuzione in stile Master-Worker) sono grandi astrazioni in cima terracotta. Questa libreria è in Terracotta Forge:

Questa pagina recentemente aggiunto può aggiungere un po 'di informazioni aggiuntive rispetto ad altre tecnologie il potenziale di dati:

JPPF è anche bello.

Se si vuole andare un po 'di livello inferiore, v'è JGroups , che fornisce la basi di clustering di processi Java.

E anche controllare ProActive

Un altro si può aggiungere alla lista è Appistry CloudIQ . Si tratta di un ambiente di calcolo distribuito. E 'disponibile come fino a 5 macchine. Esso comprende la distribuzione del carico nonché fail over automatico di lavoro nel caso di un guasto hardware, tra le altre caratteristiche.

Per il grid computing, si potrebbe anche prendere in considerazione ghiaccio griglia o DataSynapse GridServer . Questi entrambi fornire meccanismi molto efficaci per la distribuzione di compiti e di fornire il failover e la ridondanza.

Credo che la tua domanda è stata interpretata in modi diversi, si chiede di una libreria che è possibile utilizzare per "grappolo enable" la vostra applicazione.

Mentre alcune delle librerie sopra citati possono contribuire a fornire funzionalità specifico cluster come caching distribuito, il modo più convenzionale di consentire gestione del carico di lavoro è attraverso l'uso di un contenitore J2EE.

Con la creazione di un'istanza di contenitore cluster questo consente di utilizzare funzionalità HA e gestione del carico di lavoro, il clustering è quasi trasparente a livello di applicazione. Dico quasi perché durante la scrittura di applicazioni che stanno per essere raggruppati bisogna stare attenti a come gestire lo stato, per esempio se si implementato una sorta di cache di si avrebbe bisogno di replicare lo stato della cache su ogni macchina.

Un buon punto di partenza sarebbe quello di scaricare e provare pesci vetro e la configurazione di un'istanza GlassFish cluster.

La speranza che aiuta.

Karl

Una risposta molto tardi - ma dipende in parte dal modo in cui l'applicazione è configurata. Si potrebbe desiderare di eseguire un file eseguibile in remoto invece di utilizzare uno degli approcci di cui sopra.

Ci scusiamo per la mancanza di collegamenti - ma fino a quando i miei ripetizioni fino non posso postare più di uno. Prodotti in corsivo dovrebbero essere facili da Google.

Se si desidera eseguire un file eseguibile in una ricerca parametrica - dire che si desidera far girare lo stesso eseguibile con la gamma di opzioni per ogni istanza - poi un approccio lotto tradizionale funziona bene. Questo è un approccio di calcolo ad alte prestazioni molto tradizionale che è ancora in largo uso - infrastrutture idonee per la gestione di questo a scala aziendale sono Platform LSF , DataSynapse GridServer , PBS o come matura Windows HPC Server . Si potrebbe anche voler dare un'occhiata a prodotti open source come Globus e Condor . A seconda di quanto è grande la vostra applicazione è, si potrebbe anche guardare a gLite , che viene utilizzato per progetti scientifici molto grande scala come l'LHC.

L'approccio trad HPC vantaggi di avere il vostro codice di applicazione isolati dai processi che compongono l'infrastruttura di elaborazione, ma può richiedere un calo di prestazioni, mentre altri possono mostrare più veloce il throughput ma essere soggetti a perdite di memoria e altri problemi per i sistemi a lungo uptime.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top