मैं कुछ दिनों से इस पर काम कर रहा हूं, और मुझे कई समाधान मिल गए हैं लेकिन उनमें से कोई भी अविश्वसनीय रूप से सरल या हल्का नहीं है। समस्या मूल रूप से यह है: हमारे पास 10 मशीनों का समूह है, जिनमें से प्रत्येक एक बहुउद्देशीय ईएसबी मंच पर एक ही सॉफ्टवेयर चला रहा है। मैं एक ही मशीन पर थ्रेड के बीच समेकन मुद्दों के साथ काफी आसानी से निपट सकता हूं, लेकिन विभिन्न मशीनों पर एक ही डेटा पर सहमति के बारे में क्या?वितरित कंसुरेंसी कंट्रोल
अनिवार्य रूप से सॉफ्टवेयर वेब सेवाओं के माध्यम से एक से दूसरे व्यवसाय से एक ग्राहक के डेटा को खिलाने के लिए अनुरोध प्राप्त होते हैं। हालांकि, ग्राहक अभी भी अन्य सिस्टम पर मौजूद हो सकता है या नहीं भी हो सकता है। यदि ऐसा नहीं होता है, तो हम इसे एक वेब सेवा विधि के माध्यम से बनाते हैं। इसलिए इसे एक प्रकार का परीक्षण और सेट की आवश्यकता है, लेकिन मुझे अन्य मशीनों को दौड़ की स्थिति पैदा करने से रोकने के लिए किसी प्रकार का सेमफोर चाहिए। मेरे पास ऐसी स्थितियां थीं जहां एक दूरस्थ ग्राहक को एक स्थानीय ग्राहक के लिए दो बार बनाया गया था, जो वास्तव में वांछनीय नहीं है।
समाधान मैं धारणात्मक के साथ toyed है कर रहे हैं:
"ताला" ग्राहक के आधार पर फ़ाइलें जो प्रत्येक मशीन द्वारा के लिए जाँच की जाएगी बनाने के लिए हमारी गलती सहिष्णु साझा फाइल सिस्टम का उपयोग करना
हमारे डेटाबेस में एक विशेष तालिका का उपयोग करके, और लॉक रिकॉर्ड के लिए "परीक्षण-और-सेट" करने के लिए पूरी तालिका को लॉक करना।
टेराकोटा, एक खुला स्रोत सर्वर सॉफ्टवेयर जो स्केलिंग करने में सहायता करता है, लेकिन एक हब और स्पोक मॉडल का उपयोग करता का उपयोग करना।
मेरे इन-स्मृति की समकालिक प्रतिकृति के लिए ehcache का उपयोग करना "ताले।"
मैं कल्पना नहीं कर सकता कि मैं अकेला व्यक्ति हूं जिसने कभी इस तरह की समस्या की है। आपने इसे कैसे ठीक किया? क्या आपने घर में कुछ खाना पकाया था या क्या आपके पास पसंदीदा 3-पार्टी उत्पाद है?
परीक्षण-और-सेट की बजाय, यह सुनिश्चित करने की ज़िम्मेदारी क्या हो सकती है कि कोई भी डुप्लिकेट सेवा में स्थानांतरित न हो जो नए ग्राहकों को बनाता है? –