2015-12-10 3 views
8

मैं वितरित सिस्टम में नौसिखिया हूं और मैं सीआरडीटी की अवधारणा पर अंतर्दृष्टि प्राप्त करने की कोशिश कर रहा हूं। मुझे पता है यह तीन अंकन है:वितरित सिस्टम में सीआरडीटी क्या है?

Conflict-free Replicated Data Type 
Convergent Replicated Data Type 
Commutative Replicated Data Type 

किसी को भी एक उदाहरण है जहां हम वितरण प्रणाली में CRDT का उपयोग दे सकते हैं? अग्रिम धन्यवाद।

+0

मार्क जवाब स्वीकार किए जाते हैं, तो यह आपके सवाल का जवाब। –

उत्तर

8

सीआरडीटी मार्क शापिरो के काम से प्रेरित हैं। वितरित कंप्यूटिंग में, एक संघर्ष मुक्त प्रतिकृति डेटा प्रकार (संक्षेप में सीआरडीटी) एक मजबूत विशेष रूप से डिज़ाइन की गई डेटा संरचना का एक प्रकार है जो मजबूत अंतिम स्थिरता (एसईसी) और monotonicity (रोलबैक की अनुपस्थिति) प्राप्त करने के लिए उपयोग किया जाता है। एसईसी सुनिश्चित करने के लिए दो वैकल्पिक मार्ग हैं: ऑपरेशन-आधारित सीआरडीटी और राज्य-आधारित सीआरडीटी।

विभिन्न प्रतिकृतियों पर सीआरडीटी एक-दूसरे से अलग हो सकते हैं लेकिन अंत में उन्हें सुरक्षित रूप से लगातार मूल्य प्रदान करने में विलय किया जा सकता है। दूसरे शब्दों में, सीआरडीटी के पास विलय विधि है जो बेवकूफ, कम्यूटेटिव और सहयोगी है।

दो विकल्प समकक्ष हैं, क्योंकि कोई दूसरे को अनुकरण कर सकता है, लेकिन ऑपरेशन-आधारित सीआरडीटी को संचार मिडलवेयर से अतिरिक्त गारंटी की आवश्यकता होती है। सीआरडीटी का उपयोग नेटवर्क में एकाधिक कंप्यूटरों में डेटा को दोहराने के लिए किया जाता है, रिमोट सिंक्रनाइज़ेशन की आवश्यकता के बिना अद्यतन निष्पादित करता है। इससे परंपरागत अंतःक्रियात्मक स्थिरता तकनीक का उपयोग कर सिस्टम में संघर्ष विलय हो जाएगा, लेकिन सीआरडीटी इस प्रकार डिज़ाइन किए गए हैं कि संघर्ष गणितीय रूप से असंभव हैं। सीएपी प्रमेय की बाधाओं के तहत वे उपलब्ध/विभाजन-सहिष्णु (एपी) सेटिंग्स के लिए सबसे मजबूत स्थिरता गारंटी प्रदान करते हैं।

कुछ उदाहरण हैं जहाँ वे

उपयोग किया जाता है Riak CRDT के सबसे लोकप्रिय खुला स्रोत पुस्तकालय है और Bet365 और किंवदंतियों के लीग द्वारा प्रयोग किया जाता है। नीचे कुछ उपयोगी लिंक हैं जो Riak का समर्थन करते हैं।

1- Bet365 (का उपयोग करता है Erlang और Riak) http://www.erlang-factory.com/static/upload/media/1434558446558020erlanguserconference2015bet365michaelowen.pdf

महापुरूष की

2- संघ ने अपने इन-गेम चैट प्रणाली के लिए Riak CRDT कार्यान्वयन

(जो 75 लाख समवर्ती उपयोगकर्ताओं और प्रति सेकंड 11,000 संदेशों संभालती है) का उपयोग करता है

3 रोशी एक उच्च शक्ति का समय मुहर लगी सेट का समर्थन करता है कि SoundCloud द्वारा कार्यान्वित: -Blog पोस्ट: https://developers.soundcloud.com/blog/roshi-a-crdt-system-for-timestamped-events

1

परिवर्णी शब्द के उन तीन विस्तारों का मूल रूप से वही बात है।

एक सीआरडीटी अभिसरण है यदि एक ही अनुक्रम एक ही अनुक्रम में लागू होता है (उसी पर परिवर्तित होता है)। यही है, संचालन को कम किया जा सकता है - यह एक कम्यूटिव आरडीटी है। कारण यह है कि संचालन को एक अलग अनुक्रम में लागू किया जा सकता है और फिर भी वही परिणाम मिलता है कि ऑपरेशन संघर्ष मुक्त हैं।

तो सीआरडीटी का मतलब वही बात है, जो भी आप तीन विस्तारों का उपयोग करते हैं - हालांकि व्यक्तिगत रूप से मैं "अभिसरण" पसंद करता हूं।

+0

बहुत धन्यवाद @cliffordheath। आपने सभी तीन शब्दावली विस्तार से समझाया। लेकिन क्या आप इसके लिए एक उदाहरण साइट कर सकते हैं? –

+0

सीआरडीटी के लिए पहली बार Google हिट उदाहरण के साथ विस्तार से बताती है। मैंने अभी समझाया कि नामों का मतलब एक ही चीज़ क्यों है। – cliffordheath

1

CRDTs, गणित का उपयोग एक वितरित क्लस्टर भर में स्थिरता को लागू करने की सहमति और के बारे में चिंता किए बिना एसोसिएटेड विलंबता/अनुपलब्धता।

एक सीआरडीटी किसी भी समय अर्ध-जाली (विशेष रूप से एक अर्ध-जाली में शामिल होने) की श्रेणी के अंतर्गत आने वाले मूल्यों का सेट, जो कम से कम ऊपरी बाउंड फ़ंक्शन के साथ एक पीओएसईटी (आंशिक रूप से आदेशित सेट) है (एलयूबी)।

सरल शब्दों में, एक पीओएसईटी उन वस्तुओं का संग्रह होता है जिनमें सभी तुलनीय नहीं होते हैं। जैसे जोड़े की एक सरणी में: {(2,4), (4, 5), (2, 1), (6, 3)}, (2,4) < (4,5) है, लेकिन इसकी तुलना (6,3) से की जा सकती है (क्योंकि एक तत्व बड़ा है और दूसरा छोटा)। अब, अर्ध-जाली एक पीओएसईटी है जिसमें 2 जोड़े दिए जाते हैं, भले ही आप दोनों की तुलना नहीं कर सकें, आप दोनों से अधिक तत्व पा सकते हैं।

एक और शर्त यह है कि इस डेटाटाइप के अपडेट में वृद्धि की आवश्यकता है, सीआरडीटी के पास राज्य में बढ़ती स्थिति है, जहां ग्राहक कभी भी राज्य रोलबैक नहीं देखते हैं।

यह excellent article उदाहरण के रूप में ऊपर उपयोग की गई सरणी का उपयोग करता है। उन मानों को बनाए रखने वाले सीआरडीटी के लिए, यदि 2 प्रतिकृतियां (4,5) और (6,3) के बीच सर्वसम्मति प्राप्त करने की कोशिश कर रही हैं, तो वे सर्वसम्मति के रूप में एक LUB = (6,5) चुन सकते हैं और दोनों प्रतिकृतियां असाइन कर सकते हैं। चूंकि मान बढ़ रहे हैं, इसलिए यह व्यवस्थित करने के लिए एक अच्छा मूल्य है।

2 तरीके CRDTs के लिए प्रतिकृतियां भर में एक दूसरे के साथ सिंक में रखने के लिए, वे के रूप में वे उन्हें (विनिमेय दोहराया डेटा प्रकार मिल भर में समय-समय पर (अभिसरण दोहराया डेटा प्रकार) भर में राज्य हस्तांतरण कर सकते हैं, या वे अद्यतन (डेल्टा) स्थानांतरित कर सकते हैं है)। पूर्व में अधिक बैंडविड्थ लेता है।

साउंडक्लाउड Roshi एक अच्छा उदाहरण है (हालांकि विकास में अब ऐसा नहीं लगता है), वे टाइमस्टैम्प से जुड़े डेटा को स्टोर करते हैं, जहां टाइमस्टैम्प स्पष्ट रूप से बढ़ रहा है। टाइमस्टैम्प के साथ आने वाले किसी भी अपडेट को कम या उसके द्वारा संग्रहीत किए गए बराबर के साथ आने वाले किसी भी अपडेट को छोड़ दिया जाता है, जो निष्क्रियता सुनिश्चित करता है (बार-बार लिखने के लिए ठीक है) और कम्यूटिटीविटी (ऑर्डर लिखने से ठीक है। कम्यूटिटीविटी a=b means b=a है, जो इस मामले में अपडेट 1 के बाद अपडेट 2 है Update1 के बाद Update2)

लिखता है read-repair के माध्यम से सभी समूहों के लिए भेजा जाता है, और अगर कुछ नोड्स सुस्ती या विभाजन की तरह किसी समस्या के कारण उत्तर नहीं दे पाते, वे बाद में पकड़ने के लिए उम्मीद कर रहे हैं, जो यह सुनिश्चित करता है के रूप में ही मान अभिसरण। जैसा कि मैंने उपर्युक्त उल्लेख किया है, अभिसरण 2 प्रोटोकॉल के माध्यम से हासिल किया जा सकता है, अन्य प्रतिकृतियों के लिए राज्य या अद्यतन प्रसारित किया जा सकता है। मेरा मानना ​​है कि रोशी पूर्व करता है। read-repair के हिस्से के रूप में, प्रतिकृतियां एक्सचेंज स्थिति, और क्योंकि डेटा अर्ध-जाली संपत्ति का पालन करता है, वे अभिसरण करते हैं।

पी एस। सीआरडीटी का उपयोग कर सिस्टम अंततः संगत होते हैं, यानी वे CAP theorem में एपी (अत्यधिक उपलब्ध और विभाजन-सहिष्णु) को अपनाते हैं।

Another excellent read on the subject.

संबंधित मुद्दे