हमारा विश्लेषणात्मक सर्वर सी ++ में लिखा गया है। यह मूल रूप से अंतर्निहित स्टोरेज इंजन से पूछताछ करता है और बहाव के माध्यम से काफी बड़े संरचित डेटा देता है। एक सामान्य अनुरोध को पूरा करने के लिए लगभग 0.05 से 0.6 सेकंड लगेंगे अनुरोध आकार पर निर्भर करता है।TNonblockingServer, TThreadedServer और TThreadPoolServer, जो मेरे मामले के लिए सबसे अच्छा फिट बैठता है?
मैंने देखा कि कुछ विकल्प हैं जिनके संदर्भ में हम सी ++ कोड, विशेष रूप से TNonblockingServer, TThreadedServer, और TThreadPoolServer में उपयोग कर सकते हैं। ऐसा लगता है कि TNonblockingServer जाने का तरीका है क्योंकि यह अधिक समवर्ती अनुरोधों का समर्थन कर सकता है और अभी भी कार्यों के माध्यम से क्रंच करने के लिए दृश्य के पीछे एक थ्रेड पूल का उपयोग कर सकता है। यह धागे के निर्माण/विनाश की लागत से भी बचाता है।
बचत पर फेसबुक के अद्यतन: http://www.facebook.com/note.php?note_id=16787213919
यहाँ फेसबुक पर, हम सी के लिए एक पूरी तरह से अतुल्यकालिक क्लाइंट और सर्वर पर काम कर रहे ++। यह सर्वर वर्तमान TNonblockingServer की तरह ईवेंट-संचालित I/O का उपयोग करता है, लेकिन इसका इंटरफ़ेस पर एप्लिकेशन कोड सभी एसिंक्रोनस कॉलबैक पर आधारित है। यह हमें सर्वर लिखने की अनुमति देगा जो हजारों एक साथ अनुरोधों की सेवा कर सकता है (जिनमें से प्रत्येक को अन्य थ्रिफ्ट या मेमकैच सर्वर पर कॉल करने की आवश्यकता है) केवल कुछ धागे के साथ।
stackover पर संबंधित पोस्ट: Large number of simulteneous connections in thrift
कहा जा रहा है, वहीं यह आवश्यक नहीं वास्तव में तेजी से काम करते हैं (संचालकों अभी भी एक थ्रेड पूल में अमल) करते हैं करने के लिए सक्षम नहीं होगा, लेकिन अधिक ग्राहकों हो जाएगा एक बार में आपसे जुड़ने में सक्षम
बस सोच रहा है कि क्या कोई अन्य कारक हैं जो मैं यहां याद कर रहा हूं? मैं कैसे तय करूं कि कौन मेरी आवश्यकताओं को सर्वोत्तम बनाता है?