मैं वर्तमान में एक समान प्रणाली (पेशेवर स्तर पर) स्थापित कर रहा हूं और यह वह डिजाइन है जिसे मैंने चुना है:
- दो नग्नेक्स लोडबलैंसर (दोनों सक्रिय, दोनों दूसरे के लिए विफलता, डीएनएस राउंड रॉबिन के साथ संतुलित)
- मास्टर मास्टर प्रतिकृति मोड में दो MySQL डेटाबेस
- टॉमकैट क्लस्टर के रूप में दो टॉमकैट उदाहरण हैं
- टॉमकैट क्लस्टर के लिए कैशिंग और सेशन स्टेट शेयरिंग के लिए दो मैमकेड इंस्टेंसेस
यह एक निरर्थक, उच्च उपलब्धता, स्केलेबल समाधान प्राप्त करेगा।
भारोत्तोलक (शालीन हार्डवेयर पर) आसानी से एक संतृप्त 1gbit रेखा को प्रत्येक पर भारित करेगा। यह एसएसएल ऑफलोडिंग के लिए भी एक शानदार जगह है।
आप अपने सत्र की जानकारी को संस्मरण में सहेज सकते हैं। यदि एक टमकाट इंस्टेंस विफल हो जाता है, तो एक और टेंकैट इंस्टेंस प्रासंगिक सत्र की जानकारी को पुनः प्राप्त कर सकता है और ग्राहक किसी चीज़ को नोटिस नहीं करेंगे। यह भी चिपचिपा सत्र के साथ गठबंधन करने के लिए मत भूलना। (नेटवर्क ट्रैफिक को नीचे रखने के लिए)
टॉमकैट क्लस्टरिंग में मेम्केड का उपयोग किए बिना, वास्तविक समय में क्लस्टर के बीच सत्र की जानकारी साझा करने का विकल्प भी है। हालांकि मुझे लगता है कि प्रदर्शन के लिहाज से मेम्केड का इस्तेमाल करना बेहतर होगा।
यदि आपको इनमें से किसी भी एप्लिकेशन में अधिक शक्ति चाहिए:
- Nginx: अधिक लोडबेलेंसर जोड़ें, हालांकि मुझे नहीं लगता कि यह बहुत जल्द अड़चन होगी।
- टॉमकैट: आप आसानी से टॉमकैट क्लस्टर का आकार बढ़ा सकते हैं या अधिक क्लस्टर जोड़ सकते हैं
- मैसकल: कुछ रीड-ओनली स्लेव्स जोड़ें या क्लस्टर साइज़ बढ़ाएँ (आपके आवेदन के आधार पर, लेकिन जब से आपने REST- आधारित एप्लिकेशन लिखा है, तो यह समस्या नहीं होनी चाहिए)
- मेम्केड: अधिक नोड्स जोड़ें, मेम्केडेड स्केल बहुत अच्छी तरह से मेरा मानना है।
मुझे नहीं पता कि आपका एप्लिकेशन कैसे बनता है और बड़े संसाधन हॉग क्या हैं, लेकिन यदि आप एक उच्च डेटाबेस लोड (लोड लोड के दौरान!) देखते हैं, तो एप्लिकेशन और डेटाबेस के बीच कैश जोड़ने से निश्चित रूप से प्रदर्शन में बहुत सुधार हो सकता है। लेकिन यह मत भूलो कि सब कुछ असाध्य नहीं है, यदि आपके प्रश्न हमेशा अलग होते हैं, तो कैशिंग मदद नहीं करेगा (बहुत)
मेरी सलाह होगी कि VMware Workbench (या similair वर्चुअलाइजेशन सॉफ्टवेयर) डाउनलोड करें और एक साधारण सेटअप बनाने की कोशिश करें। कोई भारोत्तोलन या क्लस्टरिंग नहीं, बस मूल बातें और वहाँ से काम। एक-एक करके और अधिक सुविधाएँ जोड़ें (संतुलन, कैशिंग, क्लस्टरिंग, आदि) और प्रत्येक विषय पर कुछ शोध करना सुनिश्चित करें, ताकि आप जान सकें कि आपने सही पिक बनाया है।
यदि आप इस प्रक्रिया के दौरान समान प्रदर्शन परीक्षण चलाते रहते हैं, तो आप अपने लिए देख सकते हैं कि क्या X का उपयोग करना आपके सेटअप में Y का उपयोग करने से बेहतर है , या कैशिंग का क्या प्रभाव पड़ेगा, आदि।
अंत में, इस तरह का एक सेटअप वास्तव में आपके आवेदन और उसके ग्राहकों की आवश्यकताओं पर निर्भर करता है, सब कुछ विभिन्न तरीकों से किया जा सकता है, प्रत्येक की अपनी ताकत और कमजोरियां हैं।
कोई और प्रश्न?
सौभाग्य!
वेस्ले