Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

अपने सिस्टम को कुशलतापूर्वक स्केल करें:उच्च-प्रदर्शन मैसेजिंग के लिए प्रक्रिया विभाजन और रेडिस

अपने सिस्टम को कुशलतापूर्वक स्केल करें:उच्च-प्रदर्शन मैसेजिंग के लिए प्रक्रिया विभाजन और रेडिस <पी> प्रामोनो विनाटा

द्वारा <पी> क्या आप कभी किसी ऐसी प्रक्रिया को संभालने में परेशानी में पड़े हैं जो वास्तव में बहुत बड़ी या भारी हो? यदि हां, तो मैं इसे बेहतर ढंग से प्रबंधित करने का तरीका जानने में आपकी सहायता कर सकता हूं।

<पी> इस लेख में मैं साझा करूंगा कि मैं वर्तमान में एक ऐसे संदेश को कैसे प्रबंधित कर रहा हूं जो एक प्रक्रिया पर संसाधित होने के लिए बहुत बड़ा है। मैंने इसे अलग-अलग हिस्सों में विभाजित किया है, जिसके परिणामस्वरूप अलग-अलग प्रक्रियाएं होती हैं।

<पी> मैं अधिक तकनीकी विवरण में नहीं जाऊंगा, लेकिन वास्तुशिल्प प्रक्रिया के बारे में अधिक बताऊंगा।
मैं कैशिंग उपयोग और पबसब के बारे में कुछ चर्चा करूंगा, लेकिन मैं कार्यान्वयन के विवरण में नहीं जाऊंगा। इसके बजाय, मैं पैटर्न पर ही ध्यान केंद्रित करूंगा।

समस्या

<पी> अपने सिस्टम को कुशलतापूर्वक स्केल करें:उच्च-प्रदर्शन मैसेजिंग के लिए प्रक्रिया विभाजन और रेडिस _फ़ोटो द्वारा [अनस्प्लैश](https://unsplash.com/@dsmacinnes?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit">डेनिएल मैकइन्स / मैं एक महान आरेख निर्माता नहीं हूं, लेकिन इससे बात स्पष्ट हो जानी चाहिए <पी> इसे शब्दों से सरल बनाने के लिए, दो अलग-अलग सेवाओं, सेवा ए और सेवा बी की कल्पना करें, जिनके बीच में एक पबसब सेवा है। <पी> यदि आप निश्चित नहीं हैं कि पबसब सेवा क्या है, तो बस इसे एक ब्रोकर के रूप में कल्पना करें जो एक सेवा से संदेश को दूसरी सेवा तक पहुंचने में मदद करता है।

<पी> सेवा ए फिर एक संदेश प्रकाशित करेगी और पबसब के माध्यम से, सेवा बी इसे संसाधित करेगी। प्रक्रिया पूरी होने के बाद, यह चिह्नित करने के लिए एक और प्रक्रिया करेगा कि संदेश संसाधित हो गया है।

<पी> काफी सरल है ना?

<पी> यह सिर्फ इतना है कि कुछ मामलों में जब संदेश बहुत बड़ा होता है, तो यह पबसब सेवा की सीमाओं के कारण संदेश को सफलतापूर्वक प्रकाशित नहीं करेगा। <पी> ठीक है, इससे आपको उन समस्याओं का अवलोकन मिल जाएगा जिनका मैंने सामना किया है। तो मैंने इस समस्या को कैसे ठीक किया? अगले भाग में, मैं आपको अपने समाधान के बारे में बताऊंगा।

मेरा पहला दृष्टिकोण

<पी> अपने सिस्टम को कुशलतापूर्वक स्केल करें:उच्च-प्रदर्शन मैसेजिंग के लिए प्रक्रिया विभाजन और रेडिस _फ़ोटो [Unsplash] द्वारा(https://unsplash.com/@dose?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit'>डोज़ मीडिया /
मेरा अद्यतन सिस्टम/प्रक्रिया <पी> जैसा कि आप आरेख से देख सकते हैं, संदेश कई छोटे संदेशों में विभाजित हो जाता है। इसे कैसे विभाजित किया जाता है और संदेश के किस भाग को विभाजित करने की आवश्यकता है, प्रत्येक मामले और प्रवाह के लिए भिन्न हो सकता है। <पी> हालाँकि, मेरे मामले में, मेरे संदेश में वास्तव में आइटमों की एक सूची है, इसलिए मैं इसे प्रत्येक आइटम द्वारा विभाजित कर सकता हूँ।

<पी> मान लीजिए कि मेरे पास 10 आइटम हैं। पहले, यह सभी 10 आइटमों को एक संदेश में प्रकाशित करता था। लेकिन अब संदेश को विभाजित करने के बाद, यह उस संदेश को 10 संदेशों में बदल देगा।

<पी> इसका परिणाम यह होता है कि एक ही प्रक्रिया एक साथ कई प्रक्रियाएँ बन जाती है। एक एकल प्रकाशन 10 प्रकाशनों में बदल जाएगा जो बदले में उस एकल प्रक्रिया को 10 प्रक्रियाओं में बदल देगा। <पी> जब आप इसे इस तरह से देखेंगे तो यह आदर्श नहीं लग सकता है, लेकिन यह सबसे अच्छा समाधान है जो मैं लेकर आया हूं और यह निश्चित रूप से काम करता है।

<पी> तो क्या यह सब, केवल इसे विभाजित करना है?

<पी> वास्तव में नहीं - क्या आपको वह अंतिम भाग याद है जहां यह प्रक्रिया को समाप्त के रूप में चिह्नित करता है?
यदि हां, तो आपको आश्चर्य हो सकता है कि वह हिस्सा मेरे नए आरेख से गायब क्यों है। <पी> चिंता न करें - ऐसा नहीं है कि मैं इसके बारे में भूल गया। मैंने जानबूझकर इसे अगले भाग के लिए छोड़ दिया।

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

फिनिशिंग प्रक्रियाओं को कैसे संभालें

<पी> अपने सिस्टम को कुशलतापूर्वक स्केल करें:उच्च-प्रदर्शन मैसेजिंग के लिए प्रक्रिया विभाजन और रेडिस _फ़ोटो द्वारा [अनस्प्लैश](https://unsplash.com/@tumbao1949?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit">जेम्स वेन्सकोट /
हमारी प्रक्रिया को चिह्नित करने के लिए Redis को जोड़ना <पी> यह प्रक्रिया बिल्कुल पहले जैसी ही दिखती है, लेकिन बीच में रेडिस को जोड़ने के साथ। आपको यह सुनिश्चित करना होगा कि आपके पास इस मामले के लिए वैध प्रारंभिक गिनती है।

<पी> मेरे मामले में, चूंकि मैं एक सूची प्रकाशित कर रहा हूं, मैं आसानी से अपनी सूची की लंबाई को अपने प्रारंभिक काउंटर के रूप में रख सकता हूं। और काउंटर के लिए, मैं हर बार प्रक्रिया समाप्त होने पर इसे एक से कम कर सकता हूं। तब मैं केवल अपने रेडिस काउंटर का हवाला देकर यह जान सकूंगा कि मैंने अपनी सभी प्रक्रियाएं पूरी कर ली हैं या नहीं। यदि यह 0 पर पहुंच गया है, तो इसका मतलब है कि मैं सुरक्षित रूप से चिह्नित कर सकता हूं कि मेरी सभी प्रक्रियाएं पूरी हो गई हैं।

समापन

<पी> इसे संक्षेप में कहने के लिए, मैंने संदेश को कई संदेशों में विभाजित किया है जिन्हें कई प्रक्रियाओं में एक साथ संसाधित किया जाएगा। संदेश प्रक्रियाओं को प्रबंधित करने के लिए, मैं रेडिस कैशिंग का उपयोग करता हूं।

<पी> जो समाधान मैंने ऊपर वर्णित किया है वह हर बार किसी बहुत बड़े संदेश को संसाधित करने में समस्या होने पर कोई राहत की बात नहीं होगी। आपके संदेश को स्ट्रीम करने जैसे अन्य तरीके भी हैं, लेकिन वह एक और दिन के लिए कहानी होगी।

<पी> मेरे लेख को अंत तक पढ़ने के लिए धन्यवाद! मुझे पूरी उम्मीद है कि आपको मेरा लेख पसंद आया होगा और यह दिलचस्प भी लगा होगा और सबसे महत्वपूर्ण बात यह है कि यह उपयोगी भी था। <पी> मुफ़्त में कोड करना सीखें. फ्रीकोडकैंप के ओपन सोर्स पाठ्यक्रम ने 40,000 से अधिक लोगों को डेवलपर्स के रूप में नौकरी पाने में मदद की है। आरंभ करें


  1. एचटीएमएल डोम शैली फ़ॉन्टपारिवारिक संपत्ति एचटीएमएल डोम शैली फ़ॉन्टपारिवारिक संपत्ति

    एचटीएमएल डोम स्टाइल फ़ॉन्ट-पारिवारिक संपत्ति का उपयोग चयनित तत्व के लिए विशिष्ट फ़ॉन्ट सूची को सेट करने या वापस करने के लिए किया जाता है। वेब सुरक्षित फ़ॉन्ट का उपयोग करने और अतिरिक्त फ़ॉन्ट निर्दिष्ट करने की अनुशंसा की जाती है। − . के लिए वाक्य रचना निम्नलिखित है FontFamily प्रॉपर्टी सेट करना - o

  1. ग्राफ़ के लिए गहराई पहली खोज (डीएफएस) ग्राफ़ के लिए गहराई पहली खोज (डीएफएस)

    डेप्थ-फर्स्ट सर्च (डीएफएस) एक ग्राफ ट्रैवर्सल एल्गोरिथम है। इस एल्गोरिथम में, एक प्रारंभिक शीर्ष दिया जाता है, और जब एक आसन्न शीर्ष मिलता है, तो यह पहले उस आसन्न शीर्ष पर जाता है और उसी तरह से पार करने का प्रयास करता है। यह पूरी गहराई से आगे बढ़ता है, जितना भी जा सकता है, उसके बाद यह नया पथ खोजने

  1. सीएसएस बॉक्स मॉडल को समझना सीएसएस बॉक्स मॉडल को समझना

    HTML दस्तावेज़ में प्रत्येक तत्व को CSS द्वारा एक आयताकार बॉक्स के रूप में माना जाता है। यह डिफ़ॉल्ट लेआउट योजना है और इसे हमारी आवश्यकताओं के अनुसार अनुकूलित किया जा सकता है। तत्वों, उनकी सामग्री और उनके आस-पास के तत्वों की स्थिति सीएसएस के बॉक्स मॉडल के अनुसार की जाती है। आरंभ करने के लिए, आइए बॉ