2013-01-02 47 views
8

http://www.erlang.org/doc/man/gen_tcp.html#accept-1 से:एरलांग में स्वीकार्य पूलिंग और भार संतुलन?

यह ध्यान देने योग्य है कि कॉल स्वीकार सॉकेट मालिक प्रक्रिया से जारी किए जाने वाले नहीं है लायक है। एमुलेटर के संस्करण 5.5.3 और उच्चतम का उपयोग करके, एकाधिक एक साथ स्वीकृति कॉल विभिन्न प्रक्रियाओं से जारी की जा सकती हैं, जो आने वाले कनेक्शनों को संभालने वाले स्वीकार्य प्रक्रियाओं के पूल के पूल की अनुमति देती है।

(क्यू 1) यह मतलब यह है कि हम Erlang में Unicorn शैली लोड संतुलन हो सकता है?

(Q2) यदि हां, तो क्या इस सुविधा का उपयोग करने वाले मौजूदा सर्वर या पुस्तकालय हैं?

(Q3) यूनिकॉर्न धारणा है कि का अनुरोध प्रसंस्करण तेजी है के तहत काम करता है। उसी धारणा के तहत, क्या एर्लांग में स्वीकार्य और श्रमिकों के संयोजन से बेहतर प्रदर्शन हासिल करना संभव है?

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

उत्तर

4

मैंने इस प्रश्न को एरलांग प्रश्न मेलिंग सूची में भी पोस्ट किया। द्वारा बताए गए अनुसार डैनियल गोर्टज़न, एरलांग में स्वीकार्य पूल पुस्तकालय हैं, जैसे ranch और swarm

  • खेत इस तरह से यूनिकॉर्न से अलग काम है कि यह केवल "स्वीकार" करता है कई प्रक्रियाओं में, और फिर कुछ वर्कर प्रोसेस करने के लिए सॉकेट से गुजरता है।

  • रास्ता झुंड काम करता है इस अर्थ में कि स्वीकर्ता और कार्यकर्ता संयुक्त है में यूनिकॉर्न के समान है। (उनका कहना है के लिए Loïc Hoguin के लिए धन्यवाद) लेकिन वे थोड़ा अलग हैं, क्योंकि झुंड, स्वीकार किए जाते हैं सॉकेट के प्रसंस्करण के साथ समानांतर में एक नया सॉकेट स्वीकार कर सकते हैं, जबकि यूनिकॉर्न केवल स्वीकार करता है के बाद स्वीकार कर लिया सॉकेट संसाधित किया जाता है

मैं झुंड शैली पसंद करता हूं क्योंकि यह तेजी से और धीमी गति से अनुरोधों के लिए आदर्श है, जबकि यूनिकॉर्न को तेज़ अनुरोध की आवश्यकता है।

इसके बजाय धीमी गति से ग्राहकों की सेवा में कुशल होने के प्रयास के

, गेंडा एक बफरिंग रिवर्स प्रॉक्सी पर निर्भर करता है कुशलता से धीमी गति से ग्राहकों से निपटने के लिए।

यूनिकॉर्न सभी अनुप्रयोगों के लिए उपयुक्त नहीं है। यूनिकॉर्न को अनुप्रयोगों के लिए अनुकूलित किया गया है जो सीपीयू/मेमोरी/डिस्क गहन हैं और बाहरी संसाधनों (जैसे डेटाबेस सर्वर या बाहरी एपीआई) पर प्रतीक्षा करते समय थोड़ा समय बिताते हैं।

यूनिकॉर्न धूमकेतु/रिवर्स-HTTP/पुश अनुप्रयोग के लिए अत्यधिक अक्षम है जहां HTTP कनेक्शन बड़ी मात्रा में निष्क्रिय रहता है।

+0

अनुमान लगाया जाएगा कि खेत के दृष्टिकोण के साथ-साथ अभ्यास में झुंड दृष्टिकोण भी बढ़ता है। मामले में मामला: चरवाहे खेत का उपयोग करता है और चरवाहा बेहद तेज़ है। –

+0

@IGIVECRAPANSWERS सहमत हैं। बीटीडब्ल्यू, क्या काउबॉय इत्यादि के बारे में कोई अद्यतित बेंचमार्क हैं? –

+1

मुझे नहीं पता। मेरा अनुमान है कि आपको अपने वर्कलोड के लिए खुद को मापने की जरूरत है। मेरे पास वर्कलोड के लिए, काउबॉय भी अपनी प्रविष्टि को थोड़ी सी बाधा के रूप में बनाने से पहले श्रृंखला में कहीं और समस्या है। –