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

सर्वरलेस रेट लिमिटिंग: स्टेटलेस वातावरण में संसाधनों की रक्षा और अनुकूलन करें

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

@upstash/ratelimit की घोषणा

GitHub, npm या Deno पर उपलब्ध

आज हम @upstash/ratelimit जारी कर रहे हैं, जो सर्वरलेस वातावरण जैसे Vercel, Cloudflare, Deno, Fastly और Netlify में रेट-लिमिटिंग का एक समाधान है। यह Upstash सर्वरलेस Redis के शीर्ष पर बनाया गया है और दुनिया भर में आपके उपयोगकर्ताओं के लिए कम विलंबता अनुभव प्रदान करने के लिए एक या अधिक डेटाबेस का उपयोग करके रेट-लिमिटिंग समाधान प्रदान करता है!

शुरू करें

@upstash/ratelimit अब तक तीन अलग-अलग मानकीकृत एल्गोरिदम लागू करता है, और आप परियोजना के README में उनके बारे में अधिक पढ़ सकते हैं।

हम दो विधियां प्रदान करते हैं:

  • limit(identifier: string): Promise<RatelimitResponse>

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

  • blockUntilReady(identifier: string, timeout: number): Promise<RatelimitResponse>

यदि आप किसी अनुरोध को तुरंत अस्वीकार नहीं करना चाहते हैं बल्कि तब तक प्रतीक्षा करना चाहते हैं जब तक इसे संसाधित नहीं किया जा सकता। ध्यान रखें कि कुछ प्लेटफ़ॉर्म आपके फंक्शन के निष्पादन समय के लिए आपसे शुल्क लेते हैं।

सिंगल रीजनल डेटाबेस

सिंगल डेटाबेस के साथ रेटलिमिटिंग सीधी है। आप Upstash पर एक डेटाबेस बनाते हैं और इसका उपयोग करना शुरू करते हैं:

import { Ratelimit } from "@upstash/ratelimit"; 
import { Redis } from "@upstash/redis"; 
 // एक नया रेटलिमिटर बनाएं, जो 10 सेकंड में 10 अनुरोधों की अनुमति देता है 
const ratelimit 
= new Ratelimit({ 
 redis: Redis.fromEnv(), 
 limiter: Ratelimit.slidingWindow(10, "10 s"), 
}); 
 // सभी अनुरोधों को एक ही रेटलिमिट के साथ सीमित करने के लिए एक स्थिर स्ट्रिंग का उपयोग करें 
// या व्यक्तिगत सीमाओं के लिए userID, apiKey या ip एड्रेस का उपयोग करें। 
const identifier 
= "api"; 
const { success } 
= await ratelimit.limit(identifier); 
 if (!success) 
{ 
 return "Unable to process at this time"; 
} 
doExpensiveCalculation(); 
return "Here you go!"; 

ग्लोबल रेप्लिकेटेड रेट-लिमिटिंग

मान लें कि आपके पास यूएस और यूरोप में ग्राहक हैं। इस मामले में, आप Upstash पर दो रीजनल Redis डेटाबेस बना सकते हैं और आपके उपयोगकर्ता उनमें से जिस भी DB के निकटतम हैं, उसकी विलंबता का आनंद लेंगे।

import { GlobalRatelimit } from "@upstash/ratelimit"; 
// deno के लिए: ऊपर देखें 
import { Redis } from "@upstash/redis"; 
 // एक नया रेटलिमिटर बनाएं, जो 10 सेकंड में 10 अनुरोधों की अनुमति देता है 
const ratelimit 
= new GlobalRatelimit({ 
 redis: [ 
 new Redis({ 
 /* europe */ 
 }), 
 new Redis({ 
 /* north america */ 
 }), 
 ], 
 limiter: Ratelimit.slidingWindow(10, "10 s"), 
}); 

समापन शब्द

यदि आपके कोई प्रश्न हैं, तो कृपया GitHub या नीचे दिए गए चैनलों पर हमसे संपर्क करें।

हमें Discord और Twitter पर फॉलो करें।

  1. नक्स्ट 3 ऐप्स को सर्वरलेस रेडिस के साथ लॉन्च करें: तेज़ परफॉरमेंस के लिए नक्स्ट 3 ऐप्स को सर्वरलेस रेडिस के साथ लॉन्च करें: तेज़ परफॉरमेंस के लिए

    परिचय अगर आपको कभी ऐसा ऐप बनाना पड़ा हो जो एप्लिकेशन उपयोग को ट्रैक करे, संसाधन उपयोग को प्रतिबंधित करे या ऐप परफॉरमेंस बढ़ाने के लिए कैश से डेटा लाए, तो आप जानते होंगे कि रेडिस इन आवश्यकताओं का जवाब है! रेडिस एक इन-मेमोरी, की-वैल्यू डेटाबेस है। यह ओपन सोर्स है और रिमोट डिक्शनरी सर्वर के लिए खड़ा है

  1. ग्लोबल सर्वरलेस और एज डेटाबेस: निर्बाध, स्केलेबल स्टोरेज ग्लोबल सर्वरलेस और एज डेटाबेस: निर्बाध, स्केलेबल स्टोरेज

    हाल के वर्षों में, सर्वरलेस आर्किटेक्चर और एज कंप्यूटिंग एप्लिकेशन डिप्लॉयमेंट के लिए बहुत लोकप्रिय हो रहे हैं। लेकिन सर्वरलेस और/या एज फंक्शन के अंदर एप्लिकेशन स्टेट और डेटा को स्टोर करना एक अलग कहानी है। कई कठिनाइयाँ हैं जैसे; डेटाबेस से कनेक्शन मैनेज करना, डेटा को कई स्थानों से तेज़ एक्सेस के लिए

  1. पाइपलाइन REST API के साथ सर्वरलेस Redis एक्सेस को बढ़ाएं पाइपलाइन REST API के साथ सर्वरलेस Redis एक्सेस को बढ़ाएं

    Upstash नेटिव Redis API के अलावा REST API का समर्थन करता है। REST API डेवलपर्स को सर्वरलेस और एज फ़ंक्शंस से कनेक्शन समस्याओं के बिना अपने Redis तक पहुंचने में मदद करता है। लेकिन यदि आप एक ही फ़ंक्शन में कई Redis कमांड निष्पादित करते हैं तो इसका मतलब है कि आप डेटाबेस को कई बार कॉल करेंगे। हमारे समुद