परिचय
<पी> क्या आपने कभी सोचा कि कोडशेयर जैसे प्लेटफ़ॉर्म कैसे बनाए जाते हैं? क्या आपने कभी अपने लिए एक अच्छा डेवलपर अनुभव बनाए रखते हुए इस तरह की सेवा को बढ़ाने की चुनौतियों से निपटने की कोशिश की? जब मैंने बाइटक्राउड्स बनाने का फैसला किया, तो मुझे सीखना पड़ा कि ये सब कैसे करना है। पाठ-साझाकरण क्षमताएं प्रदान करने के लिए Yjs का उपयोग करने के निर्णय के बाद कठोर शोध करने के बाद, एक डेटाबेस चुनने का समय आया। बाज़ार में इतने सारे विकल्प उपलब्ध होने के कारण, मैंने एक आवश्यक कीवर्ड का उपयोग करके सूची को छोटा कर दिया:सरलता पी> अपस्टैश क्यों?
<पी> अपस्टैश की खोज से पहले ही, मुझे इसके सरल एपीआई के लिए Redis® में दिलचस्पी थी। हालाँकि, इसे प्राथमिक डेटाबेस के रूप में उपयोग करने से स्केलिंग (आपको कैशिंग के लिए भी इसकी आवश्यकता हो सकती है) और दृढ़ता बनाए रखने जैसी चुनौतियाँ आती हैं। साथ ही, किसी भी प्रायोजन को सुरक्षित करने से पहले, आपको ओपन-सोर्स सॉफ़्टवेयर के बजट के बारे में बहुत सावधान रहना होगा। क्या आप कंप्यूटिंग शक्ति के लिए भुगतान करेंगे, भले ही इसका कभी-कभी उपयोग न किया गया हो? क्या आप अचानक ट्रैफ़िक में बढ़ोतरी को संभाल सकते हैं और नई सुविधाओं को प्रकाशित करने, मौजूदा सुविधाओं में सुधार करने या कुछ बग्स को ठीक करने के बजाय बुनियादी ढांचे पर काम करने में घंटों बिताने के लिए तैयार हो सकते हैं? मैं, एक के लिए, नहीं था। तो मुझे अपस्टैश मिला। <पी> अपस्टैश रेडिस की पेशकश मेरे 3 आवश्यक मानदंडों से मेल खाती है:इसका उपयोग करना आसान है , पैमाने में आसान , औरलचीला . सर्वर रहित क्लाइंट में उपयोग करने के लिए इसे कम विलंबता के साथ, बॉक्स से बाहर REST sdk के साथ संयोजित करें (एक आवश्यकता बाइटक्राउड्स के लिए भी), वैश्विक प्रतिकृति और कंप्यूटिंग शक्ति के लिए एक भुगतान जैसी योजना, कुछ के नाम बताएं, और आप समझ जाएंगे कि मैंने इसे अपने प्रोजेक्ट के लिए क्यों चुना। पूरे ऐप में Redis® का उपयोग करना
<पी> आइए जानें कि Redis® का उपयोग किसी प्रोजेक्ट के मुख्य डेटाबेस के रूप में कैसे किया जा सकता है, जो कई सेवाओं की जरूरतों को पूरा करता है। संदर्भ को समझने के लिए, यहां बाइटक्राउड्स के प्रवाह का एक चित्र दिया गया है: <पी>
<पी> यह ग्राहकों के बीच टेक्स्ट को सिंक करने के लिए एबली और एक कस्टम एनालिटिक्स इंजन का उपयोग करता है जो अनुरोध के आईपी पते के आधार पर डेटा एकत्र करता है। मुख्य भंडारण
<पी> एक बाइटक्राउड निम्नलिखित गुणों के साथ Redis® हैश का रूप लेता है: {
text: string,
language: string,
authorizedEmails: undefined || string array
}
<पी> अपडेट के बीच "x" सेकंड की देरी के साथ, हम हैश के गुणों में से एक में बदलाव होने पर उसे अपडेट करते हैं। उत्पादन में, यह वर्तमान में 100 मिलीसेकंड पर सेट है। प्रमाणीकरण और प्राधिकरण
प्रमाणीकरण
<पी> चूँकि Bytecrowds Next.js का उपयोग करता है, GitHub OAuth को एकीकृत करने के लिए Auth.js एक ठोस विकल्प था। सौभाग्य से, हम सत्रों को संग्रहीत करने के लिए अपस्टैश एडाप्टर का भी लाभ उठा सकते हैं, जिससे हम अपने पूरे ऐप में Redis® का उपयोग कर सकते हैं। प्राधिकरण
<पी> Bytecrowds, मांग पर, एक authorizedEmails बनाकर प्राधिकरण को संभालता है फ़ील्ड जो एक बार सेट होने के बाद एपीआई से अपरिवर्तनीय है। Redis® के बारे में जो चीजें मुझे पसंद हैं उनमें से एक है नियमित संचालन के लिए बॉक्स से बाहर उपलब्ध ढेर सारे फ़ंक्शन जो कुशल होने के लिए एल्गोरिदमिक रूप से डिज़ाइन किए गए हैं। एक उदाहरण देने के लिए, हमें यह जांचने के लिए बस इतना करना होगा कि authorizedEmails HEXISTS कमांड का उपयोग करने के लिए पहले से ही सेट किया गया है, जिसमें O(1) जटिलता है। एनालिटिक्स
<पी> बाइटक्राउड्स एक एनालिटिक्स सिस्टम का उपयोग करता है जो डेटा की दो श्रेणियों को संभालता है: - एक दिन के आँकड़े, जो Redis® हैश का रूप लेते हैं, जिसे
year month day नाम दिया गया है निम्नलिखित गुणों के साथ:
{
countries: string array,
hits: integer,
pages: string array,
uniqueVisitors: integer,
addresses: string array,
continents: string array
}
<पी> जहां addresses SHA256-एन्क्रिप्टेड IP पतों की एक श्रृंखला है जिसका उपयोग वेबसाइट विज़िटरों की अद्वितीय संख्या निर्धारित करने के लिए किया जाता है। - 3 कुंजियाँ जिनका नाम
continents है , countries , और pages जिसके लिए Redis® सॉर्ट किए गए सेट का उपयोग डेटा को संग्रहीत करने के लिए किया गया था, प्रत्येक स्टेट को उसकी गिनती ("स्कोर", सॉर्ट किए गए सेट के लिए) के साथ संग्रहीत करके, हम SORT या SORT_RO जैसे कमांड का उपयोग करके उन्हें आसानी से क्वेरी या सॉर्ट कर सकते हैं। रेडिस की सादगी फिर से दिखी।
<पी> यदि आप इसके पीछे के कोड के बारे में जानने को उत्सुक हैं, तो https://github.com/Bytecrowds/analytics/blob/main/src/index.js देखें <पी> ध्यान दें :अधिक जटिल परिदृश्य में, आप शायद इस सिस्टम में कुछ बदलाव लागू करेंगे, जैसे प्रसंस्करण से पहले कच्चे डेटा को संग्रहीत करना और अपाचे काफ्का जैसे कुछ प्रकार के स्ट्रीम प्रोसेसिंग टूल का उपयोग करना (अपस्टैश इसका भी ख्याल रख सकता है, दस्तावेज़ों की जांच करें)। इसे लाइव देखें
<पी> क्या आप बाइटक्राउड्स को क्रियान्वित होते देखना चाहते हैं? https://www.bytecrowds.com पर जाएं, "new bytecrowd" बटन पर क्लिक करें और लिंक को कई टैब में खोलें। जब आप लिखना शुरू करेंगे, तो आप देखेंगे कि कोड सभी कनेक्टेड क्लाइंट्स पर दोहराया गया है। समाप्त
<पी> यह कोई रहस्य नहीं है कि एक ओपन-सोर्स प्रोजेक्ट का एकमात्र सक्रिय अनुरक्षक होना कठिन है, लेकिन सही उपकरण और एक ऑटो-स्केलिंग इंफ्रास्ट्रक्चर होना एक बड़ा समर्थन हो सकता है जो आपको ट्रैफ़िक स्पाइक्स के बारे में चिंता किए बिना, शानदार प्रोजेक्ट्स पर काम करना जारी रखने में मदद करता है। क्या आप पहले से ही अपस्टैश रेडिस® को आज़माने के लिए आश्वस्त हैं? निःशुल्क खाते के लिए साइन अप करें, किसी क्रेडिट कार्ड की आवश्यकता नहीं है। <पी> पूरा कोड देखने के लिए, GitHub रिपॉजिटरी की जाँच करें। यदि इस लेख के बारे में आपके कोई प्रश्न या प्रतिक्रिया है, तो मुझसे tudor.zgimbau@gmail.com पर संपर्क करें।