मैं एक वितरित और समवर्ती वातावरण में अद्वितीय अनुक्रम संख्या उत्पन्न करने के लिए बाधाओं और व्यापारिकताओं के बारे में उत्सुक हूं।एक वितरित और समवर्ती वातावरण में अद्वितीय अनुक्रम संख्या उत्पन्न करते समय ट्रेडऑफ क्या हैं?
कल्पना कीजिए: मेरे पास एक प्रणाली है जहां यह सब कुछ करता है, हर बार जब आप इसे पूछते हैं तो अद्वितीय अनुक्रम संख्या वापस देते हैं। यहां ऐसी प्रणाली (बाधाओं) के लिए आदर्श आदर्श है:
- उच्च लोड के तहत रहें।
- जितना संभव हो उतने समवर्ती कनेक्शन की अनुमति दें।
- वितरित: एकाधिक मशीनों में फैलता लोड।
- प्रदर्शन: जितनी जल्दी हो सके चलाएं और जितना संभव हो उतना थ्रूपुट करें।
- शुद्धता: उत्पन्न संख्या करना होगा:
- दोहराना नहीं।
- प्रति अनुरोध अद्वितीय हो (यदि किसी भी दो अनुरोध सही समय पर होता है तो एक तरह से तोड़ने का संबंध होना चाहिए)।
- अनुक्रमिक क्रम में (बढ़ते) में। 1,2,3,4 ... (प्रभावी ढंग से कुल # अनुरोधों के लिए एक काउंटर)
- दोष सहिष्णु: यदि एक या अधिक, या सभी मशीनों नीचे चला गया, यह हो सकता
- अनुरोधों के बीच कोई अंतराल है विफलता से पहले राज्य को फिर से शुरू करें।
जाहिर है, यह एक आदर्शीकृत कल्पना है और सभी बाधाओं को पूरी तरह से संतुष्ट नहीं किया जा सकता है। CAP Theorem देखें। हालांकि, मुझे बाधाओं के विभिन्न विश्राम पर आपके विश्लेषण को सुनना अच्छा लगेगा। शेष समस्याओं को हल करने के लिए हम किस प्रकार की समस्याओं को छोड़ देंगे और हम किस एल्गोरिदम का उपयोग करेंगे। उदाहरण के लिए, यदि हम काउंटर बाधा से छुटकारा पा रहे हैं, तो समस्या बहुत आसान हो जाती है: चूंकि अंतराल की अनुमति है, इसलिए हम संख्यात्मक श्रेणियों को विभाजित कर सकते हैं और उन्हें विभिन्न मशीनों पर मैप कर सकते हैं।
कोई संदर्भ (कागजात, किताबें, कोड) का स्वागत है। मैं मौजूदा सॉफ्टवेयर (ओपन सोर्स या नहीं) की एक सूची रखना भी चाहूंगा।
सॉफ्टवेयर:
- Snowflake: कुछ सरल की गारंटी देता है के साथ उच्च स्तर पर अद्वितीय ID संख्या पैदा करने के लिए एक नेटवर्क सेवा।
- keyspace: एक सार्वजनिक रूप से सुलभ, अद्वितीय 128 बिट आईडी जनरेटर, जिसका आईडी किसी भी उद्देश्य के
- RFC-4122 implementations exist in many languages के लिए इस्तेमाल किया जा सकता है। आरएफसी स्पेक शायद वास्तव में एक अच्छा आधार है, क्योंकि यह किसी भी अंतर-प्रणाली समन्वय की आवश्यकता को रोकता है, यूयूआईडी 128-बिट हैं, और जब spec के कुछ संस्करणों को लागू करने वाले सॉफ़्टवेयर से आईडी का उपयोग करते हैं, तो उनमें एक टाइम कोड भाग शामिल होता है जो बनाता है संभव सॉर्टिंग आदि
+1, दिलचस्प सवाल। मुझे लगता है कि यह सुनना दिलचस्प होगा कि आप इनमें से कुछ आवश्यकताओं के साथ कैसे आए। ** 1। ** क्या तीसरी और चौथी शुद्धता आवश्यकताओं (अनुरोधों के बीच बढ़ती हुई और कोई अंतराल नहीं) वास्तव में महत्वपूर्ण * क्लाइंट * है? और यदि हां, तो क्यों? ** 2। ** प्रति अनुरोध विशिष्टता: क्या यह पर्याप्त सख्त है? जैसा कि मैं "अनुरोध" शब्द का उपयोग समझता हूं, इसका मतलब है "मुझे एक नंबर दें!" यदि दो ग्राहक अनुरोध करते हैं कि 'एक ही समय में आते हैं, तो यह अभी भी दो अलग-अलग अनुरोध हैं, एक नहीं। तो: संख्या * सार्वभौमिक * अद्वितीय नहीं होनी चाहिए? – stakx