अपाचे पल्सर ने हमेशा खुद को क्लाउड नेटिव के रूप में देखा है। यह वहीं मुख पृष्ठ पर है:
"अपाचे® पल्सर™ क्लाउड के लिए बनाया गया एक ओपन-सोर्स, वितरित मैसेजिंग और स्ट्रीमिंग प्लेटफॉर्म है"
पल्सर निश्चित रूप से कई क्लाउड-नेटिव सिद्धांतों का प्रतीक है, जिसमें भंडारण से गणना को अलग करना शामिल है जहां पल्सर ब्रोकर संदेशों की सेवा को संभालता है और अपाचे बुककीपर उनके भंडारण को संभालता है, और स्टेटलेस घटकों का विचार जिसे इच्छानुसार ऊपर और नीचे बढ़ाया जा सकता है पल्सर दलाल.
हालाँकि, यह वास्तव में कभी भी क्लाउड के अंतिम वादे: ऑटोस्केलिंग को पूरा नहीं कर पाया है। कम से कम, आज तक तो नहीं.
मैं अपाचे पल्सर, या केएएपी के लिए कुबेरनेट्स ऑटोस्केलिंग पेश करने के लिए उत्साहित हूं। केएएपी एक कुबेरनेट्स ऑपरेटर है जो ऑपरेटरहब पर उपलब्ध है। इसमें वे सभी बारीकियाँ शामिल हैं जिनकी आप कुबेरनेट्स ऑपरेटर से अपेक्षा करते हैं। एक बार जब आपके कुबेरनेट्स क्लस्टर में ऑपरेटर स्थापित हो जाता है, तो आप इस तरह एकल कस्टम संसाधन परिभाषा (सीआरडी) लागू करके एक पूरी तरह कार्यात्मक पल्सर क्लस्टर प्राप्त कर सकते हैं:
apiVersion: kaap.oss.datastax.com/v1alpha1 kind: PulsarCluster metadata: name: pulsar spec: global: name: pulsar image: 'apachepulsar/pulsar:3.0.0'
पल्सर के कई घटक हैं: ज़ूकीपर, बुककीपर, ब्रोकर और प्रॉक्सी। ऑपरेटर उन सभी को PulsarCluster
सीआरडी के साथ कॉन्फ़िगर करने का काम संभालता है। क्योंकि ऑपरेटर क्लस्टर स्तर पर काम करता है, इसलिए आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि घटक एक साथ कैसे काम करते हैं। ऑपरेटर आपके लिए इसका ख्याल रखता है।
पल्सर के लिए प्रोडक्शन क्लाउड सेवा को मेरे द्वारा ज्ञात किसी भी व्यक्ति से अधिक समय तक संचालित करने के बाद (पहली बार)।
यह वह प्रक्रिया है जिसका पालन हम अपनी एस्ट्रा स्ट्रीमिंग सेवा में पल्सर क्लस्टर को अपग्रेड करते समय करते हैं क्योंकि हमारी ग्राहक सेवा की उपलब्धता सर्वोपरि है, लेकिन यह हमारी उत्पादन इंजीनियरिंग टीम के लिए बहुत समय लेने वाली है। वास्तव में, यह उनका नंबर एक अनुरोध है: क्या आप अपग्रेड को अधिक स्मार्ट और अधिक स्वचालित बना सकते हैं? ख़ैर, KAAP के साथ हमने बस यही किया है।
PulsarCluster
सीआरडी में एक लाइन परिवर्तन के साथ, आप अपने पल्सर क्लस्टर के चरणबद्ध अपग्रेड को ट्रिगर कर सकते हैं। केएएपी ऑपरेटर आपके क्लस्टर का सावधानीपूर्वक, चरणबद्ध उन्नयन करेगा। बेशक, आपको अपग्रेड के दौरान मेट्रिक्स की निगरानी करनी चाहिए, लेकिन आप केएएपी ऑपरेटर को गाड़ी चलाने दे सकते हैं (पहिए पर सोए बिना)।
स्वचालित चरणबद्ध उन्नयन अच्छे हैं, लेकिन केएएपी को लेकर मैं सबसे ज्यादा उत्साहित नहीं हूं। लोचदार संसाधनों की अवधारणा क्लाउड का एक प्रमुख वादा है। यही कारण है कि कई AWS सेवाओं के नाम में "लोचदार" है। मैंने (वास्तव में चैटजीपीटी ) त्वरित खोज की और उनमें से कम से कम 10 हैं।
क्लाउड आपको मांग पर संसाधन प्राप्त करने और जारी करने में सक्षम बनाता है, ताकि आप अपने एप्लिकेशन द्वारा उपयोग किए जा रहे संसाधनों की संख्या का उस पर लोड से मिलान करने के लिए ऑटोस्केलिंग तकनीकों का उपयोग कर सकें। जैसे-जैसे लोड बढ़ता है, आप स्वचालित रूप से अधिक संसाधन जोड़ सकते हैं। जैसे-जैसे लोड घटता है, आप संसाधनों को मुक्त कर सकते हैं। चूंकि क्लाउड प्रदाता संसाधनों के उपयोग के लिए शुल्क लेते हैं, ऑटोस्केलिंग आपको अपने क्लाउड खर्च का सबसे कुशल उपयोग करने में मदद कर सकती है।
मुझे यकीन है कि हम सभी क्लाउड सेवाओं के उदाहरणों के बारे में सोच सकते हैं जो पर्दे के पीछे ऑटोस्केलिंग की सुविधा देती हैं। उनमें से अधिकांश "लोचदार" AWS सेवाएँ उसी तरह काम करती हैं। हालाँकि, ऑटोस्केलिंग का कार्यान्वयन मालिकाना है, विक्रेता के निजी रेपो में बंद है। कभी-कभी वे इस बारे में बात करेंगे कि उन्होंने ऑटोस्केलिंग को कैसे लागू किया है, जैसे कि इसमें
केएएपी आपके पल्सर (या) में परिष्कृत ऑटोस्केलिंग क्षमताएं जोड़ता है
केएएपी आपको कुबेरनेट्स में चलते समय पल्सर में ऑटोस्केलिंग जोड़ने का एक तरीका देता है। कुछ सरल नहीं, क्षैतिज पॉड ऑटोस्केलर (एचपीए) ने पल्सर ब्रोकर परिनियोजन पर काम किया, लेकिन एक परिष्कृत ऑटो स्केलर जो वास्तव में लोचदार स्ट्रीमिंग और मैसेजिंग सिस्टम प्रदान करने के लिए पल्सर के मौजूदा क्लाउड-नेटिव घटकों के साथ काम करता है। मेरी राय में, यह एक ऐसा संयोजन है जिसे हराया नहीं जा सकता।
आइए KAAP के दो मुख्य ऑटोस्केलिंग आयामों पर एक नज़र डालें। सबसे पहले, हम पल्सर ब्रोकरों को देखेंगे। जैसा कि आप जानते होंगे, पल्सर ब्रोकर स्टेटलेस होते हैं, जिसका अर्थ है कि आप आवश्यकतानुसार उन्हें आसानी से ऊपर और नीचे कर सकते हैं। लेकिन जो आप नहीं जानते होंगे वह यह है कि पल्सर में एक अंतर्निहित ब्रोकर लोड-बैलेंसिंग तंत्र है जो प्रत्येक ब्रोकर पर सीपीयू, मेमोरी और नेटवर्क बैंडविड्थ की लगातार निगरानी करता है। उस जानकारी और कॉन्फ़िगर करने योग्य लोड-बैलेंसिंग एल्गोरिदम में से एक का उपयोग करते हुए, पल्सर ब्रोकर को ओवरलोड होने से रोकने के लिए ब्रोकर से ब्रोकर तक विषयों को स्थानांतरित करेगा।
एक सरल ऑटोस्केलिंग समाधान ब्रोकर्स पर कुबेरनेट्स हॉरिजॉन्टल पॉड ऑटोस्केलर (एचपीए) को कॉन्फ़िगर करना होगा और जब सीपीयू जैसे कुछ मीट्रिक ऊंचे हो जाते हैं, तो दूसरे ब्रोकर पॉड को स्केल करना होगा। लेकिन यह वास्तव में आवश्यक नहीं हो सकता है क्योंकि पल्सर ब्रोकर लोड बैलेंसर एक ही समय में लोड को बराबर करने के लिए विषयों को स्थानांतरित करने का निर्णय ले सकता है। अब आपने एक ब्रोकर पॉड को बढ़ा दिया है जिसकी आवश्यकता नहीं है क्योंकि पल्सर लोड बैलेंसर ने चीजों को संतुलित कर दिया है। तो अब एचपीए ने नए ब्रोकर पॉड को छोटा करने का निर्णय लिया है, जिसके कारण इस पर बनाए गए किसी भी नए विषय को मौजूदा ब्रोकर में स्थानांतरित कर दिया जाएगा। जैसा कि आप कल्पना कर सकते हैं, पल्सर लोड बैलेंसर और एक एचपीए ब्रोकरों के ऊपर और नीचे जाने और ब्रोकर से ब्रोकर में स्थानांतरित होने वाले विषयों की जबरदस्त गड़बड़ी पैदा कर सकता है।
केएएपी सीधे पल्सर लोड बैलेंसर के साथ एकीकृत होकर इस समस्या से बचाता है। केएएपी ब्रोकरों को तब स्केल करता है जब पल्सर लोड बैलेंसर से क्लस्टर-वाइड मेट्रिक्स सुझाव देते हैं कि क्लस्टर क्षमता के करीब है, न कि तब जब एक ब्रोकर पॉड व्यस्त हो। और यह केवल ब्रोकर को नीचे गिराता है यदि पूरे क्लस्टर का उपयोग कॉन्फ़िगर सीमा से नीचे आता है। केएएपी ऑपरेटर पल्सर ब्रोकर लोड बैलेंसर के साथ काम करता है, इसके खिलाफ नहीं।
पल्सर की कंप्यूट (या सर्विंग) परत को स्केल करना बहुत अच्छा है, लेकिन यह सच्चे ऑटोस्केलिंग कार्यान्वयन के लिए पर्याप्त नहीं है। निश्चित रूप से, संसाधित किए जाने वाले संदेशों (या घटनाओं) की संख्या समय के साथ भिन्न हो सकती है, लेकिन उन संदेशों की संख्या के बारे में क्या जिन्हें संग्रहीत करने की आवश्यकता है? संभवतः हम सभी को डाउनस्ट्रीम सिस्टम की विफलता के कारण एकत्रित होने वाले संदेशों के बैकलॉग से निपटना पड़ा है। जैसे-जैसे आउटेज बढ़ता जाता है, स्ट्रीमिंग सिस्टम पर उपलब्ध स्टोरेज कम होने लगती है।
यह एक ऐसा परिदृश्य है जहां पल्सर और बुककीपर पर उसकी निर्भरता चमकती है। पल्सर क्लस्टर में भंडारण क्षमता जोड़ने के लिए, आपको बस एक नया बुककीपर नोड जोड़ना होगा, जिसे प्यार से "बुकी" कहा जाता है। क्योंकि बुककीपर स्टोरेज विषयों के खंडों पर आधारित है, न कि संपूर्ण विषयों पर, विषयों के किसी भी दर्दनाक पुनर्संतुलन या किसी अन्य परिचालन हस्तक्षेप के साथ, स्टोरेज पर दबाव को दूर करने के लिए नया बुकी तुरंत उपलब्ध है।
निस्संदेह, केएएपी आपके लिए इस मामले को संभाल सकता है। यह लगातार बुकी नोड्स के डिस्क उपयोग की निगरानी करता है, और यदि उपलब्ध स्टोरेज कम हो रहा है, तो यह एक नए बुकी नोड को स्केल करेगा। यह इतना उल्लेखनीय नहीं है (कम से कम पल्सर के लिए)। कुबेरनेट्स में एक नई प्रतिकृति जोड़ना बहुत सरल है, भले ही यह स्टेटफुल हो और लगातार वॉल्यूम द्वारा समर्थित हो। लेकिन जब आउटेज खत्म हो जाए और बैकलॉग साफ़ हो जाए तो कैसा रहेगा? क्या अब आप संसाधनों का उपभोग करने वाले एक अतिरिक्त बुकी नोड में फंस गए हैं जिनकी अब वास्तव में आवश्यकता नहीं है?
KAAP के साथ नहीं, आप नहीं हैं। एक बार जब बुककीपर स्टोरेज एक कॉन्फ़िगर सीमा से नीचे चला जाता है, तो केएएपी ऑपरेटर अनावश्यक बुकी नोड को हटाने की सावधानीपूर्वक योजना बनाएगा। यह इसे बहुत सुरक्षित तरीके से करता है, यह सुनिश्चित करते हुए कि कोई भी संदेश खो न जाए और आवश्यक प्रतिकृति कारक हर समय बना रहे। उदाहरण के लिए, यदि आपने पल्सर को प्रत्येक संदेश की तीन प्रतियां रखने के लिए कॉन्फ़िगर किया है (लिखें और एके कोरम दोनों तीन के बराबर हैं), तो केएएपी सट्टेबाज से संदेशों की प्रतिलिपि बनाने के लिए बुककीपर के साथ इंटरैक्ट करता है जिसे यह सुनिश्चित करने के लिए अन्य सट्टेबाजों तक बढ़ाया जा रहा है। संदेश की कम से कम तीन प्रतियां उपलब्ध हैं। एक बार यह सफलतापूर्वक पूरा हो जाने के बाद, यह अनावश्यक सट्टेबाज को हटाने के लिए आगे बढ़ेगा।
KAAP के साथ आपको अपने पल्सर क्लस्टर में ऊपर और नीचे दोनों तरफ स्टोरेज की स्वचालित स्केलिंग मिलती है ताकि आप अपने क्लस्टर में स्टोरेज उपयोग को अनुकूलित कर सकें और किसी दुर्भाग्यपूर्ण उत्पादन घटना के बाद निष्क्रिय क्षमता में फंस न जाएं। मैं आपके बारे में नहीं जानता, लेकिन मुझे लगता है कि यह काफी उल्लेखनीय है।
केएएपी आपके पल्सर क्लस्टर का चरणबद्ध उन्नयन और स्मार्ट स्केलिंग कर सकता है। लेकिन और भी बहुत कुछ है. क्लाउड प्रदाता में अत्यधिक उपलब्ध क्लस्टर को संचालित करने के लिए, उपलब्धता क्षेत्र (AZ) को ध्यान में रखना महत्वपूर्ण है। यदि आप अपने घटकों, विशेष रूप से बुककीपर, को उपलब्धता क्षेत्रों में नहीं फैलाते हैं, तो आप AZ विफलता से बच नहीं पाएंगे और कई नाइन उपलब्धता प्रदान नहीं कर पाएंगे।
सौभाग्य से पल्सर में उच्च-उपलब्धता तैनाती का समर्थन करने के लिए रैक जागरूकता जैसी महान अंतर्निहित क्षमताएं हैं। मुश्किल हिस्सा यह है कि इसे ठीक से सेट करने के लिए आपको ज़ोन जागरूकता के साथ कुबेरनेट्स को सही ढंग से कॉन्फ़िगर करना होगा और पल्सर को भी कॉन्फ़िगर करना होगा। केएएपी ऑपरेटर ने आपको संसाधन सेट की अवधारणा पेश करके कवर किया है, जो आपको घटकों को समूहित करने और उन्हें रैक जागरूकता प्रदान करने में सक्षम बनाता है। KAAP ऑपरेटर आपके संसाधन सेट के घोषणात्मक कॉन्फ़िगरेशन के आधार पर कुबेरनेट्स और पल्सर कॉन्फ़िगरेशन दोनों को स्वचालित रूप से लागू करेगा। संसाधन सेट लचीले हैं, जिससे आप विभिन्न प्रकार के पल्सर परिनियोजन विकल्पों का समर्थन कर सकते हैं।
और क्या होगा यदि आप पहले से ही हेल्म चार्ट या शायद कुछ कुबेरनेट्स जादू का उपयोग करके अपना पल्सर चला रहे हैं? आपकी सहायता के लिए KAAP के पास एक माइग्रेशन टूल है। आप माइग्रेशन टूल को अपने मौजूदा कुबेरनेट्स पल्सर परिनियोजन पर इंगित कर सकते हैं और यह स्वचालित रूप से एक मिलान सीआरडी कॉन्फ़िगरेशन उत्पन्न करेगा जिसका उपयोग आप केएएपी ऑपरेटर को अपने क्लस्टर का संचालन करने के लिए कर सकते हैं।
केएएपी ऑपरेटर के पास बहुत सारी बेहतरीन सुविधाएं हैं, जो आपके नियमित पल्सर क्लस्टर को एक अच्छी तरह से तेलयुक्त, अत्यधिक उपलब्ध, ऑटोस्केलिंग मशीन में टर्बोचार्ज करती है। लेकिन एक ऐसे व्यक्ति के रूप में जिसने लंबे समय तक उत्पादन पल्सर क्लस्टर संचालित किया है, मुझे पता है कि उत्पादन पल्सर क्लस्टर बनाने के लिए कई अन्य विचार भी हैं, जैसे टीएलएस प्रमाणपत्र प्रबंधन, प्रमाणीकरण और निगरानी।
इसीलिए हमने ऑपरेटर के साथ जिसे हम केएएपी स्टैक कहते हैं उसे शामिल किया है। यह एक अम्ब्रेला हेल्म चार्ट है जो महत्वपूर्ण उत्पादन उपकरणों के साथ KAAP ऑपरेटर को स्थापित करता है, जिसमें शामिल हैं:
हमारे उत्पादन पल्सर क्लस्टर को चलाने के लिए ये आवश्यक उपकरण हैं और हम आपको अकेला नहीं छोड़ना चाहते थे, इसलिए हमने उन सभी को एक साथ खींच लिया और उन्हें एक सुविधाजनक पैकेज में एकीकृत कर दिया।
तो आपने अपाचे पल्सर के लिए कुबेरनेट्स ऑटोस्केलिंग की सभी बेहतरीन विशेषताओं के बारे में सुना है। आप एक सीआरडी के साथ संपूर्ण पल्सर क्लस्टर बना सकते हैं। आप अपने अपग्रेड को ऑटोपायलट पर रख सकते हैं और केएएपी ऑपरेटर को सुरक्षित, चरणबद्ध अपग्रेड करने दे सकते हैं। आप पल्सर ब्रोकर लोड बैलेंसर के आधार पर स्वचालित रूप से पल्सर ब्रोकरों को ऊपर और नीचे स्केल कर सकते हैं, यह कहते हुए कि ब्रोकर ओवरलोड हो रहे हैं, और आप अपने क्लस्टर की भंडारण आवश्यकताओं के आधार पर बुककीपर नोड्स को ऊपर और नीचे (!) सुरक्षित रूप से स्केल कर सकते हैं। आप उच्च उपलब्धता के लिए उपलब्धता क्षेत्र जागरूकता के लिए अपने क्लस्टर को आसानी से कॉन्फ़िगर कर सकते हैं। और इसमें एक माइग्रेशन टूल भी शामिल है ताकि आप आसानी से अपने पुराने हेल्म-आधारित परिनियोजन से टर्बो-चार्ज, केएएपी ऑपरेटर-आधारित परिनियोजन पर जा सकें।
तो—बहुत सारी बेहतरीन सुविधाएँ, लेकिन KAAP के क्या लाभ हैं? मैं कई के बारे में सोच सकता हूँ:
मेरी राय में, KAAP को रिलीज़ करना स्ट्रीमिंग और मैसेजिंग क्षेत्र में वास्तव में एक अभिनव क्षण है। कोई अन्य ओपन-सोर्स प्रोजेक्ट अपाचे पल्सर की स्ट्रीमिंग और मैसेजिंग शक्ति को क्लाउड कंप्यूटिंग के अंतिम वादे के साथ नहीं जोड़ता है: पूरी तरह से लोचदार, ऑटोस्केलिंग। मैं आपके इसे आज़माने का इंतज़ार कर रहा हूँ। हमारे रेपो में GitHub चर्चाओं में शामिल हों और हमें बताएं कि आप क्या सोचते हैं!
यदि आप केएएपी में तकनीकी रूप से गहराई से उतरना चाहते हैं, तो इस ब्लॉग पोस्ट पर एक नज़र डालें। आप KAAP के लिए संपूर्ण दस्तावेज़ पा सकते हैं
क्रिस बार्थोलोम्यू, डेटास्टैक्स द्वारा
यह कहानी डेटास्टैक्स द्वारा हैकरनून के ब्रांड एज़ एन ऑथर प्रोग्राम के तहत वितरित की गई थी। कार्यक्रम के बारे में यहां और जानें: https://business.hackernoon.com/brand-as-author