ठीक है, यह एक बहुत पुराना प्रश्न है, जिसे मैं पहली बार देख रहा हूं।
आपको अनुक्रम संख्या और विशिष्ट ID के बीच अंतर करने की आवश्यकता होगी जो (वैकल्पिक रूप से) विशिष्ट मानदंडों (आमतौर पर पीढ़ी के समय) द्वारा शिथिल रूप से छांटे जाते हैं। सही अनुक्रम संख्या से पता चलता है कि अन्य सभी श्रमिकों ने क्या किया है, और इस तरह की साझा स्थिति की आवश्यकता है। वितरित, उच्च-स्तरीय तरीके से ऐसा करने का कोई आसान तरीका नहीं है। आप प्रत्येक कर्मचारी के लिए नेटवर्क ब्रॉडकास्ट, विंडोेड रेंज और अनोखी वर्कर आईडी के लिए हैश टेबल वितरित कर सकते हैं , लेकिन यह बहुत काम की चीज है ।
यूनिक आईडी एक और मामला है, विकेंद्रीकृत तरीके से यूनिक आईडी बनाने के कई अच्छे तरीके हैं:
a) आप ट्विटर की स्नोफ्लेक आईडी नेटवर्क सेवा का उपयोग कर सकते हैं । हिमपात का एक खंड है:
- नेटवर्क सेवा, यानी आप एक अद्वितीय आईडी प्राप्त करने के लिए एक नेटवर्क कॉल करते हैं;
- जो 64 बिट यूनिक आईडी का उत्पादन करता है जो कि पीढ़ी के समय के अनुसार आदेशित किया जाता है;
- और सेवा अत्यधिक स्केलेबल है और (संभावित) अत्यधिक उपलब्ध है; प्रत्येक उदाहरण प्रति सेकंड कई हज़ार ID जनरेट कर सकता है, और आप अपने LAN / WAN पर कई इंस्टेंस चला सकते हैं;
- स्काला में लिखा गया, जेवीएम पर चलता है।
बी) आप यूयूआईडी और स्नोफ्लेक आईडी से कैसे बना है , इस दृष्टिकोण का उपयोग करके, आप स्वयं ग्राहकों पर अद्वितीय आईडी तैयार कर सकते हैं। कई विकल्प हैं, लेकिन कुछ की तर्ज पर:
सबसे महत्वपूर्ण 40 या तो बिट्स: एक टाइमस्टैम्प; आईडी का पीढ़ी समय। (हम टाइमस्टैम्प के लिए सबसे महत्वपूर्ण बिट्स का उपयोग कर रहे हैं ताकि आईडी को पीढ़ी के समय के अनुसार क्रमबद्ध बनाया जा सके।)
अगले 14 या तो बिट्स: एक प्रति-जनरेटर काउंटर, जो प्रत्येक जेनरेटर प्रत्येक नई आईडी के लिए एक-एक करके बढ़ाता है। यह सुनिश्चित करता है कि एक ही पल में उत्पन्न आईडी (समान टाइमस्टैम्प) ओवरलैप न हों।
अंतिम 10 या तो बिट्स: प्रत्येक जनरेटर के लिए एक अद्वितीय मूल्य। इसका उपयोग करते हुए, हमें जनरेटर (जो कि अत्यंत कठिन है) के बीच कोई सिंक्रनाइज़ेशन करने की आवश्यकता नहीं है, क्योंकि सभी जनरेटर इस मान के कारण गैर-अतिव्यापी आईडी का उत्पादन करते हैं।
ग) आप ग्राहकों पर सिर्फ एक टाइमस्टैम्प और यादृच्छिक मूल्य का उपयोग करके आईडी बना सकते हैं । यह सभी जनरेटर को जानने की आवश्यकता से बचता है, और प्रत्येक जनरेटर को एक अद्वितीय मूल्य प्रदान करता है। दूसरी तरफ, ऐसी आईडी की विश्व स्तर पर अद्वितीय होने की गारंटी नहीं है , वे केवल अद्वितीय होने की बहुत अधिक संभावना रखते हैं। (टकराने के लिए, एक या एक से अधिक जनरेटर को एक ही समय में एक ही यादृच्छिक मान बनाना होगा।) लाइनों के साथ कुछ:
- सबसे महत्वपूर्ण 32 बिट्स: टाइमस्टैम्प, आईडी का पीढ़ी समय।
- कम से कम महत्वपूर्ण 32 बिट्स: 32-बिट यादृच्छिकता, प्रत्येक आईडी के लिए नए सिरे से उत्पन्न।
घ) आसान तरीका है, UUIDs / GUID का उपयोग करें ।