2012-11-19 22 views
8

मैं मास्टर/स्लेव से एचआरडी में एक आवेदन माइग्रेट करने की प्रक्रिया में हूं। मैं कुछ टिप्पणियां सुनना चाहूंगा जो पहले ही माइग्रेशन के माध्यम से गए थे।अभ्यास में, एचआरडी में "अंतिम स्थिरता" अंततः कैसे होती है?

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

  2. मैं प्रति सेकंड एक इकाई समूह (1) प्रति इकाई समूह की सीमा के कुछ दावों के बारे में भी चिंतित था। मैंने() एक ही पूर्वजों के साथ 30 इकाइयां रखीं (एक ही HTTP अनुरोध लेकिन एक (एक) डाल दिया) और मूल रूप से पूर्वजों के बिना 30 इकाइयों को रखने से कोई अंतर नहीं था। (मैं NDB उपयोग कर रहा हूँ, हो सकता है यह अनुकूलन किसी तरह का कर रहा?)

मैं बिना किसी ट्रैफ़िक एक खाली एप्लिकेशन के साथ यह परीक्षण किया है और मैं सोच रहा हूँ कितना एक असली यातायात "अंतिम स्थिरता" पर असर पड़ेगा।

मुझे पता है कि मैं स्थानीय विकास पर "अंतिम स्थिरता" का परीक्षण कर सकता हूं। मेरा सवाल है:

क्या मुझे वास्तव में अंतिम स्थिरता को संभालने के लिए अपने ऐप को पुन: स्थापित करने की आवश्यकता है?

या इसे छोड़ने के लिए स्वीकार्य होगा क्योंकि अंतिम स्थिरता वास्तव में 99% के लिए अभ्यास में संगत है?

+0

आपने 1 से कम सभी इकाइयों को कैसे सूचीबद्ध किया? –

+1

आपका आवेदन क्या करता है? यदि आपके लेखन अंततः सुसंगत थे तो क्या दृश्यमान, नकारात्मक प्रभाव होंगे? –

+0

ndb आपके पुट के ऑटो-बैचिंग कर सकता है, https://code.google.com/p/appengine-ndb-experiment/source/browse/ndb/context.py#703 देखें – proppy

उत्तर

1

यदि आपके पास एक छोटा ऐप है तो आपका डेटा संभवतः उसी डिस्क के उसी हिस्से पर रहता है और आपके पास एक उदाहरण है। आप शायद अंतिम स्थिरता नहीं देखेंगे। जैसे ही आपका ऐप बढ़ता है, आप इसे और अधिक देखते हैं। आम तौर पर यह स्थिरता तक पहुंचने के लिए मिलीसेकंड लेता है, लेकिन मैंने उन मामलों को देखा है जहां इसे एक घंटे या अधिक समय लगता है।

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

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

0

यदि आपको असंगत परिणाम मिलते हैं तो सबसे बुरा मामला क्या है?

  • क्या कोई उपयोगकर्ता कुछ महत्वपूर्ण जानकारी देखता है जो पुराना है? यह शायद ठीक है।

  • क्या आप कुछ महत्वपूर्ण मूल्य की तरह कुछ महत्वपूर्ण अनुमान लगाएंगे? या दुकान में स्टॉक में वस्तुओं की संख्या? उस स्थिति में, आप उस अवसर से बचने के लिए चाहते हैं।

अवलोकन से केवल, ऐसा लगता है जैसे अंत में संगत परिणाम अधिक दिखाई के रूप में अपने डाटासेट बड़ा हो जाता है, मैं के रूप में अपने डेटा और अधिक गोलियाँ भर में विभाजित किया गया है संदेह है।

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

0

प्रतिकृति गति मुख्य रूप से सर्वर-वर्कलोड-निर्भर होने जा रही है। आम तौर पर एक अनलोड सिस्टम पर प्रतिकृति विलंब मिलीसेकंड होने जा रहा है।

लेकिन "अंततः संगत" का विचार यह है कि आपको अपना ऐप लिखना होगा ताकि आप उस पर भरोसा न करें; किसी भी प्रतिकृति विलंब को आपके आवेदन की बाधाओं के भीतर स्वीकार्य होने की आवश्यकता है।

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