2012-05-25 6 views
5

का उपयोग करके मैं php का उपयोग कर साइट बनाने पर विचार कर रहा हूं, लेकिन इसके कई पहलू हैं जो नोड.जे.एस. में किए जाने पर कहीं अधिक बेहतर प्रदर्शन करेंगे। उसी समय, साइट के बड़े हिस्से को PHP में रहने की आवश्यकता है। ऐसा इसलिए है क्योंकि PHP में बहुत सी कार्यक्षमता पहले ही विकसित हो चुकी है, और पुनर्विकास, परीक्षण, और आगे भी उपक्रम का बहुत बड़ा होगा, और स्पष्ट रूप से, साइट के उन हिस्सों में PHP में पूरी तरह से ठीक चल रहा है।php + gearman + node.js

मैं node.js में सेक्शन को पुनर्निर्माण करने पर विचार कर रहा हूं जो कि node.js में सबसे अधिक चलाने से लाभान्वित होगा, फिर PHP को गियरमैन का उपयोग करके node.js को अनुरोध पास कर दिया जाएगा। इस तरह, मैं अधिक श्रमिकों को लॉन्च करके स्केल आउट स्कैन करता हूं और गियरमैन लोड वितरण को संभालता हूं।

हमारी साइट पर बहुत अधिक ट्रैफ़िक मिलता है, और मुझे चिंता है कि गियरमैन इस लोड को संभाल सकता है या नहीं। मैं इस सवाल का उत्पादक रखने के लिए wan't, तो काफी हद तक निम्न पता बिंदुओं पर ध्यान केंद्रित करते हैं:

  • gearman कर सकते हैं हमारी उम्मीद भार संभालने हम स्मृति के सभी संभाल (संभावित आसपास 3000+ समय में नौकरियों पंक्तिबद्ध, प्रति सेकंड कई हजार संसाधित किया जा रहा है)?
  • क्या यह बेहतर होगा यदि मैंने कर्ल का उपयोग करके node.js को अनुरोध पास कर दिए हैं, और यदि ऐसा है, तो node.js किसी दिए गए स्क्रिप्ट के कई उदाहरणों पर लोड वितरित करने का कोई तरीका प्रदान करता है?
  • क्या गियरमैन इस तरह से कॉन्फ़िगर किया जा सकता है कि विफलता का कोई भी बिंदु नहीं है?
  • कुछ ऐसे मुद्दे क्या हैं जिन्हें आप विकास और स्केलिंग के मामले में उत्पन्न कर सकते हैं?

मैं इन विस्तृत श्रृंखलाओं को संबोधित कर रहा हूं ताकि इस पोस्ट को देखने वाले किसी भी व्यक्ति को एक दूसरे पर दृढ़ता से प्रभावित होने वाले मामलों के बारे में जानकारी की एक विस्तृत श्रृंखला एकत्र कर सकें।

बेशक मैं इन सब का परीक्षण करूंगा, लेकिन मैं संभावित रूप से ऐसा कुछ करने से पहले जितना संभव हो उतना अधिक जानकारी एकत्र करना चाहता हूं।

संपादित करें: गियरमैन का उपयोग करने का एक बड़ा कारण यह गैर-अवरुद्ध संरचना की वजह से नहीं है, बल्कि इसकी तीव्र गति के कारण है।

+0

_Can gearman हमारे सभी अपेक्षित लोड को संभालता है? _ यह एक लंबा-एक-टुकड़ा-स्ट्रिंग प्रश्न है, और यह निर्भर करता है कि आपके पास कितने वर्कर्स सर्वर उपलब्ध हैं, आपकी कतार कितनी तेज़ी से भरती है, और कैसे प्रत्येक आइटम को संसाधित करने के लिए बहुत प्रयास किया जाता है। यदि आप एक सर्वर पर प्रति हजार कई सेकंड कर सकते हैं, और आप उन्हें उच्च निरंतर दर पर कतार नहीं दे रहे हैं, तो मुझे लगता है कि आप ठीक होंगे। गियरमैन को ब्लॉकिंग और गैर-अवरुद्ध मोड बीटीडब्ल्यू में इस्तेमाल किया जा सकता है, और निश्चित रूप से जाने के लायक है। – halfer

उत्तर

4

मैं केवल Gearman पर आपके सवालों से बात कर सकते हैं:

संभालने हम स्मृति हमारे उम्मीद लोड के सभी संभाल gearman कर सकते हैं (संभावित आसपास 3000+ समय में नौकरियों पंक्तिबद्ध, कई हजार प्रति कार्रवाई की जा रही के साथ दूसरा)?

लघु: हाँ

लांग: सब कुछ अपनी सीमा होती है। यदि आपके नौकरी पेलोड असाधारण रूप से बड़े हैं तो आप मुद्दों में भाग ले सकते हैं। गियरमैन अपनी कतार स्मृति में संग्रहीत करता है .. इसलिए यदि आपके पेलोड गियरमैन को उपलब्ध स्मृति की मात्रा से अधिक है तो आप समस्याओं में भाग लेंगे।

क्या गियरमैन इस तरह से कॉन्फ़िगर किया जा सकता है कि विफलता का कोई भी बिंदु नहीं है?

गियरमैन के पास एक स्थिरता स्टोर के रूप में MySQL का उपयोग करने के लिए एक प्लगइन/एक्सटेंशन/घटक उपलब्ध है। इस तरह, अगर गियरमैन या मशीन स्वयं नीचे जाती है तो आप उसे वापस ले जा सकते हैं जहां यह छोड़ा गया था। एकाधिक कर्मचारी-सर्वर अन्य श्रमिकों के नीचे जाने पर चीजों को जारी रखने में मदद कर सकते हैं।

+0

धन्यवाद। यह गियरमैन के बारे में मेरे कुछ महत्वपूर्ण बिंदुओं का उत्तर देता है। मैं इन चीजों का परीक्षण यह देखने के लिए करूंगा कि यह हमारे कार्यान्वयन के लिए सही तरीके से काम करता है या नहीं। – user396404

1

नोड में cluster module है जो एन प्रक्रियाओं के विरुद्ध मूल भार संतुलन कर सकता है। आपको यह उपयोगी लगेगा।

नोडजेस-भूमि में एक आम वास्तुकला है कि आपके नोड्स http से बात करें और फिर http proxy या service registry जैसे लोड संतुलन के कुछ तरीके का उपयोग करें। मुझे यकीन है कि यह कहीं और कम है। मुझे गियरमैन के बारे में पर्याप्त जानकारी नहीं है कि यह "पर्याप्त अच्छा" होगा, लेकिन यदि यह सामान्य विचार है तो मुझे लगता है कि यह ठीक होगा। कम से कम, अन्य लोगों को यह सुनने में दिलचस्पी होगी कि यह कैसे चला गया मुझे यकीन है!

संपादित करें: याद रखें, संख्या-क्रंचिंग नोड के ईवेंट लूप को अवरुद्ध करेगी! यह कुछ हद तक स्पष्ट है यदि आप इसके बारे में सोचते हैं, लेकिन निश्चित रूप से कुछ ध्यान में रखना है।

+0

धन्यवाद। यह node.js. के लिए व्यवहार्य लोड संतुलन विकल्प की तरह लगता है। मुझे यह देखना होगा कि यह भार को कैसे वितरित करता है, और किस प्रकार की अनावश्यकता और दृढ़ता उपलब्ध है। – user396404

+0

इसके अलावा, मुझे अपनी पोस्ट में स्पष्ट होना चाहिए था कि घटना अवरोधन मेरी मुख्य चिंता नहीं है क्योंकि मैं मुख्य रूप से इसकी गति के लिए node.js का उपयोग कर रहा हूं। मैंने इसे और स्पष्ट करने के लिए अपनी मूल पोस्ट अपडेट की है। – user396404

+0

हालांकि यह आपकी साइट के लिए बहुत शुरुआती चरण है, आप इस नोड के इस पोर्ट में PHP में रुचि ले सकते हैं: http://nodephp.org –