2013-08-07 39 views
5

Il mio requisito è condividere un oggetto java attraverso un cluster.Condivisione di un oggetto java attraverso un cluster

mi confondo

  • se scrivere un EJB e condividere gli oggetti Java all'interno del cluster o
  • di utilizzare terze parti come ad esempio infinispan o memecached o terracotta o
  • che dire JCache ?

con il vincolo che

  • non posso cambiare qualsiasi mio codice sorgente con specifico in qualsiasi application server (come ad esempio l'implementazione dei servizi singleton del WebLogic).
  • Non posso offrire due build per l'ambiente cluster e non cluster.
  • Le prestazioni non devono essere declassate.
  • Sto cercando solo terze parti open source se ho bisogno di usarlo.
  • Deve funzionare anche in weblogic, Websphere, Jbos e Tomcat.

Qualcuno può venire con l'opzione migliore con questi vincoli in mente.

risposta

0
  • È solo un'idea. potresti voler controllare l'esatta implementazione.
  • Diminuisce le prestazioni, ma non vedo come sia possibile evitarlo.
  • Non è facile da implementare. potrebbe essere necessario considerare il bilanciamento del carico anziché il clustering.

si potrebbe considerare RMI e/o proxy dinamico.

  • estrae l'interfaccia dei tuoi oggetti.
  • utilizzare RMI per accedere all'oggetto reale (da tutti i cluster anche quello che contiene effettivamente l'oggetto)
  • per creare RMI per un codice esistente che è possibile utilizzare proxy dinamico (di nuovo ... non sono sicuro sull'implementazione)

* il proxy dinamico può avvolgere qualsiasi oggetto e svolgere attività pre e post su ogni invocazione di metodo. in questo caso potrebbe utilizzare l'oggetto originale per la chiamata RMI

  • è necessario connettività tra i cluster per propagare l'oggetto RMI.
+0

Esiste un'API generica che funziona con tutti i server compatibili J2EE? che dire di JCache JSR 107? – Dineshkumar

2

Può dipendere dal caso d'uso degli oggetti che si desidera condividere nel cluster.

Credo che si tratta di realtà le seguenti opzioni in più complesso da meno complesso

di cache distribuita http://www.ehcache.org

di cache distribuita è buono se è necessario assicurarsi che un oggetto è accessibile da un cache su ogni nodo. Ho usato ehache per distribuire abbastanza con successo, non c'è bisogno di configurare un server in terracotta a meno che non si abbia bisogno della scala, si possono semplicemente puntare le istanze insieme via rmi. Funziona anche in modo sincrono e asincrono in base ai requisiti. Anche la replicazione della cache è utile se i nodi scendono, quindi la cache è effettivamente ridondante e non perdere nulla. Buono se è necessario assicurarsi che l'oggetto sia stato aggiornato su tutti i nodi.

distribuzione Esecuzione/dati in cluster http://www.hazelcast.com/

Hazelcast è anche una bella opzione come fornisce un modo di eseguire classi Java in un cluster. Questo è più utile se hai un oggetto che rappresenta un'unità di lavoro che deve essere eseguita e non ti interessa tanto dove viene eseguito.

Utile anche per collezioni distribuite, cioè una mappa distribuita o coda di

rotolare il proprio RMI/JGroups

possibile scrivere il proprio client/server, ma penso che si inizierà a incorrere in problemi che le strutture più grandi risolvono se i requisiti degli oggetti con cui si ha a che fare cominciano a diventare complessi. Realistically Hazelcast è davvero semplice e dovrebbe davvero eliminare la necessità di eseguire il rollover.

+0

Esiste un'API generica che funziona con tutti i server compatibili J2EE? che dire di JCache JSR 107? – Dineshkumar

1

Non è open source, ma Oracle Coherence risolverebbe facilmente questo problema.

Se è necessaria un'implementazione di JCache, l'unico che sono a conoscenza di essere disponibile oggi è Oracle Coherence; vedi: http://docs.oracle.com/middleware/1213/coherence/develop-applications/jcache_part.htm

Per motivi di completa divulgazione, lavoro in Oracle. Le opinioni e le opinioni espresse in questo post sono mie e non riflettono necessariamente le opinioni o le opinioni del mio datore di lavoro.

Problemi correlati