बाहरी घटना के आधार पर मैं वर्कफ़्लो उदाहरण को विश्वसनीय रूप से कैसे बना सकता हूं?

विंडोज वर्कफ़्लो सामान के लिए थोड़ा नया तो आसान जाओ :)

मैं वर्कफ़्लो होस्ट वातावरण को डिज़ाइन करना चाहता हूं जिसमें उच्च उपलब्धता हो - अलग-अलग हार्डवेयर पर कम से कम 2 डब्लूएफ रनटाइम होस्ट दोनों एक ही दृढ़ता या SQL डेटाबेस को ट्रैक करने के लिए इंगित करते हैं।

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

एक समाधान जो मैं विचार कर रहा हूं वह डब्लूएफएफ मेजबानों पर डब्ल्यूसीएफ इंटरफेस रख रहा है और उन्हें किसी प्रकार के लोड बैलेंसर के पीछे रख रहा है। यह उस प्रणाली के किसी भी हिस्से तक होगा जो डब्ल्यूसीएफ कॉल करने के लिए "घटना" को फायर कर रहा है।

मैं इसके साथ वास्तव में खुश नहीं हूं क्योंकि यदि दोनों \ N WF होस्ट डाउन हैं, या अन्यथा अनुपलब्ध हैं, तो ईवेंट "खो गया" हो सकता है। इसके अलावा, मैं जिस तरह से करना चाहता हूं उसे लोड करने में सक्षम नहीं होगा। मैं ऐसी परिस्थिति पर विचार करता हूं जहां थोड़ी सी अवधि में बहुत सी घटनाएं हो सकती हैं, लेकिन कुछ समय बाद उन घटनाओं को संभालने के लिए यह पूरी तरह से स्वीकार्य है।

तो मुझे लगता है कि मुझे घटनाओं को किसी भी तरह से जारी रखने और घटना प्रबंधन से घटना निर्माण को समाप्त करने की आवश्यकता है।

इन घटनाओं को एमएसएमक्यू में, या एसक्यूएल सर्वर में एक साधारण इवेंट टेबल में डाल रहा है, और डब्ल्यूएफ होस्ट होने के कारण समय-समय पर कतार को एक व्यवहार्य समाधान मिलते हैं? लगता है कि मतदान एक गंदा शब्द है हालांकि ...

क्या NServiceBus और टिकाऊ संदेश यहां उपयोगी होगा?

किसी भी अंतर्दृष्टि की सराहना की जाएगी।

परिशिष्ट

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

डब्ल्यूएफ विश्वसनीयता और उच्च उपलब्धता पर एमएसडीएन लेख

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

0
ro fr bn

2 उत्तर

मैं एमएसएमक्यू/इवेंट टेबल के साथ जाऊंगा। यदि आप गलत करते हैं तो मतदान केवल गंदा होता है।

ध्यान में रखना एक बात है: आप कहते हैं कि आप उच्च उपलब्धता के लिए एकाधिक डब्ल्यूएफ सर्वर चाहते हैं, लेकिन उनमें से दोनों एक ही एसक्यूएल बैकएंड का उपयोग करते हैं ? उच्च उपलब्धता केवल तभी काम करती है जब आप विफलता के एकल बिंदु सभी को हटा दें, न केवल उनमें से कुछ।

0
जोड़ा

यदि आप netMsmq बाइंडिंग के साथ डब्ल्यूसीएफ सेवा का उपयोग करते हैं, तो आप मतदान के बिना कतारबद्ध संदेश प्राप्त कर सकते हैं। अगर संदेश लेने के लिए कोई सेवा नहीं चल रही है तो संदेश इंतजार करेंगे। मुख्य कतार मशीन नीचे जाने के मामले में आप विश्वसनीयता के लिए क्लस्टर्ड कतार का उपयोग करना सुनिश्चित करना चाहते हैं।

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

0
जोड़ा