2015-06-30 3 views
5

मैं जानना चाहता हूं कि संसाधित होने वाले किसी संदेश के साथ संसाधित संदेश की संख्या का प्रतिनिधित्व करने वाले काउंटर के साथ काम करने के लिए कौन सा पैटर्न अनुशंसा की जाती है।बहु उदाहरण अनुप्रयोगों पर सिंगलटन में संदेश काउंटर से बचने के लिए पैटर्न

उदाहरण के लिए, एक आर्किटेक्चर में जहां कई सर्वरों पर एक एप्लिकेशन तैनात किया जाता है, एक डेटाबेस का उपयोग लगातार जानकारी (सत्र, आदि ...) को संग्रहीत करने के लिए किया जाता है। हालांकि, ऐसी जानकारी एक संदेश काउंटर जैसे समवर्ती अपडेट के संपर्क में नहीं आती है। एक मोनो-इंस्टेंस एप्लिकेशन में हम सिंगलटन का उपयोग कर सकते हैं, लेकिन यह मामला यहां नहीं है।

ऐसे काउंटर को लागू करने के लिए आपका सुझाव क्या होगा? काउंटर का उपयोग खराब डिजाइन का उपयोग कर रहा है?

+0

कि रवानगी हैं से जोड़ा जाएगा पर उपलब्ध हो जाएगा आप काउंटर का उपयोग करने के लिए क्या कर रहे हैं पर बहुत कुछ खत्म करें। उपयोग का मामला क्या है? –

+0

उदाहरण के लिए, हम बहुत सारे लेन-देन प्राप्त कर सकते हैं (मात्रा ज्ञात है) जिसके लिए कई सर्वरों पर उपचार भेजा जाता है। सभी लेनदेन के इलाज के अंत में, एक रिपोर्ट तैयार की जानी चाहिए। लेकिन, कैसे पता चलेगा कि अंतिम लेनदेन संसाधित किया गया है? –

+0

प्रत्येक सर्वर पर स्वतंत्र रूप से लेनदेन की गणना करें और कुल संख्या की आवश्यकता होने पर उन संख्याओं को जोड़ें। प्रत्येक सर्वर अपने स्वयं के सिंक्रनाइज़ेशन के लिए ज़िम्मेदार है। –

उत्तर

0

मुझे नहीं लगता कि यह बहुत ही सारणी कार्य करने के लिए कुछ पैटर्न है। इसके अलावा:

एक मोनो-इंस्टेंस एप्लिकेशन में हम सिंगलटन का उपयोग कर सकते हैं, लेकिन यह मामला यहां नहीं है।

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

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

+0

मुझे लगता है कि यह इस समस्या का समाधान हो सकता है, लेकिन कल्पना करें कि हमारे पास अरबों लेन-देन हैं, माइक्रोस्कोयर को दर्जनों सर्वरों से अनुरोध प्राप्त होंगे और इन सभी अनुरोधों को एक सर्वर पर संघनित किया जाएगा जिसके लिए क्षैतिज स्केलेबिलिटी संभव नहीं है। –

+0

@ एंथनी कॉरराडो आप सिंक्रनाइज़ेशन के बिना थ्रेड-सुरक्षित एकात्मक रूप से बढ़ते काउंटर नहीं बना सकते हैं। इसके पीछे असली काम क्या है?उदाहरण के लिए –

+0

, हम बहुत सारे लेन-देन प्राप्त कर सकते हैं (मात्रा ज्ञात है) जिसके लिए कई सर्वरों पर उपचार भेजा जाता है। सभी लेनदेन के इलाज के अंत में, एक रिपोर्ट तैयार की जानी चाहिए। लेकिन, कैसे पता चलेगा कि अंतिम लेनदेन संसाधित किया गया है? –

1

मैं सीधे आपके प्रश्न का उत्तर नहीं दे रहा हूं, लेकिन मैं आपको एक काउंटर सेवा का संदर्भ दे सकता हूं, जो बहु थ्रेड, बहु नोडेड, स्केलेबल है और साथ ही उपलब्धता परिदृश्यों पर विचार करता है। Jgroups काउंटर सेवा http://jgroups.org/manual/index.html#CounterService देखें।

यह आपको एक वितरित काउंटर के परिदृश्य में समस्याओं का एक सेट करने के लिए मार्गदर्शन कर सकता है और एक लाइव वर्किंग संदर्भ के रूप में भी कार्य कर सकता है।

+0

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

+0

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

+1

प्रश्न लेखक को किस प्रकार के काउंटर की आवश्यकता है;) हम केवल समाधान सुझा सकते हैं। –

0

एक डाटाबेस के साथ संभावित समाधान:

  • एक संग्रहीत प्रक्रिया है कि काउंटर अपडेट हो जाएगा और नए मान बनाने (अद्यतन ... लौट रहा है ... जांच) Oracle में उदाहरण
  • $ इंक के लिए उदाहरण के लिए MongoDB में

काउंटर डेटाबेस में संग्रहीत किया जाएगा और प्रत्येक आवेदन उदाहरणों कि यह डेटाबेस

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