2016-03-02 11 views
6

चलें कहते हैं कि हम hazelcast के दो उदाहरणों है:Hazelcast: दो hazelcast उदाहरणों मर्ज

HazelcastInstance firstInstance = Hazelcast.newHazelcastInstance(new Config()); 
HazelcastInstance secondInstance = Hazelcast.newHazelcastInstance(new Config()); 
// Add entries to firstInstance 
// Add entries to secondInstance 

अब मैं firstInstance से सब कुछ नष्ट करने के लिए कोशिश कर रहा हूँ और उसके बाद add everything fromsecondInstance to firstInstance

क्या यह हासिल करने का कोई तरीका है?

उत्तर

5

सबसे पहले, आपके कोड में दिखाए गए दो उदाहरणों के आरंभ होने के अनुसार, दोनों क्लस्टर समूह एक ही क्लस्टर समूह से संबंधित हैं और डिफ़ॉल्ट कॉन्फ़िगरेशन दिए गए हैं, उनमें दोनों साझा किए गए डेटा होंगे। दूसरे शब्दों में, आपको जानकारी को 'स्थानांतरित' करने की आवश्यकता नहीं होगी।

यदि उपर्युक्त सत्य है, तब तक जब आप पहले उदाहरण से हटा रहे हैं, तो आपके पास डेटा की कोई प्रति नहीं होगी (उनके संबंधित स्रोत के अलावा)।

अगर, हालांकि, उदाहरणों उन्हें अलग क्लस्टर समूहों (याद है, प्रश्न में अपने कोड तो नहीं कर रहा है), यह काफी आसान है के लिए उपयोग कर जावा मानचित्र सिर्फ 'प्रतिलिपि'/संग्रह एपीआई को बांधने विन्यास के साथ प्रारंभ कर रहे हैं (जो हैज़लकास्ट ने डेटा संरचना प्रकारों को साझा किया):

secondInstance.getMap("myMap").putAll(firstInstance.getMap("myMap")); 
firstInstance.getMap("myMap").clear(); //please confirm this. 

वितरित सूचियों का एक समान तरीके से इलाज किया जा सकता है। इसके अलावा, इस तरह की 'थोक प्रतियों' से सावधान रहें क्योंकि आपका सदस्य स्मृति त्रुटि से बाहर हो सकता है (बेशक, यह आपके डेटा के आकार पर निर्भर करता है)।

इस बारे में अधिक यहाँ पढ़ा जा सकता: http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#preventing-out-of-memory-exceptions

+0

हाय अर्नेस्ट, विस्तृत विवरण के लिए धन्यवाद। मैं वसंत विन्यास से पहला प्रवेश शुरू कर रहा हूं और दूसरा 'newHazelcastInstance() 'का उपयोग कर रहा हूं। विचार अद्यतन डेटा प्राप्त करना और इसे दूसरी सूची में सहेजना है, जबकि पहले इंस्टेंस का उपयोग अन्य सेवाओं द्वारा किया जा रहा है। एक बार दूसरा इंस्टेंस अपडेट हो जाने के बाद, मैं पहले इंस्टेंस से सभी डेटा को हटाना चाहता था और इसे दूसरे इंस्टेंस से लोड करना चाहता था। –

+0

लेकिन आपकी टिप्पणी से मुझे क्या समझा गया है कि ये दोनों उदाहरण बंधे हैं और किसी भी उदाहरण पर किसी भी डेटा एडिशन/हटाने का ऑपरेशन अन्य उदाहरण पर प्रतिबिंबित किया जाएगा। यदि ऐसा है तो मैं इस परिदृश्य को कैसे प्राप्त करूं (यह देखते हुए कि ये दोनों उदाहरण एक ही क्लस्टर समूह से होंगे)? –

+1

@Rahul: यदि दोनों सदस्य एक ही क्लस्टर समूह का हिस्सा हैं और एक-दूसरे की खोज कर चुके हैं, तो हेज़ेलकास्ट की प्रतिकृति (जब तक कि आप इसे अनुकूलित नहीं कर लेते) नोड्स को आपके डेटा में मैन्युअल प्रति के बिना सभी डेटा की प्रतियां रखने का कारण बनेंगे । यदि वसंत-आधारित सदस्य मर जाता है, तो दूसरे नोड में अभी भी डेटा होगा। हालांकि, यदि आप मानचित्र प्रविष्टियों को हटाते हैं, तो डेटा क्लस्टर से हटा दिया जाएगा (सदस्यों में से न तो बाद में होगा)। मुख्य बिंदु यह है कि दोनों सदस्य एक ही समूह से संबंधित हैं और प्रतिकृति डेटा साझा करते हैं, इस मामले में आपको प्रतिलिपि बनाने की आवश्यकता नहीं है। –

संबंधित मुद्दे