2010-10-07 16 views
7

लघु संस्करण: क्या हम परिमाण के आदेशों से प्रदर्शन बढ़ाने के लिए बहु-थ्रेडेड तरीके से दर्जन या सैकड़ों तालिका विभाजनों से पढ़ सकते हैं?बड़े पैमाने पर समानांतर थ्रेडेड रीडिंग से अज़ूर टेबल स्टोरेज प्रदर्शन

लंबा संस्करण: हम एक ऐसे सिस्टम पर काम कर रहे हैं जो Azure टेबल संग्रहण में लाखों पंक्तियों को संग्रहीत कर रहा है। हम डेटा को छोटे विभाजनों में विभाजित करते हैं, जिनमें से प्रत्येक में लगभग 500 रिकॉर्ड होते हैं, जो एक इकाई के लिए एक दिन के डेटा का प्रतिनिधित्व करता है।

चूंकि Azure में एक वर्ष के डेटा को खींचने के लिए "योग" सुविधा नहीं है, इसलिए हमें या तो कुछ प्री-कैशिंग का उपयोग करना होगा, या डेटा को स्वयं एज़ूर वेब या कार्यकर्ता भूमिका में जोड़ना होगा।

मान लिया जाये कि निम्नलिखित: - एक विभाजन पढ़ना एक और के प्रदर्शन को प्रभावित नहीं करता है - एक विभाजन पढ़ना है एक टोंटी नेटवर्क की गति और सर्वर पुनः प्राप्ति के आधार पर

हम तो एक अनुमान ले जा सकते हैं, तो हम चाहते थे कि फ्लाई (1 वर्ष, 365 विभाजन) पर बहुत से डेटा को जल्दी से समेटने के लिए, हम बड़े पैमाने पर समांतर एल्गोरिदम का उपयोग कर सकते हैं और यह थ्रेड की संख्या के लगभग पूरी तरह से स्केल करेगा। उदाहरण के लिए, हम 50+ धागे के साथ .NET समांतर एक्सटेंशन का उपयोग कर सकते हैं और एक बड़ा प्रदर्शन बढ़ावा प्राप्त कर सकते हैं।

हम कुछ प्रयोग स्थापित करने पर काम कर रहे हैं, लेकिन मैं देखना चाहता था कि यह पहले किया गया है या नहीं। चूंकि .NET पक्ष मूल रूप से उच्च विलंबता संचालन पर प्रतीक्षा कर रहा है, यह बहु-थ्रेडिंग के लिए बिल्कुल सही लगता है।

+0

क्या आपके पास इस 6 साल बाद कोई टिप्पणी है? – mayu

+0

हां, यह पूरी तरह से एक अच्छा विचार है, खासकर जब समय के साथ स्केलेबिलिटी लक्ष्य बढ़ रहे हैं। सीमाओं को समझने के लिए इस पृष्ठ पर एक नज़र डालें: https://docs.microsoft.com/en-us/azure/storage/storage-scalability- लक्ष्य –

उत्तर

4

किसी भी समय अवधि (कहीं 500 रीक/एस) में भंडारण खाते और किसी विशेष विभाजन या संग्रहण सर्वर के विरुद्ध किए जा सकने वाले लेनदेन की संख्या पर लगाई गई सीमाएं हैं। तो उस अर्थ में, समानांतर में निष्पादित अनुरोधों की संख्या के लिए एक उचित सीमा है (इससे पहले कि यह एक डीओएस हमले की तरह दिखने लगे)।

इसके अलावा, कार्यान्वयन में, मैं ग्राहक पर लगाए गए समवर्ती कनेक्शन सीमा से सावधान रहूंगा, जैसे कि System.Net.ServicePointManager। मुझे यकीन नहीं है कि Azure स्टोरेज क्लाइंट उन सीमाओं के अधीन है; उन्हें समायोजन की आवश्यकता हो सकती है।

+0

प्रति वर्ग के लिए 500 req/s की सीमा है। खाते के लिए सीमा प्रति सेकंड "कुछ हज़ार" है। एक छोटे से वीएम का उपयोग करके मैंने 20 से अधिक धागे का उपयोग करके बहुत कम प्रदर्शन सुधार देखा है। – knightpfhor

+1

अभी तक अपडेट करें - मेरे परीक्षण में, मैं 365 धागे का उपयोग करके 365,000 पंक्तियों को पढ़ने में सक्षम था, और मुझे डेटा लगभग 7 सेकंड में मिला। 30 धागे का उपयोग करके 30,000 पंक्तियों में 30 विभाजनों में फैला, मैं औसत 1.4 सेकंड था। भारी जीत! –

+2

@JasonYoung क्या आप कुछ कोड नमूने पोस्ट कर सकते हैं? – Alkasai

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