2012-06-28 29 views

उत्तर

32

यदि आप सीआरडीटी जैसे कुछ का उपयोग कर सकते हैं, तो ऐसा करें। आपको बहुत बेहतर प्रदर्शन करना चाहिए। यह दिलचस्प उपयोग मामलों जैसे ऑफलाइन काम करने और फिर बाद में विलय करने में सक्षम बनाता है। हालांकि चीजों को डिजाइन करना हमेशा संभव नहीं होता है जैसे कि सीआरडीटी आपके लिए काम करेगा। उस स्थिति में, पैक्सोस आपके लिए कठिन समस्याएं हल कर सकता है।

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

यह कहा गया है, यह कहा गया है यह दावा करना बहुत आसान है कि आप व्यावहारिक रूप से इसे अभ्यास में करने के बजाय पैक्सो के जादू की छड़ी को घुमाएंगे। उस प्रकाश में आपको http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/archive/chubby-osdi06.pdf मिल सकती है जो कि वास्तविक दुनिया के पैक्सोस कार्यान्वयन की संभावनाओं का एक दिलचस्प वर्णन है।

+4

आज जो भी इसे पढ़ता है, उसके लिए यदि आप पैक्सो को लागू करने की सोच रहे हैं तो आपको शायद ज़ूकीपर का उपयोग करना चाहिए। और यदि आप वितरित स्थिरता से निपटने की कोशिश कर रहे हैं, तो आपको https://aphyr.com/tags/jepsen पढ़ना चाहिए, फिर पहिया को फिर से शुरू करने की कोशिश न करने के बारे में लंबे और कठिन सोचें। – btilly

12

मुझे लगता है कि इस आदमी को पता है कि वह क्या बारे में बात कर रहा है:

Blog

Video

Conclusion about distributed systems

+1

विस्मयकारी वीडियो। लिंक के लिए आपको धन्यवाद! – asmaier

+0

बहुत अच्छा लिंक धन्यवाद! –

-2

जब भी यह उचित है। हालांकि, पैक्सोस इतना खराब नहीं है क्योंकि इसका थ्रूपुट आमतौर पर सीआरडीटी के समान होता है, यह उल्लेख नहीं करता कि विश्वसनीयता बहुत अधिक है (सीआरडीटी परिणामस्वरूप राज्य खो सकता है), और इसकी विलंबता खराब नहीं है और न ही इसे बहुमत की आवश्यकता है प्रतिकृतियों के बजाय सभी के जवाब।

+2

क्या आप पक्सोस की तुलना में कथन का बैक अप ले सकते हैं "पक्सोस उतना बुरा नहीं है जितना कि इसके थ्रुपुट आमतौर पर सीआरडीटी के समान होता है" और "सीआरडीटी परिणामस्वरूप राज्य खो सकता है"। –

+0

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

+0

हालांकि यह सच है कि सभी लिखने के अनुरोधों को सभी प्रतिकृतियों के लिए प्रचारित करने की आवश्यकता है। मुझे नहीं लगता कि पक्सोस वास्तव में सीआरडीटी के मुकाबले किसी भी प्रदर्शन लाभ में परिणाम देता है। आप इस तथ्य से प्रदर्शन प्राप्त करते हैं कि आप कई नोड्स को एक साथ लिख सकते हैं। उल्लेख नहीं है कि पैक्सोस के साथ आपको आम तौर पर प्रतिकृति करने की आवश्यकता होती है। इसके अलावा पैक्सोस में भी यह संपत्ति है कि यह आपको मजबूर करती है कि आपके पास बाधाएं हैं (मास्टर नोड)। –

3

सीआरडीटी ट्राइडोक उदाहरण के साथ एक दोष है। प्रत्येक नोड को उस मामले के लिए एक असंबद्ध की आवश्यकता होती है जब एक ही कुंजी के साथ एक ही समय में दो सिस्टम डालें।

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

यह अनियमित समस्या, साथ ही तथ्य यह है कि आपको दो चरणों को करने की आवश्यकता है मेटा-डेटा मुझे लगता है कि सीआरडीटी अभी भी प्रगति पर एक काम कर रहे हैं।

+1

सीआरडीटी के Riak कार्यान्वयन के बारे में आप क्या सोचते हैं? –

+2

सेट के विभिन्न स्वाद में ट्रेडोक की तरह ही समस्या नहीं होती है, वे दृढ़ जमीन पर हैं। मैं अपनी नकारात्मकता में थोड़ा सा सामान्य था, लेकिन ट्रेडोक सीआरडीटी के लिए मेरा पहला एक्सपोजर था। ध्यान दें कि अलग-अलग सेटों में सभी में कमी और qwerks हैं, लेकिन वास्तव में कोई भी गणितीय अर्थ में एक सेट नहीं है, यही कारण है कि कई अलग-अलग प्रकार हैं। तो सीआरडीटी कुल समाधान नहीं है, आपको यह करना होगा कि आपके आवेदन के लिए कौन से qwerks ठीक हैं, लेकिन सीएपी को दिए गए कुल समाधान के लिए कभी भी ऐसा नहीं होगा। –

1

अनेक मीट्रिक हमारे पास हैं:

  • प्रवाह क्षमता (CRDT और Paxos ही कर रहे हैं, क्योंकि सभी अनुरोधों को अंत में सभी प्रतिकृतियां कोई फर्क नहीं पड़ता CRDT या Paxos पर दोहराया जाता है);
  • विलंबता (सीआरडीटी पैक्सोस से बेहतर है क्योंकि यह प्रतिकृतियों की छोटी संख्या को लिखती है);
  • विश्वसनीयता (सीआरडीटी पैक्सोस से कमजोर है क्योंकि यह छोटी संख्या में प्रतिकृतियां (बहुमत से छोटी) को लिखती है जो परिणामस्वरूप राज्य खो सकती है);
  • स्थिरता (क्योंकि यह, तुल्यकालन बिंदु (मूल रूप से कोई अतिव्यापी प्रतिकृतियां) के बिना समवर्ती लेखन की अनुमति देता है Paxos लिखते हैं जबकि हमेशा क्रमबद्धता करने के लिए एक अतिव्यापी प्रतिकृति की आवश्यकता है CRDT Paxos की तुलना में कमजोर है)।

मेरे सुझाव है कि हम Paxos का उपयोग करना चाहिए जब प्रतिकृतियां दूर नहीं एक दूसरे को (जैसे, एक डाटा सेंटर के भीतर) से हो रहा है, और उपयोग CRDT जब नेटवर्क विभाजन एक सामान्य (जैसे, कट मोबाइल) है।

2

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

आइए कहें कि हमारे पास एक प्रतिकृति सेट है जिसे दो अलग-अलग स्थानों पर दोहराया गया है।

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

यदि आप हैं, उदाहरण के लिए, replica1 पर Update1 प्रदर्शन दोहराया सेट करने के लिए तत्व 1 जोड़ने जबकि एक साथ user2 प्रदर्शन Update2, replica2 पर element2 जोड़ने, Paxos प्रतिकृतियां उन अद्यतन के लिए किसी दिए गए आदेश पर सहमत हैं, या कर देगा user1 आप इसका उपयोग कैसे करते हैं और आप क्या हासिल करना चाहते हैं, इस पर निर्भर करते हुए, दो अपडेटों में से एक को चुनने और दूसरे को छोड़ने पर संभवतः सहमत हैं। यदि पैक्सोस परिणाम है, तो कहें कि अद्यतन 1 अपडेट 2 से पहले आता है, प्रत्येक प्रतिकृति उस क्रम में सेट अपडेट करेगी। परिणामस्वरूप, उन अद्यतनों के साथ समसामयिक रूप से सेट पढ़ने वाले उपयोगकर्ता देख सकते हैं कि वे कहां (जिस पर प्रतिकृति) पढ़ते हैं, केवल सेट के निम्नलिखित राज्य (माना जाता है कि सेट भिखारी पर खाली था):

{ } (खाली सेट)

{element1}

{element1, element2}

इसके अलावा, इन राज्यों केवल इसी क्रम में देखा जा सकता है, जिसका अर्थ है कि एक बार सेट की स्थिति है {element1, element2 } (प्रत्येक प्रतिकृति पर), कोई भी बाद में पढ़ा नहीं जाएगा {} या {element1}।

सकारात्मक पक्ष: यह सेट कारणों के लिए आसान है, क्योंकि यह एक ऐसे सेट के बराबर है जो दोहराया नहीं गया है।

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

सीआरडीटी की कमजोर गारंटी है। एक सीआरडीटी सेट अनुक्रमिक, सिंगल-कॉपी एक के बराबर नहीं है। यह अनुमान है कि प्रतिकृतियां कैसे अपडेट की जाती हैं इस पर कोई समझौता या कुल आदेश नहीं है।

सीआरडीटी गारंटी देते हैं कि यदि सेट के दोनों प्रतिकृतियों ने एक ही अद्यतन देखा है (चाहे वे उन्हें देख सकें), तो वे एक ही राज्य प्रदर्शित करेंगे; प्रतिकृतियां अभिसरण करेंगे।

दो उपयोगकर्ताओं के हमारे उदाहरण में एक साथ अद्यतन करने के उदाहरण में, एक प्रणाली जो सेट पर संचालन के क्रम में पक्सो नहीं चलाती है (ऐसा होता है, उदाहरण के लिए, अंतिम या कारण स्थिरता के तहत), replica1 को तत्व 1 जोड़ने की अनुमति देगा जबकि replica2 है element2

जोड़ने हां, तो replica1 पर राज्य होगा: {} element1

और replica2 पर राज्य होगा: {} element2

समय में इस बिंदु पर, प्रतिकृतियां वितरित हो जाते हैं। बाद में, जब प्रतिकृतियां सिंक्रनाइज़, वे अपने अद्यतन आदान-प्रदान करेंगे, अंत में इस राज्य का प्रदर्शन:

replica1 पर

राज्य होगा: {element1, element2}

replica2 पर राज्य होगा: {element2, element1}

इस समय, प्रतिकृतियां एकत्र हो गई हैं।

उन अपडेट का समवर्ती सेट पढ़ने उपयोगकर्ता, का निरीक्षण कर सकते हैं जहां (जो प्रतिकृति पर) वे पढ़ने के आधार पर, सेट के निम्नलिखित राज्यों (सेट संभालने शुरुआत में खाली था):

{} (खाली सेट)

{element1} (यदि वे replica1 से पढ़ें)

{element2} (यदि वे replica2 से पढ़ें)

{element1, element2}

{element2, element1}

नकारात्मक पक्ष: यह सेट कारणों के लिए कठिन है, क्योंकि यह उन राज्यों को दिखाता है जो अनुक्रमिक सेट में नहीं हो सकते हैं। हमारे उदाहरण में, हमने केवल दो समवर्ती जोड़ों को एक सेट में देखा है, जो सीधा है। समवर्ती कहते हैं और निकालने के और अधिक जटिल विभिन्न मुद्दों के साथ कई डेटाटाइप्स रहे हैं कर रहे हैं:

A comprehensive study of Convergent and Commutative Replicated Data Types

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