2013-08-07 50 views
5

मेरे आवश्यकता भर में एक जावा वस्तु साझा करना एक क्लस्टर में एक जावा वस्तु साझा करने के लिए है।एक क्लस्टर

मैं उलझन में

  • एक EJB लिख सकते हैं और साझा करने के लिए है कि क्या क्लस्टर भर में जावा वस्तुओं या
  • ऐसे infinispan या memecached या मिट्टी या
  • क्या JCache के बारे में के रूप में किसी भी तीसरे पक्ष का उपयोग करने के लिए मिल ?
बाधा कि

  • मैं (जैसे weblogic के सिंगलटन सेवाओं को लागू के रूप में) किसी भी आवेदन सर्वर के लिए विशिष्ट के साथ अपने स्रोत कोड के किसी भी नहीं बदल सकते हैं साथ

  • मैं क्लस्टर और गैर क्लस्टर पर्यावरण के लिए दो बिल्डों की पेशकश नहीं कर सकता।
  • प्रदर्शन को डाउनग्रेड नहीं किया जाना चाहिए।
  • अगर मुझे इसका उपयोग करने की आवश्यकता है तो मैं केवल ओपन सोर्स थर्ड पार्टी की तलाश में हूं।
  • यह weblogic, Websphere, Jbos और बिलाव भी में काम करने की जरूरत है।

क्या कोई भी इन बाधाओं के साथ सबसे अच्छे विकल्प के साथ आ सकता है।

उत्तर

0
  • यह सिर्फ एक विचार है। आप सटीक कार्यान्वयन की जांच कर सकते हैं।
  • यह प्रदर्शन को डाउनग्रेड करेगा लेकिन मुझे नहीं पता कि इससे बचने के लिए कैसे संभव है।
  • इसे लागू करने में आसान नहीं है। हो सकता है कि आपको क्लस्टरिंग के बजाय लोड बैलेंस पर विचार करना चाहिए।

आप RMI और/या गतिशील-प्रॉक्सी सोच सकते हैं।

  • अपनी वस्तुओं का इंटरफ़ेस निकालें।
  • वास्तविक वस्तु (सभी समूहों से भी एक है कि वास्तव में वस्तु रखती है) तक पहुँचने के लिए RMI का उपयोग
  • आदेश एक मौजूदा कोड आप उपयोग कर सकते हैं गतिशील-प्रॉक्सी (again..not कार्यान्वयन के बारे में निश्चित) के लिए RMI बनाने के लिए

* गतिशील प्रॉक्सी किसी ऑब्जेक्ट को लपेट सकता है और प्रत्येक विधि आमंत्रण पर कुछ पूर्व और पोस्ट कार्य कर सकता है। इस मामले में यह RMI मंगलाचरण

  • आप RMI वस्तु का प्रचार करने के लिए समूहों के बीच संपर्क की आवश्यकता होगी के लिए मूल वस्तु का उपयोग हो सकता है।
+0

क्या कोई सामान्य API है जो सभी जे 2 ईई अनुपालन सर्वरों के साथ काम करता है? जेसीएसी जेएसआर 107 के बारे में क्या? – Dineshkumar

2

यह उन ऑब्जेक्ट्स के उपयोग मामले पर निर्भर करता है जिन्हें आप क्लस्टर में साझा करना चाहते हैं।

मैं इसे लगता है कि सबसे जटिल में वास्तव में इन विकल्पों के लिए नीचे आता है कम से कम करने के लिए जटिल

वितरित cacheing http://www.ehcache.org

वितरित cacheing अच्छा है अगर आप यह सुनिश्चित करना है कि एक वस्तु एक से पहुँचा जा सकता है की जरूरत है प्रत्येक नोड पर कैश। मैंने सफलतापूर्वक वितरित करने के लिए ehache का उपयोग किया है, जब तक आपको स्केल की आवश्यकता न हो, तब तक टेराकोटा सर्वर सेट करने की आवश्यकता नहीं है, केवल आरएमआई के माध्यम से उदाहरणों को इंगित कर सकते हैं। आवश्यकताओं के आधार पर सिंक्रनाइज़ और असीमित रूप से भी काम करता है। नोड्स नीचे जाने पर कैश प्रतिकृति भी आसान होती है, इसलिए कैश वास्तव में अनावश्यक है और कुछ भी खोना नहीं है। अच्छा अगर आपको यह सुनिश्चित करने की ज़रूरत है कि ऑब्जेक्ट को सभी नोड्स में अपडेट किया गया है।

क्लस्टर निष्पादन/डेटा वितरण http://www.hazelcast.com/

Hazelcast भी एक अच्छा विकल्प के रूप में एक समूह भर में जावा वर्गों को क्रियान्वित करने का एक तरीका प्रदान करता है। यह अधिक उपयोगी है यदि आपके पास ऐसी ऑब्जेक्ट है जो काम की एक इकाई का प्रतिनिधित्व करती है जिसे करने की आवश्यकता है और आप इसे बहुत अधिक परवाह नहीं करते हैं जहां इसे निष्पादित किया जाता है।

इसके अलावा

, वितरित संग्रह के लिए उपयोगी एक वितरित नक्शा या कतार

रोल यानी अपनी खुद की RMI/Jgroups

अपने खुद के ग्राहक/सर्वर लिख सकते हैं लेकिन मुझे लगता है आपको समस्या आ जाती शुरू कर देंगे कि बड़े ढांचे को हल करते हैं यदि आपके साथ काम करने वाली वस्तुओं की आवश्यकताओं जटिल हो जाती है। वास्तव में Hazelcast वास्तव में सरल है और वास्तव में खुद को रोल करने की आवश्यकता को खत्म करना चाहिए।

+0

क्या कोई सामान्य API है जो सभी जे 2 ईई अनुपालन सर्वरों के साथ काम करता है? जेसीएसी जेएसआर 107 के बारे में क्या? – Dineshkumar

1

यह खुला स्रोत नहीं है, लेकिन ओरेकल कोहेरेंस आसानी से इस समस्या को हल करेगा।

यदि आपको जेसीएच के कार्यान्वयन की आवश्यकता है, तो केवल एक ही जिसे मैं आज उपलब्ध होने के बारे में जानता हूं वह ओरेकल कोहेरेंस है; देखें: http://docs.oracle.com/middleware/1213/coherence/develop-applications/jcache_part.htm

पूर्ण प्रकटीकरण के लिए, मैं Oracle में काम करते हैं। इस पोस्ट में व्यक्त राय और विचार मेरे हैं, और मेरे नियोक्ता के विचारों या विचारों को जरूरी नहीं दर्शाते हैं।

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