.NET

2008-11-03 8 views
6

पर सेवा स्तरों के लिए स्केलिंग रणनीतियों मैं कई मॉड्यूलर वेब अनुप्रयोगों से बना एक वेब उत्पाद पर काम कर रहा हूं। अंतिम उपयोगकर्ता के लिए, यह एक एकल अनुप्रयोग प्रतीत होता है, हालांकि विभिन्न घटकों को अपने स्वयं के ऐप्स में विभाजित किया जाता है।.NET

इसके लिए तर्क का एक हिस्सा यह है कि इसे कई एप्लिकेशन सर्वरों पर क्षैतिज रूप से स्केल किया जा सकता है।

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

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

[N Amount of Databases] 
     | 
     \/ 
[Service Tier X N amount of Machines] 
     | 
     \/ 
[Application Tier X n amount of Machines] 

कुछ सवाल हालांकि आने, मैं सेवा के स्तर पर उपयोगकर्ता सत्र जारी रहती है, ताकि प्रत्येक आवेदन सिर्फ एक टोकन के साथ प्रमाणित होगा करना चाहते हैं, लेकिन मुझे लगता है मैं सत्र डेटा कैसे बनाए रखना चाहते पर अनिश्चित हूँ असफलता के एक बिंदु के बिना सभी सेवा मशीनों में।

इसे खींचने के तरीके पर कोई विचार? वास्तुकला पर कोई अन्य विचार? क्या किसी और के पास ऐसी साइट तैयार करने की परियोजना है जो संभावित रूप से प्रति दिन लाखों हिट को संभालने में सक्षम हो सकती है?

संपादित करें: यहां तक ​​कि एक विचार भी नहीं है? :(

उत्तर

2

आप इस तरह के memcached (http://www.danga.com/memcached) या आगामी एमएस वेग परियोजना (http://code.msdn.microsoft.com/velocity) के रूप में एक वितरित कैशिंग तंत्र के लिए एकदम सही उपयोग के मामले में बताया है।

आपके द्वारा वर्णित स्थिति है जहाँ आप एक बढ़ती हुई संख्या है में सेवा स्तरीय उदाहरणों में से प्रत्येक अपनी स्थानीय कैशिंग कर रहा है, आपके कैश की उपयोगिता प्रत्येक नए बॉक्स के साथ घट जाती है क्योंकि प्रत्येक व्यक्तिगत उदाहरण को डाटाबेस से उसी डेटा को अपने स्थानीय कैश को पॉप्युलेट करने के लिए पुनर्प्राप्त करना चाहिए, भले ही उसी डेटा को किसी अन्य सेवा टायर द्वारा एक्सेस किया गया हो उदाहरण के लिए। memcached या वेग के साथ कैशिंग तंत्र सभी सेवा स्तरीय प्रतिष्ठानों को साझा करने के लिए एक ही कैश में अपने सभी सर्वरों पर अप्रयुक्त RAM को बुद्धिमानी से जोड़ देगा। इस तरह ओ डेटा के एक टुकड़े तक पहुंचने के लिए पहले सर्विस टियर इंस्टेंस को डेटाबेस का उपयोग करने की आवश्यकता होगी, और बाद में अन्य सर्विस टियर इंस्टेंस द्वारा एक्सेस को उसी डेटा को कैश से खींच लिया जाएगा।

यह जगह होने पर भी उपयोगकर्ता सत्र प्रश्न का उत्तर दिया जाता है, क्योंकि आप उपयोगकर्ता सत्रों के लिए राज्य मूल्यों को संग्रहीत करने के लिए आसानी से उसी कैश का उपयोग कर सकते हैं और आपके सभी सेवा स्तरीय उदाहरणों के पास इसी जानकारी तक पहुंच होगी।

आशा है कि इससे मदद मिलती है!

एडम

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