SQS, RabbitMQ और Kafka को भूल जाइए। बस Postgres का उपयोग करें।

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

스크립트

00:00:00SQS, Kafka और RabbitMQ को भूल जाइए क्योंकि अब आप सीधे Postgres में
00:00:05PGMQ के साथ अपनी कतारों (queues) को मैनेज कर सकते हैं। और मैं अभी से लोगों को यह कहते हुए सुन सकता हूँ कि यह स्केल नहीं करता।
00:00:11खैर, वास्तव में यह करता है क्योंकि Postgres आसानी से लाखों पंक्तियों (rows) और
00:00:15प्रति सेकंड हज़ारों अनुरोधों (requests) को संभाल सकता है। इसलिए यदि आप अपने इंफ्रास्ट्रक्चर को सरल रखना चाहते हैं,
00:00:20तो आज हम PGMQ के साथ उच्च वॉल्यूम वाले वितरित (distributed) ऐप्स बनाना सीखेंगे।
00:00:30ठीक है, बिना किसी देरी के। हम सीधे डेमो में कूदते हैं। मैंने Docker के साथ एक प्रोजेक्ट सेटअप किया है
00:00:34और PGMQ इंस्टॉल किया है। आप इसे दो तरीकों से उपयोग कर सकते हैं, या तो केवल SQL या फिर इसके
00:00:41आधिकारिक क्लाइंट पुस्तकालयों (libraries) में से किसी एक जैसे Rust या Python, साथ ही Ruby या TypeScript के कई
00:00:47अन्य वेरिएंट्स। चूंकि हम कभी भी भाषा पर सहमत नहीं होंगे, इसलिए मैं इस डेमो को सिर्फ
00:00:52SQL विकल्प के साथ चलाऊंगा। आइए एक नई कतार (queue) बनाने से शुरू करें। हम select pgmq.create चलाते हैं और फिर
00:00:58कतार का नाम पास करते हैं। यहाँ हर कतार अपनी खुद की एक टेबल होती है। अगर हम सीधे डेटाबेस को देखें,
00:01:04तो हम देख सकते हैं कि नई टेबल अब मौजूद है। इसके बाद हम कतार का नाम निर्दिष्ट करके अपनी कतार में संदेश भेज सकते हैं,
00:01:09और फिर संदेश को JSON के रूप में दे सकते हैं। आप वैकल्पिक रूप से एक विलंब (delay) भी शामिल कर सकते हैं। इसलिए संदेश को कतार में धकेल दिया जाता है,
00:01:15लेकिन मान लीजिए पांच सेकंड तक इसका उपभोग (consume) नहीं किया जा सकता। ठीक है, तो अब हमारे पास कतार में संदेश आ गए हैं।
00:01:20आइए उन्हें उपभोग करें। हम इसे read कमांड के साथ कर सकते हैं। VT विजिबिलिटी टाइमआउट है। और यहाँ इसका मतलब है कि
00:01:26आपके द्वारा पढ़े गए संदेश 30 सेकंड के लिए दिखाई देंगे। ताकि कोई अन्य प्रक्रिया उन्हें न उठा सके।
00:01:31इस तरह PGMQ ठीक एक बार डिलीवरी की गारंटी देता है। मात्रा (quantity) तब संदेशों की वह राशि है जिसे हम पढ़ना चाहते हैं।
00:01:38और यदि उन्हें उस विंडो के भीतर हटाया या संग्रहीत (archive) नहीं किया जाता है, तो वे फिर से दिखाई देने लगेंगे। और ऐसा करने के लिए,
00:01:44आप या तो archive चला सकते हैं, जो कतार से हटा देता है और أرकाइव टेबल में जोड़ देता है, या फिर सिर्फ
00:01:49delete चलाकर। उदाहरण के लिए, यहाँ, मैं ID दो वाले संदेश को हटा देता हूँ। और बस एक छोटी सी बात, यदि आपको यह
00:01:54उपयोगी लगता है, तो चैनल को सब्सक्राइब करके हमारे लिए एक बड़ा एहसान करें। यह यथासंभव कई डेवलपर्स की मदद करने के लिए मुफ्त सामग्री
00:01:59बनाते रहने में हमारी मदद करता है। ठीक है, तो आइए PGMQ का तनाव परीक्षण (stress test) करें। पहले, मैं कतार में 100,000 पंक्तियाँ जोड़ूँगा
00:02:06और इसमें लगभग 0.4 सेकंड का समय लगता है। अब मैं 10 के बैच में एक जॉब को प्रोसेस करने के लिए 100 वर्कर्स लॉन्च करूंगा
00:02:13और देखूंगा कि उन सभी को पढ़ने में कितना समय लगता है। यहाँ, सभी वर्कर केवल संदेश को पढ़ते हैं,
00:02:18लॉग करते हैं कि उन्होंने क्या पढ़ा, और फिर इसे हटा देते हैं। बेशक, आप उस डेटा के साथ कुछ करना चाहेंगे।
00:02:23लेकिन मैं यहाँ सीधे PGMQ के प्रदर्शन का परीक्षण करने से ही संबंधित हूँ। और इसमें नौ सेकंड का समय लगा।
00:02:29प्रत्येक वर्कर ने औसतन प्रति सेकंड 111 संदेशों को संसाधित किया। इसलिए संयुक्त रूप से प्रति सेकंड लगभग 11,100 संदेश।
00:02:37मैंने जानबूझकर Docker कंटेनर को दो CPU और दो गीगाबाइट की मेमोरी तक सीमित कर दिया, जो एक लाइव सेवा के लिए विशिष्ट है।
00:02:44अब, जैसा कि मैंने पहले उल्लेख किया है, आप PGMQ के साथ बातचीत करने के लिए क्लाइंट लाइब्रेरी का भी उपयोग कर सकते हैं।
00:02:49Prisma के साथ TypeScript का उपयोग करके, हम एक कतार बना सकते हैं, संदेश भेज सकते हैं, संदेशों का एक बैच पढ़ सकते हैं, और आप
00:02:55Python के साथ भी ऐसा ही कर सकते हैं। इसलिए यदि आप अतिरिक्त निर्भरता (dependencies) नहीं चाहते हैं, तो आप वास्तव में
00:03:01PGMQ के साथ Postgres के भीतर बड़े पैमाने पर कतारें चला सकते हैं। और हम Postgres के साथ स्टैक के जितना संभव हो सके उतने हिस्से को बदलने के साथ इसे बहुत आगे ले जाते हैं,
00:03:08जिसे मैं इस वीडियो में कवर करता हूँ।

핵심 요약

Postgres में PGMQ का उपयोग करके अलग-अलग मैसेज ब्रोकर्स के बिना लाखों पंक्तियों और उच्च वॉल्यूम वाली कतारों को प्रबंधित किया जा सकता है।

하이라이트

  • Postgres PGMQ के साथ लाखों पंक्तियों और प्रति सेकंड हज़ारों अनुरोधों को संभाल सकता है।

  • SQL के माध्यम से pgmq.create कमांड का उपयोग करके एक नई कतार बनाई जाती है।

  • संदेशों को कतार में धकेलते समय पांच सेकंड तक का वैकल्पिक विलंब शामिल किया जा सकता है।

  • विजिबिलिटी टाइमआउट संदेशों को 30 सेकंड के लिए दृश्यमान रखता है ताकि अन्य प्रक्रियाएं उन्हें न उठा सकें।

  • Docker कंटेनर में दो CPU और दो गीगाबाइट मेमोरी के साथ प्रति सेकंड लगभग 11,100 संदेशों को संसाधित किया गया।

타임라인

Postgres में PGMQ का परिचय और सेटअप

  • SQS, Kafka और RabbitMQ के विकल्प के रूप में Postgres में सीधे PGMQ का उपयोग किया जाता है।
  • Postgres आसानी से लाखों पंक्तियों और प्रति सेकंड हज़ारों अनुरोधों को संभाल सकता है।

यह खंड पारंपरिक मैसेज ब्रोकर्स को छोड़कर सीधे Postgres में कतारों को प्रबंधित करने के तरीके को प्रस्तुत करता है। बुनियादी इंफ्रास्ट्रक्चर को सरल रखते हुए उच्च वॉल्यूम वाले वितरित ऐप्स बनाने की क्षमता पर जोर दिया गया है।

कतार बनाना और संदेशों का प्रबंधन

  • select pgmq.create कमांड से कतार बनाई जाती है और हर कतार अपनी खुद की एक टेबल होती है।
  • संदेशों को JSON के रूप में भेजा जाता है और पांच सेकंड तक का विलंब जोड़ा जा सकता है।
  • विजिबिलिटी टाइमआउट 30 सेकंड के लिए संदेशों को दृश्यमान रखकर एक बार डिलीवरी की गारंटी देता है।

Docker के साथ प्रोजेक्ट सेटअप करने के बाद SQL के माध्यम से कतार बनाने और संदेश भेजने की प्रक्रिया को दिखाया गया है। संदेशों को पढ़ने के लिए read कमांड और उन्हें हटाने या संग्रहीत करने के लिए delete और archive कमांड का उपयोग स्पष्ट किया गया है।

तनाव परीक्षण और क्लाइंट लाइब्रेरी एकीकरण

  • कतार में 100,000 पंक्तियाँ जोड़ने में लगभग 0.4 सेकंड का समय लगता है।
  • 100 वर्कर्स द्वारा प्रति सेकंड लगभग 11,100 संदेशों को संसाधित किया गया।
  • TypeScript, Rust, Python और Ruby जैसी विभिन्न क्लाइंट लाइब्रेरी के माध्यम से PGMQ का उपयोग किया जा सकता है।

सीमित संसाधनों वाले Docker कंटेनर पर PGMQ का तनाव परीक्षण करके इसके उच्च प्रदर्शन को सिद्ध किया गया है। अंत में, अतिरिक्त निर्भरता के बिना Postgres के भीतर बड़े पैमाने पर कतारें चलाने के लिए विभिन्न प्रोग्रामिंग भाषाओं के उपयोग पर प्रकाश डाला गया है।

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기