2012-02-15 16 views
6

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

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

ऐसी कार्यक्षमता प्राप्त करने का सबसे अच्छा तरीका क्या होगा? निश्चित रूप से मैं कुछ कस्टम घटक को कार्यान्वित कर सकता हूं जो समय-समय पर साझा संसाधनों को साझा करेंगे (डेटाबेस तालिका में ध्वज या फ़ाइल स्टोर पर एक फ़ाइल) और शर्त मिलने के बाद आवश्यक प्रसंस्करण शुरू करें। लेकिन शायद कुछ पहले से ही मौजूदा पुस्तकालय/घटक/ऐप है जिसका मैं उपयोग कर सकता हूं?

+0

क्या आप अधिक विशिष्ट होंगे ?? –

+0

अधिक विशिष्ट: मुझे अपने एप्लिकेशन नोड्स के बीच ईवेंट भेजने में सक्षम होना चाहिए। जैसा कि मैंने कहा था कि मेरे पास डेटाबेस और एक फ़ाइल स्टोर नोड्स के बीच साझा किया गया है, इसलिए मैं उनमें से एक को इवेंट बस के रूप में उपयोग करना पसंद करूंगा। –

+1

हे एंड्रयू.जे - यह अच्छा होगा अगर आप अपने प्रश्न में बाधा डाल सकें। यदि आप कैश समेकन के बारे में जानते हैं लेकिन इसे छोड़ दिया है, तो हमें बताएं क्यों; यदि आप यूडीपी का उपयोग नहीं करना चाहते हैं, तो हमें बताएं। यह लोगों को आपके प्रश्नों का उत्तर उन विचारों से बचाता है जो आपकी आवश्यकताओं को पूरा नहीं करते हैं। –

उत्तर

3

बहुत सारे मौजूदा पुस्तकालय और घटक हैं। आप cache coherence. के बारे में Google पर जा सकते हैं, विभिन्न उपयोग में आसान समाधान, जेबॉस कैश, ओरेकल समेकन, ग्रिडगेन इत्यादि

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

सिंक्रोनस प्रतिकृति लेखन स्थानीय कैश में होते हैं जब लिखते हैं अन्य नोड्स में सबमिट करते हैं।

असिंक्रोनस प्रतिकृति। लेखन स्थानीय नोड में होता है और बाद में अन्य नोड्स पर दोहराया जाता है।

कैश अमान्यता। जब डेटा बदल जाता है, तो सभी नोड्स सिग्नल प्राप्त करते हैं, अपने डेटा को अमान्य करते हैं और डेटाबेस से इसे फिर से पढ़ते हैं।

इसे स्वयं लागू करने के लिए मुश्किल छोड़ दिया जा सकता है, आपको विशेष प्रोटोकॉल की आवश्यकता है (आप JGroups का उपयोग कर सकते हैं), जो आपके नोड्स डेटा का आदान-प्रदान करने के लिए उपयोग करेंगे। मेरा सुझाव है कि आप तैयार समाधान ढूंढ सकें

+0

पोस्ट के लिए धन्यवाद। मुझे कैश समेकन के बारे में पता है, लेकिन मुझे लगता है कि मुझे ऐसा करने में सक्षम होने के लिए एक ओवरकिल है। मुझे बस इतना करना है कि मेरे आवेदन नोड्स के बीच घटनाएं भेजने में सक्षम हों, अधिमानतः बस के रूप में डेटाबेस या फाइलशेयर का उपयोग करना। –

+0

तब jgroups आज़माएं। यह आपको नोड्स के बीच घटनाओं को प्रसारित करने में मदद कर सकता है। पूलिंग साझा डेटासोर्स सबसे अच्छा समाधान नहीं है। पाठ्यक्रम की आपकी आवश्यकता पर निर्भर करता है – Anton

+0

यदि jgroups यूडीपी के बजाय फ़ाइलों या डेटाबेस का उपयोग कर सकता है ... –

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