हमारे पास एक प्रणाली है जो अनुरोधों का एक बैच देता है, बाहरी तृतीय पक्ष एपीआई को समान संख्या में कॉल करता है। यह देखते हुए कि यह एक I/O बाध्य कार्य है, हम वर्तमान में इन अनुरोधों की सेवा के लिए आकार 20 के कैश किए गए थ्रेड-पूल का उपयोग करते हैं।बाहरी API अनुरोधों के बड़े # के लिए सॉफ्टवेयर/हार्डवेयर स्केलिंग?
उपयोग अधिक कोर (कम संदर्भ-स्विचिंग, अधिक समवर्ती धागे समर्थन करने में सक्षम)
या
अधिक मशीनों का उपयोग के साथ कम मशीनों: उपरोक्त के अलावा, समाधान करने के लिए है कमोडिटी/सस्ता हार्डवेयर (पिज्जा बक्से) का लाभ उठाकर
हमें एक दिन प्राप्त अनुरोधों की संख्या के क्रम में है लाखों लोगों की।
हम जावा का उपयोग कर रहे हैं, इसलिए यहाँ धागे कर्नेल हैं, न कि "हरा"।
अन्य अंक/विचार:
- Hadoop आमतौर पर इस प्रकार की समस्याओं के लिए प्रयोग किया जाता है, लेकिन यह वास्तविक समय बनाम टकसाली ऑफ़लाइन डाटा खनन की जरूरत है।
- API अनुरोधों पर औसत
- 200 मि.से 2 सेकंड से कहीं भी ले अनुरोध
- प्रश्न में 3 पार्टी अधिक अनुरोध हम कर सकते हैं संभवतः आग (भुगतान विक्रेता) से सर्विसिंग करने में सक्षम है के बीच कोई साझा राज्य नहीं है।
क्या आपने राज्य साझा किया है, अनुरोधों को संभालने के लिए उपयोग किया जाता है? यदि हां, तो यह कितनी बार बदल रहा है? इस साझा राज्य का आकार क्या है? –
तृतीय पक्ष एपीआई पर सीमा क्या है?यदि आपके द्वारा कॉल की गई एपीआई अभी भी बाधा है तो आपके ढेर को स्केल करने का कोई मतलब नहीं है। क्या आप इससे प्राप्त डेटा को कैश कर सकते हैं या एक कॉल से डेटा का उपयोग कर सकते हैं सेवा/आपूर्ति अपने ग्राहकों को एक साथ कई? – Paolo
उपरोक्त प्रश्नों के उत्तर देने के लिए मेरी मूल पोस्ट संपादित की गई। कॉल पूरी तरह से स्वतंत्र हैं, इसलिए कैश करने के लिए कोई डेटा नहीं है। – smonky