मैं हाल ही में इवेंट सोर्सिंग के बारे में पढ़ रहा हूं और वास्तव में इसके पीछे के विचारों को पसंद करता हूं, लेकिन निम्नलिखित समस्या के साथ फंस गया हूं।
मान लीजिए कि आपके पास एन समवर्ती प्रक्रियाएं हैं, जो कमांड प्राप्त करती हैं (उदाहरण के लिए वेब सर्वर), परिणामस्वरूप परिणाम उत्पन्न करते हैं और उन्हें एक केंद्रीकृत स्टोर में संग्रहीत करते हैं। चलो यह भी मान लेते हैं कि सभी क्षणिक अनुप्रयोग स्थिति को स्टोर से क्रमिक रूप से आवेदन करके व्यक्तिगत प्रक्रियाओं की स्मृति में बनाए रखा जाता है।
अब, मान लें कि हमारे पास निम्नलिखित व्यावसायिक नियम हैं: प्रत्येक विशिष्ट उपयोगकर्ता के पास एक विशिष्ट उपयोगकर्ता नाम होना चाहिए।
यदि दो प्रक्रियाओं को एक ही उपयोगकर्ता नाम X के लिए एक उपयोगकर्ता पंजीकरण आदेश प्राप्त होता है, तो वे दोनों जांचते हैं कि X उपयोगकर्ता नाम की उनकी सूची में नहीं है, नियम दोनों प्रक्रियाओं के लिए मान्य है और वे दोनों स्टोर में "उपयोगकर्ता नाम X के साथ नया उपयोगकर्ता" संग्रह करते हैं ।
हमने अब एक असंगत वैश्विक स्थिति में प्रवेश किया है क्योंकि व्यापार नियम का उल्लंघन किया गया है (एक ही उपयोगकर्ता नाम के साथ दो अलग-अलग उपयोगकर्ता हैं)।
एक पारंपरिक एन सर्वर <-> 1 आरडीबीएमएस शैली प्रणाली में, डेटाबेस को सिंक्रनाइज़ेशन के केंद्रीय बिंदु के रूप में उपयोग किया जाता है जो इस तरह की विसंगतियों को रोकने में मदद करता है।
मेरा सवाल यह है: ईवेंट सॉर्ड सिस्टम आमतौर पर इस समस्या से कैसे निपटते हैं? क्या वे हर क्रम को क्रमिक रूप से संसाधित करते हैं (उदाहरण के लिए प्रक्रिया की मात्रा को सीमित करें जो स्टोर को 1 लिख सकती है)?