सिंक्रनाइज़ेशन के लिए वेक्टर घड़ियों के बजाय स्पष्ट डीएजी


13

मैंने साथियों के एक समूह के बीच डेटा सिंक्रनाइज़ेशन के दृष्टिकोण को देखना शुरू कर दिया है। साथियों को डिस्कनेक्ट तरीके से काम करने में सक्षम होना चाहिए और फिर अपने स्थानीय परिवर्तनों को मर्ज करने के लिए एक साथ सिंक्रनाइज़ करना चाहिए।

साथियों को "तीन तरह से मर्ज" के साथ स्थानीय अपडेट को मर्ज करने में सक्षम होना चाहिए । इसलिए, सिंक्रोनाइज़ेशन पीयर में पता होना चाहिए कि कौन से तथ्य अधिक हाल के हैं, लेकिन जहां कोई सख्त ऑर्डर नहीं है, उन्हें सामान्य रूट पर आधारित तथ्यों को एक साथ मिलाने में सक्षम होना चाहिए।

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

ऐसा लगता है कि इस सामान्य क्रम को बनाने के लिए "सामान्य" तरीका एक वेक्टर घड़ी का उपयोग करके है । हालांकि ये बहुत बड़े हो सकते हैं। अधिक हाल के घटनाक्रम जैसे कि अंतराल पेड़ की घड़ियां समय टिकटों के अधिक कॉम्पैक्ट भंडारण प्रदान करती हैं।

मैं इस बारे में बिल्कुल स्पष्ट नहीं हूं कि सिंक्रोनाइज़ेशन प्रोटोकॉल स्पष्ट रूप से डीएजी को स्पष्ट रूप से "स्टोर" क्यों नहीं करते हैं। (या वे करते हैं?)

स्वतंत्र रूप से यूयूआईडी (या अन्य माध्यम से, जैसे <peer-name> + <local-monotonically-increasing-counter>) उत्पन्न करके सहकर्मी स्वतंत्र रूप से टाइम स्टैम्प बना सकते हैं । इस समय स्टाम्प का आदेश उस सहकर्मी के लिए पूरी तरह से स्पष्ट है।

जब 2 सहकर्मी एक-दूसरे के साथ सिंक करते हैं, तो वे नए समय की मुहर पर सहमत हो सकते हैं। फिर, इस समय की मुहर दोनों साथियों के लिए स्पष्ट है।

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

एक व्यक्तिगत समय बिंदु का उपयोग करने के लिए, आपको समय बिंदुओं के ग्राफ की आवश्यकता होती है जो इसके लिए नेतृत्व करते हैं। हालांकि, जहाँ तक मैं देख सकते हैं, किसी भी सहकर्मी कि करने में सक्षम है पता एक समय बिंदु के (यह वह खुद को उत्पन्न किया है, या किसी अन्य साथियों के साथ यह उत्पन्न, या किसी अन्य साथियों के द्वारा यह बताया गया है जब यह के साथ सिंक्रनाइज़) है भी था उस समय बिंदु तक पहुंचने वाले इतिहास के बारे में जानने का अवसर। मुझे लगता है कि इसके लिए एक प्रेरक प्रमाण है।

यह देखते हुए कि डीएजी को स्पष्ट रूप से संग्रहीत और सिंक करना सरल लगता है: क्या यह व्यवहार में उपयोग किया जाता है? यदि नहीं, तो वेक्टर घड़ियों को क्यों पसंद किया जाता है?


टिप्पणियाँ

पीयर टू पीयर

मैं एक ग्राहक सर्वर समाधान पर सहकर्मी से सहकर्मी समाधान पसंद करूंगा।

संभावित अंत टोपोलॉजी कई क्लाइंट्स होंगे जो सर्वर के बहुत छोटे समूह से जुड़ते हैं जो आपस में दोहराते हैं। हालाँकि, एक सामान्य समाधान करना अच्छा होगा जिसने इस विशिष्ट टोपोलॉजी के बजाय इस विशिष्ट टोपोलॉजी का समर्थन किया है जिसे इस विशिष्ट टोपोलॉजी की आवश्यकता है।


मैं गलत समझ सकता हूं कि आप क्या कह रहे हैं, लेकिन यह स्पष्ट नहीं है कि राज्य के लिए अग्रणी सभी घटनाओं का एक ग्राफ काउंटरों के वेक्टर से छोटा कैसे हो सकता है। जब तक आप एक ऐसी प्रणाली में होते हैं जिसमें बहुत बड़ी संख्या में नोड होते हैं और बहुत कम संख्या में परिवर्तन होते हैं।
kdgregory

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

मुझे लगता है कि यह महत्वपूर्ण बिंदु @kdgregory हो सकता है, इसलिए मैंने उस प्रश्न के बारे में थोड़ा सा जोड़ा है। मैं यह मान रहा हूं कि 3-तरफा-मर्ज करना संभव है, जिसका अर्थ यह भी है कि इतिहास के सभी ज्ञात हैं। यदि सभी इतिहास ज्ञात है (तो मुझे लगता है) एक स्पष्ट डीएजी सस्ता है। यदि इतिहास को काट दिया जाए, तो वेक्टर घड़ियाँ शायद कम खर्चीली हैं।
बेंजो

1
हाँ, वेक्टर घड़ियों की मेरी समझ यह है कि वे केवल एक स्वीकार / अस्वीकार निर्णय के लिए इरादा कर रहे हैं: "नोड सी डेटा के इस टुकड़े को अपडेट करने की कोशिश कर रहा है, लेकिन यह नोड बी के अपडेट के बारे में पता नहीं है"।
kdgregory

जवाबों:


1

जहाँ तक मैं बता सकता हूँ, Git और Mercurial जैसी संस्करण नियंत्रण प्रणालियाँ वेक्टर घड़ियों के बजाय DAG दृष्टिकोण का उपयोग करती हैं।


1
स्पष्टीकरण के बिना, यह उत्तर उस स्थिति में बेकार हो सकता है जब कोई अन्य व्यक्ति एक विपरीत राय पोस्ट करता है। उदाहरण के लिए, यदि कोई "DAG दृष्टिकोण के बजाय Git और Mercurial उपयोग वेक्टर घड़ियों की तरह Propversion नियंत्रण प्रणाली" जैसे दावे को पोस्ट करता है, तो यह उत्तर पाठक को दो विरोधी राय लेने में कैसे मदद करेगा? गुणवत्ता मानकों का जवाब कैसे दें , इसे बेहतर आकार में संपादित करने पर विचार करें
gnat

2
जिस तरह से मैंने प्रश्न को समझा, वे पूछ रहे थे कि क्या कोई वास्तविक दुनिया के उदाहरण हैं जहां वेक्टर घड़ियों के बजाय डीएजी का उपयोग किया जाता है।
bikeman868

1
Git और Mecurial दोनों DAG का उपयोग करके सहकर्मी से सहकर्मी परिवर्तन के लिए सहकर्मी की वास्तविक दुनिया के उदाहरण हैं, और मुझे उम्मीद है कि बेंजोयोन ने मेरे जवाब को उपयोगी माना, भले ही आपने इसे वोट दिया हो।
bikeman868

हाय @ bikeman868 मैंने आपको एक शुद्ध 0 (क्षमा करें) के लिए वोट दिया है। आपका जवाब है उपयोगी भले ही अनिश्चितता से couched,! जबकि संदर्भ या आधिकारिक उत्तर हमेशा अच्छे होते हैं, स्टैक एक्सचेंजों को अनिवार्य नहीं होता है! आपका सुझाव सवाल पर टिप्पणियों में अंकों के साथ अच्छी समझ रखता है। ऐसा लगता है कि जब आप इतिहास को स्टोर करना चाहते हैं और इतिहास को मर्ज करने में सक्षम हैं, तो एक डीएजी उपयुक्त है। जब आप इतिहास को संग्रहीत नहीं करते हैं और वर्तमान स्थिति पर सिंक्रनाइज़ेशन और सर्वसम्मति चाहते हैं, तो वेक्टर घड़ियां वही हैं जो आपको चाहिए।
बेंजोह

1

सर्वसम्मति समस्या पर एक नजर । आपकी कार्य आवश्यकताओं के आधार पर (आपके पास कितना डेटा है, कितने सिंकिंग नोड्स, कितनी बार आदि) उस समस्या के मौजूदा समाधान (जैसे "रफ़") आपके मामले के लिए उपयुक्त हो सकते हैं।

इस समस्या के लिए एक और (शायद स्पर्शरेखा) दृष्टिकोण एक CRDT डिजाइन कर रहा है


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

-1

एलेफ़ प्रोटोकॉल एक पी 2 पी लीडलेस प्रोटोकॉल है जो सर्वसम्मति से लेनदेन (या घटनाओं) के सेटों के वितरित डीएजी का निर्माण करता है

https://arxiv.org/pdf/1908.05156


आपको यह दिखाने के लिए अपने उत्तर का विस्तार करना चाहिए कि संदर्भित प्रोटोकॉल मूल प्रश्न द्वारा लाए गए बिंदुओं को कैसे संबोधित करता है। उत्तर को आत्मनिर्भर बनाना महत्वपूर्ण है, क्योंकि इससे सभी को इस प्रश्न का लाभ मिलता है।
BobDalgleish
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.