2012-01-12 11 views
8

मैं छोटे बदलावों को प्रसारित करने के लिए एक लंबे मतदान वाले ऐप को डिजाइन कर रहा हूं, संभवतः, बड़ी संख्या में उपयोगकर्ताओं को। ऐप एक मानक मानक सीएमएस चलाने वाली वेबसाइट के साथ मिल जाएगा। वे दोनों एक सर्वर पर चल रहे होंगे, और साथ ही डेटाबेस से शुरू होगा।लंबे मतदान विकल्प: Nginx, PHP, Node.js

मैं एक लैंप पर्यावरण से बहुत अधिक आ गया हूं और मैं निश्चित रूप से एक डेवलपर हूं और एक sys-admin नहीं हूं। उसने कहा कि मैं कुछ नई चीजों को आजमाने से डरता नहीं हूं।

मैंने अपने विकल्पों का शोध करने के लिए दिन बिताया है और मुझे उम्मीद है कि लोग कुछ प्रश्नों का उत्तर दे सकते हैं और मुझे कुछ सिफारिशें दे सकते हैं।

मैं इन के लिए नीचे संकुचित है:

A. Apache and php for the website, Node.js for the app 
    B. Nginx and php for both the website and app 
    C. Nginx and php for website, Nginx and Node.js for the app 

तो सवाल:

  1. कैसे Nginx का क्या करता है PHP की गैर-बहु threadingness;)। क्या PHP लंबे समय तक मतदान के लिए उतना ही बाधा साबित होगा?
  2. मैंने सुना है कि मैंने सुझाव दिया है कि मैं अपाचे और नोड.जेएस के सामने एक रिवर्स प्रॉक्सी के रूप में nginx का उपयोग करता हूं, क्या यह सिर्फ nginx से बेहतर समाधान है? यदि हां, तो क्यों?
  3. आपने किस विकल्प का उपयोग किया/सिफारिश की है?

ध्यान रखें कि सेट-अप की आसानी एक कारक हो सकती है, मैं अपाचे के साथ काफी सहज हूं लेकिन मैंने केवल नोड के साथ खेला है और मैंने कभी भी निग्नक्स स्थापित नहीं किया है।

अगर किसी को उनकी ज़रूरत है तो मैं खुशी से स्पष्टीकरण प्रदान करूंगा।

+0

यह http: //webmasters.stackexchange.com/... – DaveRandom

+0

के लिए एक प्रश्न हो सकता है ... मुझे लगता है कि यह अधिक विन्यास आधारित है। – thelastshadow

उत्तर

1

मैं, व्यक्तिगत रूप से केवल नोड.जेएस का उपयोग करता हूं। एक लंबे मतदान के बजाय, आप सभी उपलब्ध ग्राहकों को नई जानकारी धक्का दे सकते हैं। रीयलटाइम सामग्री वितरित करते समय नोड.जेएस बेहद तेज़ है और एक पैकेज में सबकुछ करने में सक्षम है। साथ ही, क्लाइंट साइड और सर्वर पक्ष जावास्क्रिप्ट में लिखा गया है जिससे इसे विकसित करना, डीबग करना और वितरित करना आसान हो जाता है। एक डेवलपर के रूप में आप इसका लाभ देख सकते हैं।

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

एक साधारण चैट एप्लिकेशन

Server.js

var express = require('express') 
    , app = express.createServer() 
    , nowjs = require('now') 

/* configure express server */ 
//... 

app.get('/', function(req, res){ 
    res.render('chat') 
}) 

var everyone = nowjs.initialize(app) 

// Server scoped function called by single client 
everyone.now.distributeMsg = function(msg){ 
    // Client scoped function of every connected client 
    this.now.receiveMsg(msg) 
} 

app.listen(3000) 

chat.jade

!!! 
html 
    head 
    script(type='text/javascript', src='/nowjs/now.js') 
    body 
    #log 
    input#entry(type='text') 
    input#submit(type='button') 

script 
    $(function(){ 
    $('#submit').click(function(){ 
     now.distributeMsg($('#entry').val()) 
    }) 

    now.receiveMsg = function(msg){ 
     $('#log').append('<div>' + msg + '</div>') 
    } 
    }) 

हाँ, सचमुच यह इतना आसान है और कई और अधिक नहीं ले जाएगा इसे पूर्ण फीचर्ड चैट एप्लिकेशन में बदलने के लिए कोड की रेखाएं। वास्तव में आपका मार्कअप और सीएसएस आवेदन कोड की तुलना में अधिक लाइनें लेगा। गजब का!

+1

मुझे नोड पसंद है और निश्चित रूप से मैं इसमें ऐप बनाने में खुश हूं। – thelastshadow

3

मैं विकल्प सी का प्रयोग करेंगे: और एक विकल्प डी सुझाव है:

विकल्प डी:

  • keepalived लोड संतुलन के लिए HAProxy (LB) स्थिर और PHP स्क्रिप्ट के लिए
  • Nginx, के साथ प्रयोग पीएचपी-एफ पी एम, एपीसी और Redis कैशिंग के लिए
  • Node.js (और अन्य नोड मॉड्यूल) गतिशील के लिए, वास्तविक समय सामग्री

हम वर्तमान में एलएएमपी पृष्ठभूमि से आने वाले विकल्प डी के पहले 2 हिस्सों का उपयोग करते हैं, और वर्तमान में हमारे कुछ (सिस्टम टैक्सिंग) रीयलटाइम ऐप्स की सेवा के लिए नोड.जेएस को कार्यान्वित कर रहे हैं। HAPROxy ठीक वही करता है: Nginx इसे करने के बजाय, मेरे सभी बैकएंड सर्वर पर यातायात प्रॉक्सी करता है। इसके कारण, हमारे पास कई बैकएंड HTTP/TCP/अन्य सर्वर हैं और हमें इन सर्वरों के लिए अनावश्यक और स्वचालित विफलता की आवश्यकता है। एलबी लागू करने के लिए आसान है और अच्छी तरह से काम करता है।

अभी तक, उत्कृष्ट परिणाम। व्यक्तिगत रूप से, नोड्स सीखने की अवस्था दस्तावेज की कमी के कारण अब तक कठिन रही है, लेकिन वहां एक बहुत ही गतिशील समुदाय है।

उम्मीद है कि इससे मदद मिलती है।