Innanzitutto, come per l'inizializzazione delle due istanze mostrate nel codice, entrambi sono membri del cluster appartenenti allo stesso gruppo di cluster e, data la configurazione predefinita, entrambi conterranno tutti i dati condivisi. In altre parole, non è necessario "trasferire" le informazioni.
Se quanto sopra è vero, dal momento in cui hai terminato l'eliminazione dalla prima istanza, non avrai alcuna copia dei dati (diversa dalla loro rispettiva sorgente).
Se, tuttavia, le istanze vengono inizializzate con le configurazioni che le associano a gruppi di cluster diversi (ricordare, il codice nella domanda non lo fa), è sufficiente semplicemente "copiare" utilizzando l'API Java Map/Collections (che Hazelcast condivide con i tipi di struttura dati implementati):
secondInstance.getMap("myMap").putAll(firstInstance.getMap("myMap"));
firstInstance.getMap("myMap").clear(); //please confirm this.
Gli elenchi distribuiti possono essere trattati in modo simile. Inoltre, fai attenzione con tali "copie di massa" in quanto il tuo membro può riscontrare un errore di memoria insufficiente (ovviamente, a seconda della dimensione dei tuoi dati).
Ulteriori su questi può essere letto qui: http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#preventing-out-of-memory-exceptions
fonte
2016-03-02 07:55:32
Ciao Ernest, grazie per la spiegazione dettagliata. Sto inizializzando la firstInstance da spring config e l'altra usando 'newHazelcastInstance()'. L'idea è di ottenere i dati aggiornati e salvarli in SecondInstace mentre la firstInstance viene utilizzata da altri servizi. Una volta che la seconda istanza è stata aggiornata, volevo rimuovere tutti i dati dal primoInstace e caricarlo da SecondInstance. –
Ma quello che ho capito dal tuo commento è che entrambe queste istanze sono bloccate e qualsiasi operazione di aggiunta/rimozione di dati su qualsiasi istanza verrà replicata nell'altra istanza. Se questo è il caso, come faccio a raggiungere questo scenario (dato che entrambe queste istanze saranno dallo stesso gruppo di cluster)? –
@Rahul: se entrambi i membri fanno parte dello stesso gruppo di cluster e si sono rilevati l'un l'altro, la replica di hazelcast (a meno che non l'abbia personalizzata) causerà la conservazione di copie di tutti i dati, senza alcuna copia manuale nel codice . Se un membro basato su molla muore, il secondo nodo avrà ancora i dati. Tuttavia, se si rimuovono le voci della mappa, i dati verranno rimossi dal cluster (nessuno dei membri lo avrà in seguito). Il punto chiave è che entrambi i membri appartengono allo stesso cluster e condividono i dati replicati, nel qual caso non è necessario copiare. –