त्वरित सम्पक:
परिचय:
नमस्ते, ओपन-सोर्स उत्साही और गो प्रशंसक! मैं अपने ओपन-सोर्स प्रोजेक्ट, थ्रॉटलएक्स, जो एपीआई के लिए एक वितरित दर सीमक है, के त्वरित अवलोकन के साथ वापस आ गया हूं। मैं अभी भी इस ओपन-सोर्स दुनिया में बिल्कुल नया हूं, इसलिए आपकी सलाह का हमेशा स्वागत है! ?
थ्रोटलएक्स को आपके सिस्टम को सुचारू और निष्पक्ष रखते हुए एपीआई ट्रैफ़िक को प्रभावी ढंग से प्रबंधित करने में मदद करने के लिए बनाया गया है। चाहे वह दुरुपयोग को रोकना हो या उच्च भार को संभालना हो, थ्रॉटलएक्स ने आपको कवर किया है। आइए कुछ दर सीमित करने वाले एल्गोरिदम का पता लगाएं जो थ्रॉटलएक्स को शक्तिशाली बनाते हैं। ?
आपके एपीआई ट्रैफ़िक को प्रबंधित करने में मदद करने के लिए थ्रॉटलएक्स तीन मुख्य एल्गोरिदम के साथ आता है:
यह कैसे काम करता है: समय को निश्चित अंतरालों में विभाजित करने की कल्पना करें। प्रत्येक अंतराल के दौरान, आप निश्चित संख्या में अनुरोधों की अनुमति देते हैं - मान लीजिए, प्रति मिनट 100 अनुरोध। एक बार विंडो बंद हो जाने पर, काउंटर रीसेट हो जाता है।
उपयोग केस: पूर्वानुमानित ट्रैफ़िक पैटर्न के लिए बढ़िया है, लेकिन "सीमा मुद्दे" से सावधान रहें, जहां विंडो के अंत के पास कई अनुरोध इच्छित दर सीमा को बायपास कर सकते हैं।
यह कैसे काम करता है: यह एक चलती औसत की तरह है - प्रत्येक विंडो के अंत में पूरी तरह से रीसेट होने के बजाय, दर सीमा समय के साथ "स्लाइड" होती है, जिससे सहज नियंत्रण मिलता है।
केस का उपयोग करें: स्पाइक्स से बचने और अनुरोधों को अधिक समान रूप से वितरित करने के लिए बिल्कुल सही।
यह कैसे काम करता है: एक बाल्टी का चित्र बनाएं जो स्थिर दर पर टोकन से भरती है। अनुरोध टोकन का उपभोग करते हैं, और यदि बाल्टी खाली है, तो अनुरोध तब तक अवरुद्ध रहते हैं जब तक कि वह फिर से भर न जाए।
उपयोग केस: यदि टोकन सहेजे जाते हैं तो अचानक ट्रैफ़िक बढ़ने की अनुमति देने के लिए आदर्श।
यहां फिक्स्ड विंडो रेट लिमिटर का उपयोग करने का एक सरल उदाहरण दिया गया है:
package main import ( "github.com/neelp03/throttlex/ratelimiter" "github.com/neelp03/throttlex/store" "time" "fmt" ) func main() { // Initialize an in-memory store and a Fixed Window rate limiter memStore := store.NewMemoryStore() limiter, err := ratelimiter.NewFixedWindowLimiter(memStore, 10, time.Minute) if err != nil { fmt.Println("Failed to create limiter:", err) return } // Simulate API requests key := "user1" for i := 0; iअपेक्षित आउटपुट:
Request 1 allowed Request 2 allowed ... (up to 10 allowed) Request 11 blocked Request 12 blocked ... (up to 15 blocked)थ्रॉटलएक्स के लिए आगे क्या है? ?
इन भविष्य के अपडेट के लिए बने रहें जो थ्रॉटलएक्स को और भी अधिक शक्तिशाली बना देंगे!
मैं अभी भी ओपन सोर्स में नया हूं, और मुझे खुशी होगी कि आप इस यात्रा का हिस्सा बनें! योगदान का हमेशा स्वागत है - चाहे वह बग फिक्स हो, सुझाव हो, या दस्तावेज़ीकरण सुधार हो।
रेपो देखें: थ्रॉटलएक्स गिटहब रेपो और यदि आपको यह उपयोगी लगता है तो इसे एक स्टार दें। मुद्दों को खोलने या अनुरोधों को खींचने के लिए स्वतंत्र महसूस करें - हर तरह से मदद मिलती है!
अंतिम विचार
थ्रॉटलएक्स एपीआई दर को अधिक सुलभ और कुशल बनाने का मेरा प्रयास है। आइए इसे मज़ेदार बनाएं (और दर्द कम करें)! ?
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3