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

Upstash Kafka और MongoDB कनेक्टर के साथ लो-लेटेंसी सेगमेंटेशन प्लेटफॉर्म बनाना

परिचय

  • एक सेगमेंटेशन प्लेटफॉर्म ग्राहकों, उत्पादों और अन्य प्रासंगिक डेटा को समझने और वर्गीकृत करने में महत्वपूर्ण भूमिका निभाता है।
  • सेगमेंटेशन में एक बड़े समूह को कुछ मानदंडों के आधार पर छोटे, अधिक सजातीय उपसमूहों में विभाजित करना शामिल है।
  • यहां विभिन्न डोमेन में सेगमेंटेशन प्लेटफॉर्म के कुछ उदाहरण हैं, जैसे व्यक्तिगत मार्केटिंग रणनीतियों, लक्षित प्रचारों और अधिक अनुकूलित खरीदारी अनुभव के लिए ग्राहक सेगमेंटेशन।

विषय सूची

  1. आवश्यकताओं को समझना
  2. बुनियादी आर्किटेक्चर
  3. आर्किटेक्चरल घटक
  4. डिजाइन चुनौतियाँ
  5. प्रस्तावित समाधान
  6. समापन टिप्पणियाँ

1. आवश्यकताओं को समझना

ई-कॉमर्स में ग्राहक सेगमेंट के लिए कम-विलंबता सेगमेंटेशन प्लेटफॉर्म डिजाइन करना रीयल-टाइम प्रोसेसिंग, उपयोगकर्ता अनुभव और ग्राहक व्यवहार की गतिशील प्रकृति से संबंधित विशिष्ट चुनौतियों का परिचय देता है। यहां कुछ चुनौतियां हैं जिनका आप इस संदर्भ में सामना कर सकते हैं:

  1. बड़े और गतिशील डेटासेट

    • ई-कॉमर्स प्लेटफॉर्म बड़े और लगातार बदलते डेटासेट से निपटते हैं, जिनमें ग्राहक प्रोफाइल, उत्पाद कैटलॉग और लेनदेन इतिहास शामिल हैं।
    • कम विलंबता बनाए रखते हुए इन विशाल डेटासेट को रीयल-टाइम में प्रबंधित और प्रोसेस करना एक महत्वपूर्ण चुनौती है।
  2. स्केलेबिलिटी

    • विभिन्न वर्कलोड को संभालने के लिए स्केलेबिलिटी के लिए डिजाइन करना आवश्यक है। यह सुनिश्चित करना कि सिस्टम विलंबता का त्याग किए बिना अधिक प्रोसेसिंग यूनिट जोड़कर क्षैतिज रूप से स्केल कर सकता है, सावधानीपूर्वक आर्किटेक्चर योजना की आवश्यकता होती है।
  3. एसिंक्रोनस प्रोसेसिंग

    • एसिंक्रोनस प्रोसेसिंग का लाभ उठाने से घटकों को डिकॉपल करने और समग्र सिस्टम प्रतिक्रियाशीलता में सुधार करने में मदद मिल सकती है। हालांकि, जटिलताओं या देरी को पेश किए बिना एसिंक्रोनस संचार का प्रबंधन सावधानीपूर्वक डिजाइन की आवश्यकता होती है।
  4. डेटा फ्लो और पाइपलाइन्स

    • कम-विलंबता सिस्टम के लिए एक कुशल डेटा फ्लो और प्रोसेसिंग पाइपलाइन डिजाइन करना महत्वपूर्ण है।
    • घटकों के बीच डेटा के पारगमन में लगने वाले समय को कम करना और प्रोसेसिंग चरणों के क्रम को अनुकूलित करना समग्र विलंबता को महत्वपूर्ण रूप से प्रभावित कर सकता है।
  5. माइक्रोसर्विसेज आर्किटेक्चर

    • माइक्रोसर्विसेज आर्किटेक्चर लागू करने से स्केलेबिलिटी और लचीलापन बढ़ सकता है। हालांकि, विलंबता को पेश किए बिना माइक्रोसर्विसेज के बीच निर्बाध संचार सुनिश्चित करना चुनौतीपूर्ण हो सकता है।
    • कुशल API डिजाइन करना और इंटर-सर्विस संचार का प्रबंधन महत्वपूर्ण है।

2. बुनियादी आर्किटेक्चर

सेगमेंटेशन प्लेटफॉर्म में तीन प्रमुख सबसिस्टम होते हैं: Upstash Kafka और MongoDB कनेक्टर के साथ लो-लेटेंसी सेगमेंटेशन प्लेटफॉर्म बनाना

  1. कंप्यूट सर्विस (ऑफलाइन बैच कंप्यूट/ऑनलाइन कंप्यूट):

    • Spark Jobs का उपयोग करके रॉ डेटा से उपयोगकर्ता सेगमेंट निकालता है।
    • Spark जॉब डेटा लेक से डेटा प्राप्त करता है, साफ करता है और मान्य करता है।
    • परिणामी डेटा सर्विंग सब-सिस्टम को भेजा जाता है।
  2. इनजेशन सर्विस:

    • कंप्यूट सर्विस से परिकलित सेगमेंट को सेगमेंटेशन सर्विस में स्थानांतरित करता है।
    • सेगमेंट के भीतर उपयोगकर्ताओं के समावेश और बहिष्करण का प्रबंधन करता है।
  3. सेगमेंट सर्विस (सर्व लेयर):

    • उपयोगकर्ता सेवा या छूट सेवा के लिए विशिष्ट आवश्यकताओं के आधार पर उपयोगकर्ता सेगमेंट प्रदान करता है।

    • छूट सेवा उपयोगकर्ता आईडी के आधार पर क्वेरी कर सकती है और उपलब्ध छूट की गणना कर सकती है

      User IDSegment IDCreated At
      2521Segment XDec 3, 2023
      2788Segment YDec 3, 2023
      3943Segment ZDec 3, 2023

3. आर्किटेक्चरल घटक

सेगमेंटेशन प्लेटफॉर्म में निम्नलिखित प्रमुख घटक होते हैं: Upstash Kafka और MongoDB कनेक्टर के साथ लो-लेटेंसी सेगमेंटेशन प्लेटफॉर्म बनाना

  1. डेटा लेक - S3

    • S3 डेटा लेक के रूप में काम करने के लिए एक व्यापक रूप से अपनाया गया और बहुमुखी विकल्प है। इसकी स्केलेबल और टिकाऊ ऑब्जेक्ट स्टोरेज क्षमताएं इसे विविध डेटा प्रकारों के बड़े संस्करणों को कुशलतापूर्वक संग्रहीत और प्रबंधित करने के लिए उपयुक्त बनाती हैं।
    • S3 को डेटा लेक के रूप में उपयोग करके, संगठन डेटा स्टोरेज, रिट्रीवल और प्रबंधन के लिए इसकी मजबूत सुविधाओं से लाभ उठा सकते हैं, जो इसे विभिन्न डेटा-केंद्रित एप्लिकेशन और आर्किटेक्चर में एक लोकप्रिय विकल्प बनाता है।
  2. ट्रांजैक्शनल डेटाबेस MongoDB

    • MongoDB का डॉक्यूमेंट-ओरिएंटेड मॉडल ट्रांजैक्शनल उपयोग के मामलों के लिए फायदेमंद है क्योंकि यह आपको JSON के समान प्रारूप में जटिल डेटा संरचनाओं को संग्रहीत करने की अनुमति देता है। यह लचीलापन उन एप्लिकेशन के लिए विशेष रूप से उपयोगी है जहां डेटा संरचना समय के साथ विकसित हो सकती है।
  3. Upstash Kafka क्लस्टर

    • आप अपने वेब एप्लिकेशन से ट्रैफिक (क्लिक) इवेंट को Upstash Kafka पर स्ट्रीम कर सकते हैं फिर आगे प्रोसेसिंग के लिए उन्हें डेटा लेक में स्टोर कर सकते हैं।
    • Upstash Kafka पहला सर्वरलेस Kafka ऑफरिंग है। पे-पर-रिक्वेस्ट मॉडल के साथ, आप सैकड़ों डॉलर का भुगतान किए बिना पूरी तरह से प्रबंधित Kafka क्लस्टर प्राप्त कर सकते हैं। मुफ्त टियर के साथ, आप सेकंड में एक Kafka क्लस्टर बना सकते हैं और बिना क्रेडिट कार्ड दर्ज किए। Upstash टीम उपलब्धता, रखरखाव, स्केलिंग, अपग्रेड और अन्य सभी थकाऊ चीजों का ख्याल रखती है जबकि आप अपने ऐप पर ध्यान केंद्रित करते हैं।
  4. Upstash MongoDB सोर्स कनेक्टर

    • MongoDB सोर्स कनेक्टर डेटा इंटीग्रेशन और स्ट्रीमिंग प्लेटफॉर्म, जैसे Apache Kafka Connect में उपयोग किया जाने वाला एक घटक है, जो MongoDB डेटाबेस से जुड़ने और रीयल-टाइम में परिवर्तनों या घटनाओं को कैप्चर करने के लिए होता है।
    • Upstash MongoDB सोर्स कनेक्टर MongoDB से दूसरे सिस्टम या प्लेटफॉर्म पर डेटा के मूवमेंट को सुविधाजनक बनाता है, जिससे निर्बाध डेटा इंटीग्रेशन और एनालिटिक्स की अनुमति मिलती है।
  5. Apache Spark

    • Apache Spark सिंगल-नोड मशीनों या क्लस्टर्स पर डेटा इंजीनियरिंग, डेटा साइंस और मशीन लर्निंग को निष्पादित करने के लिए एक मल्टी-लैंग्वेज इंजन है।
    • Upstash Kafka को Apache Spark के साथ एकीकृत करके जो Upstash द्वारा आउट-ऑफ-द-बॉक्स प्रदान किया जाता है, आप अपने वेब एप्लिकेशन से ट्रैफिक (क्लिक) इवेंट को Upstash Kafka पर स्ट्रीम कर सकते हैं फिर रीयल-टाइम पर इसका विश्लेषण कर सकते हैं।
    • Apache Spark उपयोगकर्ता सेगमेंट के अपडेट को प्रोसेस करने के लिए जिम्मेदार होगा। इन अपडेट को तब Upstash Kafka पर लिखा जाएगा قبل Aerospike डेटाबेस को अपडेट करने के लिए प्रसारित किया जाएगा।

4. डिजाइन चुनौतियाँ

सेगमेंटेशन इंजन की बढ़ती गोद और उपयोग सिस्टम के लिए कुछ चुनौतियों को संभावित रूप से पेश कर सकता है।

  • राइट QPS बॉटलनेक: अधिक और बड़े सेगमेंट के निर्माण से राइट क्वेरीज प्रति सेकंड (QPS) में बॉटलनेक हो सकता है, जिसके परिणामस्वरूप सेगमेंट निर्माण के लिए लंबा प्रतीक्षा समय हो सकता है।
  • कम विलंबता अनुरोध: यह निर्धारित करते समय बहुत कम विलंबता हासिल करना महत्वपूर्ण है कि कोई उपयोगकर्ता किसी विशिष्ट सेगमेंट से संबंधित है या नहीं, विशेष रूप से कुछ संचार भेजते समय।
  1. रीड विलंबता

    • इसके अलावा, जैसे-जैसे प्लेटफॉर्म विकसित होता रहता है, यहां तक कि आवश्यक < 50ms रीड विलंबता के साथ, इस बात की आशंका है कि यह गति कुछ सेवाओं और उनके भविष्य के उपयोग के मामलों के लिए पर्याप्त नहीं हो सकती है।

    • उदाहरण के लिए, संचार भेजने से पहले उपयोगकर्ता सेगमेंट सदस्यता निर्धारित करने के लिए अधिसूचना सेवा को त्वरित जांच की आवश्यकता होने की उम्मीद है। प्रत्येक संचार अनुरोध के लिए विलंबता बढ़ाना भविष्य में अस्वीकार्य होने की आशंका है।

  2. Kafka इन्फ्रास्ट्रक्चर प्रबंधित करना

    • लेनदेन स्रोतों से प्रति मिनट लाखों घटनाओं को संभालना वास्तव में Kafka इन्फ्रास्ट्रक्चर का उपयोग करते समय चुनौतियां पेश कर सकता है, और इस तरह के उच्च थ्रूपुट का प्रभावी प्रबंधन विभिन्न कारकों के सावधानीपूर्वक विचार की आवश्यकता होती है।

    • उच्च-थ्रूपुट Kafka इन्फ्रास्ट्रक्चर को बनाए रखने के लिए नियमित प्रदर्शन परीक्षण और अनुकूलन महत्वपूर्ण हैं।

  3. MongoDB चेंज डेटा कैप्चर

    • वेब एप्लिकेशन से इवेंट को एकत्रित करना, विशेष रूप से जब वे MongoDB जैसे पारंपरिक ट्रांजैक्शनल डेटाबेस में संग्रहीत होते हैं, और फिर उन्हें डेटा लेक पर पुश करना वास्तव में कुछ प्रयास शामिल कर सकता है।

    • MongoDB द्वारा प्रदान किए गए चेंज डेटा कैप्चर तंत्र का उपयोग करें या डेटाबेस में परिवर्तनों को कैप्चर करने के लिए एक कस्टम समाधान लागू करें।

5. प्रस्तावित समाधान

  1. डिस्ट्रिब्यूटेड कैश Aerospike रीड विलंबता में सुधार के लिए

    • Aerospike में उपयोगकर्ता के सेगमेंट होंगे जहां उपयोगकर्ता आईडी उपयोगकर्ता सेगमेंट तक पहुंचने के लिए प्राथमिक कुंजी के रूप में कार्य करता है।

    • इसके अलावा, आप सेगमेंट आईडी पर सेकेंडरी इंडेक्स भी लागू कर सकते हैं, सेगमेंट उपयोगकर्ताओं की पुनर्प्राप्ति को सुव्यवस्थित कर सकते हैं और सेगमेंट उपयोगकर्ताओं को अलग से संग्रहीत करने की आवश्यकता को समाप्त कर सकते हैं।

    • इसके अलावा, डिजाइन विलंबता आवश्यकताओं को पूरा करने का लक्ष्य रखता है, जिसमें कैश के रूप में कार्य करने की क्षमता है, संभावित रूप से Redis की आवश्यकता को प्रतिस्थापित करता है।

    • वर्तमान Aerospike को Upstash Redis से बदलने के लिए दो सेट डेटा प्रबंधित करने की आवश्यकता होगी: सेगमेंट उपयोगकर्ता और उपयोगकर्ता सेगमेंट।

  2. सर्वरलेस Upstash Kafka Kafka इन्फ्रास्ट्रक्चर प्रबंधित करने के लिए

    • Upstash Kafka के साथ, आपको पूरी तरह से प्रबंधित सेवा मिलती है। इसका तात्पर्य है कि Upstash Kafka क्लस्टर चलाने में शामिल सभी तकनीकी कार्यों को संभालता है, जैसे सर्वर प्रोविजनिंग, स्केलिंग और रखरखाव।

    • यह आपके लिए बुनियादी ढांचा स्थापित करने, सब कुछ सही ढंग से काम करने और समय के साथ इसे बनाए रखने जैसी चीजों के बारे में चिंता करने की आवश्यकता को दूर करता है।

    • यह आपको Kafka को अपनी विशिष्ट आवश्यकताओं और उद्देश्यों के लिए उपयोग करने पर ध्यान केंद्रित करने की अनुमति देता है। बुनियादी ढांचे के प्रबंधन के बोझ के बिना, आप अब तेजी से विकसित हो रहे विकास वातावरण में विशेष रूप से अपने एप्लिकेशन की समग्र गुणवत्ता बढ़ाने में अपनी ऊर्जा लगा सकते हैं।

    • कीमत शून्य तक स्केल होती है: एक सच्चा सर्वरलेस ऑफरिंग आपसे शुल्क नहीं लेना चाहिए यदि आप सक्रिय रूप से इसका उपयोग नहीं कर रहे हैं। प्राइस-पर-रिक्वेस्ट हमारी सबसे उत्कृष्ट विशेषता है। आप पहले दिन से अपने उत्पादों और बुनियादी ढांचे को इस मूल्य निर्धारण मॉडल को फिट करने के लिए डिजाइन कर रहे हैं। इसके लिए निश्चित लागत को कम करने की आवश्यकता होती है, जो Kafka जैसे जानवर के लिए काफी मुश्किल है।

    • उपयोगकर्ता के लिए कोई ऑपरेशनल बोझ नहीं: उपयोगकर्ता Kafka टॉपिक बनाता है और इसका उपयोग करना शुरू करता है। उच्च उपलब्धता, स्केलेबिलिटी, अपग्रेड, बैकअप… यह सब हमारी जिम्मेदारी है।

    • कनेक्शनलेस: सर्वरलेस फ़ंक्शन स्टेट नहीं रखते। इसलिए आपको स्टेटलेस कनेक्शन के साथ अपने डेटा तक पहुंचने में सक्षम होना चाहिए। हमारा Kafka ऑफरिंग Kafka TCP प्रोटोकॉल का समर्थन करता है इसलिए सभी Kafka क्लाइंट Upstash के साथ काम करेंगे। आपके पास AWS Lambda या Cloudflare Workers जैसे कनेक्शनलेस वातावरण को सक्षम करने के लिए एक बिल्ट-इन REST API भी है।

  3. Upstash MongoDB सोर्स कनेक्टर का उपयोग करके MongoDB CDC

    • Kafka Connect Apache Kafka और अन्य सिस्टम के बीच एक भी कोड लिखे बिना डेटा स्ट्रीमिंग के लिए एक टूल है। Kafka सिंक कनेक्टर के माध्यम से, आप अपने डेटा को किसी अन्य स्टोरेज में निर्यात कर सकते हैं। Kafka सोर्स कनेक्टर के माध्यम से, आप अन्य सिस्टम से अपने Kafka टॉपिक्स में डेटा खींच सकते हैं।

    • Kafka कनेक्टर सेल्फ-होस्टेड हो सकते हैं लेकिन इसके लिए आपको अतिरिक्त प्रोसेस/मशीन सेटअप और रखरखाव करने की आवश्यकता होती है। Upstash आपके Kafka क्लस्टर के लिए कनेक्टर के होस्टेड वर्जन प्रदान करता है। यह आपके लिए एक अतिरिक्त सिस्टम को बनाए रखने का बोझ दूर करेगा और यह अधिक प्रदर्शनकारी भी होगा क्योंकि यह आपके क्लस्टर के करीब होगा।

6. समापन टिप्पणियाँ

यह ब्लॉग पोस्ट Upstash द्वारा प्रदान की गई तकनीकों का लाभ उठाकर कम-विलंबता सेगमेंटेशन प्लेटफॉर्म के डिजाइन सिद्धांतों का पता लगाता है। बुनियादी ढांचे को लाखों उपयोगकर्ताओं को समायोजित करने और डेटा लेक में संग्रहीत टेराबाइट्स डेटा को संभालने के लिए निर्बाध रूप से स्केल करने के लिए इंजीनियर किया गया है।

  1. जावास्क्रिप्ट में null/खाली ऑब्जेक्ट्स वाले ऐरे में वैल्यूज कैसे असाइन करें? जावास्क्रिप्ट में null/खाली ऑब्जेक्ट्स वाले ऐरे में वैल्यूज कैसे असाइन करें?

    जावास्क्रिप्ट का उपयोग करके null/खाली ऑब्जेक्ट्स वाले ऐरे में वैल्यूज असाइन करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial

  1. Redis ZREMRANGEBYRANK: रैंक द्वारा सॉर्टेड सेट एलिमेंट्स को कुशलतापूर्वक हटाएं Redis ZREMRANGEBYRANK: रैंक द्वारा सॉर्टेड सेट एलिमेंट्स को कुशलतापूर्वक हटाएं

    इस ट्यूटोरियल में, हम सीखेंगे कि विशिष्ट रेंज के बीच रैंक वाले सॉर्टेड सेट वैल्यू के एलिमेंट्स को कैसे हटाया जाए। इसके लिए, हम Redis ZREMRANGEBYRANK कमांड का उपयोग करेंगे। ZREMRANGEBYRANK कमांड यह कमांड सॉर्टेड सेट वैल्यू के उन सभी एलिमेंट्स को हटा देता है, जिनकी रैंक start और stop आर्गुमेंट्स के

  1. Android में बटन क्लिक पर WiFi प्रोग्रामेटिकली ऑन/ऑफ कैसे करें? Android में बटन क्लिक पर WiFi प्रोग्रामेटिकली ऑन/ऑफ कैसे करें?

    Android में WifiManager से WiFi टॉगल करना (बटन ऑनक्लिक) दो बटनों (On/Off) का उपयोग करके WiFi चालू/बंद करने का सरल उदाहरण। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: लेआउट में दो बटन res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <LinearLayou