मैं कैशिंग उपयोग और पबसब के बारे में कुछ चर्चा करूंगा, लेकिन मैं कार्यान्वयन के विवरण में नहीं जाऊंगा। इसके बजाय, मैं पैटर्न पर ही ध्यान केंद्रित करूंगा।
समस्या
<पी>
_फ़ोटो द्वारा [अनस्प्लैश](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 पर पहुंच गया है, तो इसका मतलब है कि मैं सुरक्षित रूप से चिह्नित कर सकता हूं कि मेरी सभी प्रक्रियाएं पूरी हो गई हैं।