2008-12-08 15 views
20

मैं एक ऐसे अनुप्रयोग के डिजाइन के शुरुआती चरणों में हूं जो अत्यधिक उपलब्ध और स्केलेबल होना चाहिए। मैं इसके लिए कई कारणों से एक अंतिम स्थिरता डेटा मॉडल का उपयोग करना चाहता हूं। मैं जानता हूं और समझता हूं कि यह कई समाधानों के लिए एक अलोकप्रिय वास्तुकला पसंद क्यों है, लेकिन यह मेरे मामले में महत्वपूर्ण है।अंतिम संगतता

मैं वितरित/दस्तावेज़-शैली डेटाबेस से निपटने के लिए वास्तविक दुनिया की सलाह, सर्वोत्तम प्रथाओं और गॉथस की तलाश में हूं। और विशेष रूप से ई-कॉमर्स (शॉपिंग कार्ट स्टाइल) ऐप्स के आस-पास के क्षेत्रों जो परंपरागत रूप से एक रिलेशनल डीबी के साथ एक साथ रखना आसान है।

मैं समझता हूं कि इन प्रकार के डीबी का उपयोग चुनौतीपूर्ण है, लेकिन हे, Google और ई-बे उनका उपयोग करते हैं ताकि वे कठिन न हो ;-) किसी भी सलाह की सराहना की जाएगी।

उत्तर

0

रिलेशनल डेटाबेस का उपयोग करके उच्च उपलब्धता और स्केलेबिलिटी को कैसे प्राप्त किया जा सकता है और यह कैसे किया जाए इस पर ज्ञान का एक विशाल निकाय है!

Google एक विशेष मामला है जो अधिकांश साइटों पर लागू नहीं होता है, बहुत अधिक मात्रा में प्रश्न, बहुत बड़ी मात्रा में डेटा, और सबसे महत्वपूर्ण बात यह है कि इसके अधिकांश उपयोगकर्ताओं के साथ सेवा स्तर समझौते नहीं हैं। वेब खोज के लिए केवल सही उत्तर देने का कोई सही उत्तर नहीं है, औसत उपयोगकर्ता के लिए Google पर्याप्त है, यदि Google किसी खोज सूची से एक महत्वपूर्ण पृष्ठ याद करता है, जिसे उपयोगकर्ता शिकायत नहीं कर सकता है।

ई-बे एक अलग मामला है, किसी भी तरह से उन्होंने उपयोगकर्ताओं और ग्राहकों को सैद्धांतिक रूप से कम कीमतों के बदले में खराब सेवा स्वीकार करने के लिए राजी किया है - उन पर अच्छा है लेकिन यह हर व्यवसाय के लिए एक विकल्प नहीं है।

+0

और यह नीचे मतदान किया गया था - क्यों? –

18

यदि आप एक वितरित प्रणाली ("अंतिम संगतता" चीज) चाहते हैं तो आपको लोगों की आवश्यकता है, निर्माण, रखरखाव और इसे संचालित करने की आवश्यकता है।

मैंने पाया लोगों की तीन वर्गों जो "अंततः संगति" के साथ बहुत कम समस्या नहीं देखते हैं कि:

वितरण प्रणाली में एक ठोस पृष्ठभूमि के साथ
  • लोग। उन्होंने अंतिम संगति Byzantine Failures और उस तरह की चीजों के बारे में सीखा है। यदि आप समझते हैं कि Paxos छुट्टियों के बारे में नहीं है, तो आप शायद उनमें से एक हैं।
  • लोग नेटवर्क प्रोग्रामिंग में अनुभव करते हैं। वे सैद्धांतिक पृष्ठभूमि को याद कर सकते हैं लेकिन असीमितता की अंतर्ज्ञानी समझ है और "कोई वैश्विक घड़ियों & काउंटर" प्रतिमान नहीं है। यदि आपके पास Richard Stevens द्वारा कम से कम 8 पुस्तकें हैं तो आप शायद उनमें से एक हैं।
  • बहुत अनुभवी कोडर जिनके पास आरडीबीएमएस के साथ थोड़ा जोखिम था। कर्नेल लोग, वैज्ञानिक कंप्यूटिंग और गेमिंग उद्योग के लोग दिमाग में आते हैं।

इन सभी लोगों में नौकरी बाजार में बहुत मांग की जाती है। उदाहरण के लिए वितरित सिस्टम में शिक्षाविदों का 75% या उससे अधिक संस्थान उन संस्थानों के लिए जाते हैं जो बड़े, स्वयं-डिज़ाइन किए गए वितरित सिस्टम चलाते हैं, उदा। स्टॉक एक्सचेंज

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

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

वितरित डेटाबेस के लिए बहुत कम अनुभव है। यही कारण है कि अब तक आपको बहुत कम सलाह मिली है।

यदि आप "अंतिम संगति" का उपयोग करने के लिए दृढ़ हैं, तो मुझे लगता है कि अपरिपक्व उपकरणों के अलावा मुख्य चुनौती शामिल सभी की मानसिकता है। क्या आपके एपीआई उपयोगकर्ता (कोडर) और एप्लिकेशन उपयोगकर्ता (आपके कर्मचारी और आपके ग्राहक) असंगतता को स्वीकार करने में सक्षम हैं और सक्षम हैं? क्या आप इसे उपयोगकर्ताओं के कुछ वर्गों से छुपा सकते हैं? हम उस मानसिकता के लिए उपयोग नहीं करते हैं कि कंप्यूटर असंगत हैं। स्टॉक में कुछ है या यह नहीं है। "हो सकता है" उत्तर उपयोगकर्ता की उम्मीद नहीं है।

यह भी ध्यान रखें कि "अंतिम" एल्गोरिदम डिजाइनरों के लिए बहुत लंबा समय हो सकता है। आप कितनी देर तक असंगतता स्वीकार कर सकते हैं?

एक शॉपिंग कार्ट एप्लिकेशन के लिए आप वास्तव में वितरित करना चाहते हैं: ग्राहक ब्राउज़र को डेटा स्टोर के रूप में उपयोग करें। चेकआउट पर आप कार्ट साइड बैच प्रसंस्करण प्रणाली में गाड़ी जमा कर सकते हैं। इसका मतलब यह है कि आपको केवल उच्च उपलब्धता (आसान) पढ़ने की आवश्यकता है और कार्ट सबमिशन लेनदेन की आवश्यकता के बिना एक बहुत संकीर्ण इंटरफ़ेस है। बाद में आदेश की प्रसंस्करण पर कोई (सॉफ्ट) वास्तविक समय की आवश्यकता नहीं है और इस प्रकार यह आसान है।

बीटीडब्ल्यू: पिछली बार मैंने ई-बे आर्किटेक्चर पर जांच की जहां वे आरडीबीएमएस में बड़े थे लेकिन तब से यह बदल सकता है। (संपादित करें: यह बदल गया - टिप्पणियां देखें)

+0

देखें http://www.infoq.com/articles/ebay-scalability-best-practices –

+2

मुझे लगता है कि इसका हिस्सा जीभ-इन-गाल है: अपने स्वयं के वेब पेज के अनुसार, डब्ल्यू रिचर्ड स्टीवंस ने केवल सात पुस्तकें प्रकाशित की हैं ! –

+1

मैं "शायद" भाग में किसी कारण से हँसे ... अमेज़ॅन को चित्रित करते हुए मुझे बता रहा है कि इसमें स्टॉक में कुछ हो सकता है और मुझे शायद चार्ज किया जा सकता है लेकिन वे इसके बारे में मेरे पास वापस आ जाएंगे। – Merritt

0

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

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

स्रोत: http://www.techspritz.com/eventual-consistency-and-base-model/

4

अपने समस्या का एकमात्र समाधान तय करने के लिए जो CAP theorem में tradeoffs आपके लिए सही है, तो यह लागू करने के लिए शुरू होता है।

mdorseif का एक बड़ा बिंदु है। स्थिरता, उपलब्धता और विभाजन से आप कितनी हद तक व्यापार करते हैं, इसकी कई विन्यास हैं। आपके पास दो मुख्य विकल्प हैं।

  1. जाओ एक आंतरिक वितरित प्रणाली के मार्ग तय करने के लिए क्या पैमाने के रूप में अपनी आवश्यकताओं को संभाल कर सकते हैं वितरित डेटाबेस की संख्या के साथ
  2. वेट और प्रयोग (विशेषज्ञता और अनुसंधान के बहुत सारे लेता है)।

यह शायद एक अधिक सरलीकरण है। एक वास्तविक उत्पादन-तैयार पाइपलाइन एक पर्यावरण प्रणाली है। यह आपको कम से कम सही रास्ते पर ले जाएगा।

Appnexus एक विज्ञापन मंच है जो बहुत उच्च उपलब्धता और अंतिम स्थिरता के लिए hbase का उपयोग करता है। वे इस here के बारे में बहुत कुछ बोलते हैं।

एक articlehttp://highscaleability.com पर रूपरेखा कैसे न्यूयॉर्क टाइम्स दोष सहिष्णुता और उच्च उपलब्धता के लिए एक वैन भर Cassandra साथ RabbitMQ कार्यान्वित किया।

MongoDB लेखन चिंताओं के कार्यान्वयन के साथ उपलब्धता के साथ संतुलन स्थिरता में लचीलापन का एक बड़ा सौदा प्रदान करता है। उन्हें उत्कृष्ट documentation मिल गया है जो कि सभी गॉथस (विभाजन सहित) के साथ इसे कार्यान्वित करने के तरीके को हाइलाइट करता है। वे नेटवर्क पर राज्य को बनाए रखने के लिए two-phase commit को लागू करते हैं (उनके कॉन्फ़िगर सर्वर पर)।

Google इस विषय पर एक महान पेपर है, उनके photon प्रोजेक्ट कुछ अन्य तकनीकों के साथ paxos algoritm at the heart of it के साथ एक उच्च स्केलेबल, अत्यधिक विश्वसनीय प्रणाली लागू करता है। यह क्षेत्रीय असफलताओं तक खड़े होने के साथ-साथ बहुत ही सुसंगत (लगभग 10 के अंत तक विलंबता के साथ) और गलती सहनशील होता है।

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