मैंने एक डोकर आधारित अनुप्रयोग विकसित किया है जिसमें कई माइक्रोसर्विसेज शामिल हैं। इसे अमेज़ॅन एसक्यूएस संदेशों का उपभोग करना होगा और उन्हें संसाधित करना होगा। सबसे पहले मैं AWS इलास्टिक बीनस्टॉक का उपयोग करना चाहता था, लेकिन फिर मैं EC2 कंटेनर सेवा पर गिर गया। अब मुझे नहीं पता कि किसे चुनना है।
अब तक, इलास्टिक बीनस्टॉक मल्टी-कंटेनर-एनवायरनमेंट का समर्थन करता है। यह बहुत अच्छा है क्योंकि हर microservice में डॉकटर कंटेनर के अंदर अपना स्वयं का एप्लिकेशन सर्वर होता है। अगली समस्या स्केलिंग है:
मैं नहीं जानता कि स्केलिंग तंत्र कैसे काम करता है। उदाहरण के लिए: मेरे इलास्टिक बीनस्टॉक पर्यावरण में 5 डॉकटर कंटेनर हैं। अब केवल पाँचवाँ डॉकटर कंटेनर भारी भार के अधीन है, क्योंकि इसमें SQS संदेशों को संसाधित करने के लिए भारी मात्रा में है, अन्य चार लगभग निष्क्रिय हैं, क्योंकि उन्हें बहुत अधिक CPU की आवश्यकता नहीं है या शायद बहुत सारे SQS संदेशों की आवश्यकता नहीं है। मान लें कि 5 वाँ कंटेनर JBoss एप्लिकेशन सर्वर चलाता है। जहाँ तक मुझे पता है, सर्वर केवल एक सीमित मात्रा में समानांतर अनुरोधों का उपभोग कर सकता है, भले ही पर्याप्त सीपीयू / मेमोरी उपलब्ध हो।
यदि JBoss डॉकटर कंटेनर अनुरोधों की मात्रा को संभालने में सक्षम नहीं है, लेकिन पर्याप्त CPU / मेमोरी उपलब्ध है, तो निश्चित रूप से मैं उसी उदाहरण पर स्वचालित रूप से एक दूसरा Docker / JBoss कंटेनर शुरू करना चाहता हूं। लेकिन क्या होता है, अगर मेरे पास पर्याप्त सीपीयू / मेमोरी नहीं है? बेशक मैं एक दूसरे उदाहरण पर स्पिन करना चाहता हूं, जो ईबी में एक ऑटो-स्केलिंग समूह के माध्यम से कॉन्फ़िगर करने योग्य है। अब एक दूसरा उदाहरण सामने आता है, लेकिन 5 वें को छोड़कर प्रत्येक कंटेनर लगभग निष्क्रिय है, निश्चित रूप से मैं नहीं चाहता कि उन्हें दूसरे उदाहरण पर भी 4 अनावश्यक स्पॉन करें, जो संसाधनों की बर्बादी होगी। केवल 5 वें स्थान पर होना चाहिए और दूसरों को 5 वें पैमाने की तरह कॉन्फ़िगर करने योग्य मापदंडों पर आधारित होना चाहिए जैसे कि: सीपीयू / मेमोरी / एसक्यूएस।
मुझे ठीक से पता नहीं है कि अमेज़ॅन ईसीएस ऐसा कर रहा है, या यदि यह संभव है, लेकिन मैं वास्तव में इस विषय के बारे में इंटरनेट पर कोई स्रोत नहीं पा सकता हूं, जो सामान्य रूप से कहा जाता है, उदाहरणों / कंटेनरों के आधार पर स्केलिंग।