पर थ्रॉटल कार्यान्वयन मैं a Google Chrome extension for Stack Exchange लिख रहा हूं। यह एक साधारण विस्तार है जो आपको अपनी प्रतिष्ठा का ट्रैक रखने और स्टैक एक्सचेंज साइटों पर टिप्पणियों की अधिसूचना प्राप्त करने की अनुमति देता है।स्टैक एक्सचेंज एपीआई अनुपालन अनुरोध Google App Engine क्लाउड इंफ्रास्ट्रक्चर
वर्तमान में मुझे कुछ मुद्दों का सामना करना पड़ा है जो मैं स्वयं को संभाल नहीं सकता। मेरा एक्सटेंशन Google ऐप इंजन का उपयोग बैक एंड के रूप में करता है ताकि एक्सचेंज एपीआई को बाहरी अनुरोध कर सकें। एकल साइट पर नई टिप्पणियों के विस्तार से प्रत्येक एकल ग्राहक अनुरोध गैर-स्कीटिश उपयोगकर्ता के लिए प्रतिक्रिया तैयार करने के लिए एपीआई एंडपॉइंट पर बहुत से अनुरोधों का कारण बन सकता है। औसत उपयोगकर्ता के पास स्टैक एक्सचेंज नेटवर्क से कम से कम 3 साइटें हैं, कुछ में> 10 है!
स्टैक एक्सचेंज एपीआई के पास अनुरोध सीमाएं हैं:
एक एकल आईपी पता केवल प्रति दिन (10,000) एपीआई अनुरोधों की एक निश्चित संख्या बना सकता है।
यदि मैं एकल आईपी पते से 5 सेकंड से अधिक 30 से अधिक अनुरोध करता हूं तो एपीआई मेरे अनुरोधों को बंद कर देगा।
यह स्पष्ट है कि सभी अनुरोधों को 30 प्रति 5 सेकंड तक थ्रॉटल किया जाना चाहिए और वर्तमान में मैंने मेमकैड के साथ एक वितरित लॉक के आधार पर अनुरोध थ्रॉटल तर्क लागू किया है। मैं जीएई उदाहरणों और थ्रॉटल UrlFetch अनुरोधों की गतिविधि को समन्वयित करने के लिए एक सरल लॉक प्रबंधक के रूप में memcached का उपयोग कर रहा हूँ।
लेकिन मुझे लगता है कि 5 सेकंड प्रति 30 से अधिक अनुरोध जारी करने के लिए ऐसे शक्तिशाली बुनियादी ढांचे को सीमित करने में बड़ी विफलता है। इस तरह की एपीआई अनुरोध दर मुझे नई रोचक और उपयोगी सुविधाओं के विकास को जारी रखने की अनुमति नहीं देती है और एक दिन यह ठीक तरह से काम करना बंद कर देगा।
अब मेरे ऐप में 9 0 उपयोगकर्ता हैं और बढ़ रहे हैं और मुझे समाधान दर को अधिकतम करने के लिए समाधान के साथ आना चाहिए।
ज्ञात ऐप इंजन विभिन्न आईपी के उसी पूल के माध्यम से बाह्य UrlFetch अनुरोध करता है। मेरा लक्ष्य उपयोग की एपीआई शर्तों के अनुपालन को सुनिश्चित करने और जीएई वितरित क्षमताओं का उपयोग करने के लिए अनुरोध थ्रॉटल कार्यक्षमता लिखना है।
तो मेरा सवाल यह है कि उपयोग की एपीआई शर्तों का पालन करते हुए और जीएई वितरित क्षमताओं का उपयोग करते हुए अधिकतम व्यावहारिक एपीआई थ्रूपुट प्रदान करना है।
किसी अन्य प्लेटफ़ॉर्म/होस्ट/प्रॉक्सी का उपयोग करने के लिए सलाह मेरे दिमाग में बस बेकार है।
तो आपका क्रोम एक्सटेंशन आपके सर्वर पर अनुरोध भेज रहा है, और फिर आपका सर्वर API को स्टैक करने के अनुरोध भेज रहा है? क्रोम से सीधे स्टैक एपीआई कॉल करना संभव होगा? – serg
@serg, हां, यह संभव होगा, लेकिन इसका मतलब यह होगा कि एक्सटेंशन लगातार उपयोगकर्ता के प्रत्येक खाते के लिए एपीआई एंडपॉइंट पर बहुत से अनुरोध कर रहा होगा। उपयोगकर्ता के खातों की संख्या से इसे गुणा करें। इसके अलावा विस्तार से एपीआई एंडपॉइंट्स तक पहुंचने के लिए अतिरिक्त अनुमति की आवश्यकता होगी। लेकिन हाँ, अब मैं इस समाधान के बारे में सोच रहा हूं –
यदि वे एक एपीआई से 10k अनुरोधों की अनुमति देते हैं तो मुझे लगता है कि वे इसे संभाल सकते हैं। – serg