गतिशील रूप से क्रम में करने के लिए कंटेनर Zend_Navigation पृष्ठ जोड़ें

द्वारा स्टीवन लॉयड Watkin , गुरुवार 7 जनवरी 2010 22:50

, के बारे में Zend_Navigation पोस्ट में निरंतरता पर मेरी एक अंतिम / कार्रवाई नियंत्रक कस्टम मार्ग अनुरोधों के लिए sitemap.xml , इस पोस्ट निष्पादन के बारे में है / script क्रम Zend_Navigation कंटेनर में एक dymnamically जोड़ने पृष्ठों के लिए.

अपने सभी अच्छी तरह से और या ini में एक अच्छा पृष्ठों को निर्दिष्ट अपने xml फ़ाइल लेकिन स्थल पर कुछ बिंदु पर अपने आप में पृष्ठों को बदलने के लिए हो रहा है कि आप निशान, मेनू चाहते हैं के रूप में भाग साइटमैप, ब्रेडक्रम्ब में अपने शामिल करने के लिए या किया जाना है. इसलिए कि हम क्या करने के लिए है हमारे क्रम में Zend_Navigation कंटेनर को पृष्ठ जोड़ने की जरूरत है. इस के लिए उदाहरण समाचार आइटम, ब्लॉग पोस्ट, या पृष्ठ टिप्पणियां, आदि को जोड़ने में किया जाएगा

'»पढ़ना जोड़ने पर कंटेनर Zend_Navigation पृष्ठों को गतिशील' क्रम जारी रखें

/ कार्रवाई नियंत्रक कस्टम मार्ग अनुरोधों के लिए sitemap.xml

द्वारा स्टीवन लॉयड Watkin , बुधवार 6 जनवरी 2010 12:13

प्रत्यक्ष के लिए अनुरोध करने के लिए आदेश में / sitemap.xml आपके लिए एक कार्रवाई में कस्टम और नियंत्रक Zend फ्रेमवर्क ) आवेदन navigation.ini मैं का उपयोग जैसे बस जोड़ निम्नलिखित में अपने application.ini या वैकल्पिक फ़ाइल config (:

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = सूचकांक
 resources.router.routes.sitemap.defaults.action = साइटमैप

outputting के लिए उदाहरण कोड उचित नियंत्रक में एक कार्रवाई बनाने के द्वारा देखा जा सकता है (मेरे जैसे साइटमैप अनुक्रमणिका नियंत्रक, कार्रवाई साइटमैप में है):

 < php
 वर्ग IndexController
     Zend_Controller_Action फैली
 {
     ** /
      Renders एक Zend_Navigation पर सेटअप आधारित साइटमैप *
      * /
     सार्वजनिक समारोह sitemapAction ()
     {
    	 इस गूंज> देखें> () नेविगेशन $ -> साइटमैप ();
    	 इस-> दृश्य-> लेआउट ($) -> disableLayout ();
    	 $ इस-> _helper> viewRenderer> setNoRender (सच);
     }
 }

साइटमैप उत्पन्न कर सकते हैं जल्दी और आसानी से उपयोग कर सकता Zend_Navigation , एक महान ट्यूटोरियल जल्दी (और आमतौर पर बहुत ट्यूटोरियल उपयोगी फ्रेमवर्क के लिए Zend है) Zend निर्मोक - गतिशील breadcrumbs बनाने के लिए एक मेनू एक साइटमैप और .

Zend फ्रेमवर्क प्रति मॉड्यूल आधारित सेटिंग्स

द्वारा स्टीवन लॉयड Watkin , शुक्रवार 1 जनवरी 2010 22:40

मैं कम विन्यास की आवश्यकता है जो पद दिया बनाया एक इस follow-up करने के लिए, कृपया देखें मॉड्यूल आधारित लेआउट - Zend फ्रेमवर्क .

जब उपयोग Zend फ्रेमवर्क स्पष्ट साथ मॉड्यूल, इसके कि यदि आप विभिन्न चल रहे हैं (उप) साइटों आवेदन बंद ही आप वही करना चाहती जरूरी नहीं कि लेआउट लिपियों भाग के लिए प्रत्येक. मैं निम्नलिखित साइट संरचना के साथ जाने का फैसला किया:

  / अनुप्रयोग
     / नियंत्रकों
         ...
     / मॉडल
     / मॉड्यूल
         डिफाल्ट
             / नियंत्रकों
             / लेआउट
                 / लिपियों
             / विचारों
                 / लिपियों
         / AnotherModule
             ...
     / लिपियों

समस्या को स्थापित किया गया था एक प्रति मॉड्यूल के आधार पर लेआउट लिपियों. जवाब एक कार्य हेल्पर का उपयोग कर के माध्यम से आया था. एक प्रति मॉड्यूल के आधार पर लेआउट स्थापना तीन कदम शामिल है:

  1. Application.ini (या इसी तरह विन्यास सेटअप):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / व्यवस्थापक / लेआउट / लिपियों"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ लिपियों / / लेआउट डिफ़ॉल्ट / मॉड्यूल"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ लिपियों / / लेआउट सदस्य / मॉड्यूल"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ लिपियों / / लेआउट सहबद्ध / मॉड्यूल" 
  2. अपनी लड़ाई हेल्पर बनाएँ:
      <? Php
     ** /
      * प्रति एक मॉड्यूल के आधार पर लेआउट पथ सेट
      *
      * @ लेखक लॉयड Watkin <lloyd@evilprofessor.co.uk>
      2010/01/01 @ के बाद *
      * /
     वर्ग Pro_Controller_Action_Helper_SetLayoutPath
         Zend_Controller_Action_Helper_Abstract फैली
     {
         ** /
          * सेट लेआउट पर आधारित पथ का मॉड्यूल
          * /
         सार्वजनिक समारोह preDispatch ()
         {
        	 मॉड्यूल $ = इस-> ($) getRequest -> getModuleName ();
    
    	     अगर ($ = इस bootstrap-> ($ getActionController)
    	                        -> GetInvokeArg ('बूटस्ट्रैप')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         अगर (isset ($ config [$ मॉड्यूल] ['संसाधनों'] ['लेआउट'] ['layoutPath'])) {
    	             layoutPath $ =
    	                  विन्यास [$ मॉड्यूल] ['संसाधनों'] ['लेआउट'] ['layoutPath'] $;
    	             इस-> $ getActionController ()
    	                  -> GetHelper ('लेआउट')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. और अंत में कार्रवाई सहायक बूटस्ट्रैप:
      ...
         ** /
          * एक प्रति मॉड्यूल के आधार पर लेआउट लिपियों समूह
          * /
         संरक्षित समारोह _initLayoutHelper ()
    	 {
    	     इस-> $ बूटस्ट्रैप ('frontController');
    	     $ लेआउट = Zend_Controller_Action_HelperBroker: addHelper (
    	         नई Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

सिद्धांत: Datetime डिफ़ॉल्ट अब ()

द्वारा स्टीवन लॉयड Watkin , बुधवार 30 दिसम्बर 2009 18:30

मैं नए के लिए एक स्कीमा डाटाबेस की स्थापना की है एक के साथ संघर्ष कर रहा Zend फ्रेमवर्क परियोजना. मैं कर रहा हूँ उपयोग प्रयोग करने की कोशिश करने के लिए सिद्धांत मॉडल डेटाबेस ORM के लिए मेरे. मैं करने के लिए स्कीमा इतना तय है कि यह मुझे एक `datetime 'स्तंभ के लिए कोई डिफ़ॉल्ट दिनांक और समय सेट करने के लिए, जैसे जब कोई नया संदेश मैं वर्तमान टाइमस्टैम्प प्राप्त जोड़ने की अनुमति की जरूरत है. काफी खोज और प्रयोग करने के बाद मैं इस समस्या का समाधान तो मैं इसे साझा कर रहा हूँ मिल गया.

में अपने स्कीमा YAML फ़ाइल केवल निम्न कार्य करें:

 संदेश:
   actAs:
     Timestampable:
       निर्मित:
         नाम: created_at
         प्रकार: टाइमस्टैम्प
         प्रारूप: Ymd एच: i: s
       अद्यतन:
         नाम: last_updated
         प्रकार: टाइमस्टैम्प
         प्रारूप: Ymd एच: i: s
   कॉलम:
     आईडी:
       प्रकार: पूर्णांक
       प्राथमिक: सच
       autoincrement: सच
     नाम: स्ट्रिंग (255)
     ईमेल: स्ट्रिंग (300)
     संदेश: स्ट्रिंग (2000)

दूसरी ओर, यदि आप एक `updated_at` स्तंभ नहीं चाहता कि तुम निम्नलिखित का उपयोग कर सकते हैं:

 संदेश:
   actAs:
     Timestampable:
       निर्मित:
         नाम: created_at
         प्रकार: टाइमस्टैम्प
         प्रारूप: Ymd एच: i: s
       अद्यतन:
         विकलांग: सच
   कॉलम:
     आईडी:
       प्रकार: पूर्णांक
       प्राथमिक: सच
       autoincrement: सच
     नाम: स्ट्रिंग (255)
     ईमेल: स्ट्रिंग (300)
     संदेश: स्ट्रिंग (2000)

- प्रेक्षक पैटर्न पैटर्न PHP डिजाइन

द्वारा स्टीवन लॉयड Watkin , मंगलवार 29 दिसम्बर 2009 22:02

मैं पढ़ रहा गया सिर पहले डिजाइन पैटर्न हाल ही में करने के लिए और PHP उदाहरण के रूप में अपने स्वयं के लाभ के लिए पैटर्न में से कुछ लिखने का फैसला किया है. पहले एक है कि मैं कोड है करने का निर्णय लिया है ऑब्जर्वर पैटर्न . प्रेक्षक पैटर्न की औपचारिक परिभाषा है:

प्रेक्षक पैटर्न (अतुल्यकालिक के एक सबसेट प्रकाशित / पैटर्न सदस्यता ) एक है सॉफ्टवेयर डिजाइन पैटर्न जिसमें एक वस्तु , विषय बुलाया, पर्यवेक्षकों, कहा आश्रितों का कहना है की एक सूची इसकी, और, उन्हें सूचित राज्य स्वचालित रूप से किसी भी परिवर्तन को फोन करके आमतौर पर एक अपने की विधियों . यह मुख्य रूप से वितरित की घटना संभाल प्रणाली को लागू किया जाता है.

के रूप में बन प्रणालियों और अधिक शिथिल यकीन है कि जब एक घटना सारे सिस्टम की आवश्यकता है कि इन अद्यतनों का ज्ञान सूचित कर रहे हैं होता है कि बनाने युग्मित. उदाहरण के लिए, एक ब्लॉग पोस्ट, एक के बाद सहेजने के बाद हम एक खोज इंजन (Lucene जैसे) अद्यतन करने की आवश्यकता है, हमारे साइटमैप, टैग, ईमेल सदस्यता उपयोगकर्ताओं पर्यवेक्षक पैटर्न, आदि के अद्यतन कर सकते हैं डेवलपर्स के संपादन के बिना अतिरिक्त श्रोताओं उनके प्रत्यक्ष वस्तु को जोड़ने के लिए अनुमति देता है . पर्यवेक्षकों का इंजेक्शन लगाने के द्वारा एक विषय (यानी ब्लॉग पोस्ट संपादन प्रणाली) में (एक खोज इंजन अद्यतन पर्यवेक्षक, एक साइटमैप जनरेटर, आदि) अर्थात् हम इसे किसी भी बदलाव के बिना सभी आवश्यक अद्यतनों प्रदर्शन करने की अनुमति कर सकते हैं.

»'- PHP प्रेक्षक पैटर्न पढ़ने डिजाइन पैटर्न' जारी

कार्यालय ग्रिड कम्प्यूटिंग वातावरण आभासी का उपयोग कर - भाग 4

द्वारा स्टीवन लॉयड Watkin , शुक्रवार 4 दिसम्बर 2009 11:59

परिचय

मैं दिन हर काम में एक कंपनी के डेटा हम कहाँ के रिकॉर्ड के लाखों नौकरियों प्रसंस्करण बैच चलाने के कई और मैं गया है और प्रत्येक है सोच के बारे में हाल ही में सभी के चारों ओर बैठ मशीनों है कि हर घंटे के लिए कई दिन कुछ नहीं कर रहे हैं. हमारे सिस्टम होगा यह नहीं हो सकता है अच्छा अगर हम सत्ता का उपयोग सिलेंडर प्रसंस्करण के लिए उन मशीनों? लेख के इस सेट में मैं कार्यालय एक हूँ रोजगार के संभावित लाभ को देखने जा करने के लिए ग्रिड वातावरण का उपयोग virtualised.

में 3 हिस्सा हम मशीन बनाई हमारे आभासी प्रसंस्करण और श्रमिकों की स्थापना समय विंडोज़-मशीनों के लिए निष्क्रिय हो जाते हैं.

नवीनतम कोड रनिंग

बदल जाएगा अनिवार्य रूप से बनाने के बाद अपने कार्यकर्ताओं तर्क व्यापार, कीड़े का उपयोग किया जाएगा पाया, तेजी से और अधिक कुशल उत्पादन किया जाएगा कोड इस प्रकार छोड़कर अपने कार्यकर्ताओं शनि के चारों ओर डाटा प्रोसेसिंग पुराने बदबूदार कोड . तो कैसे हम यह सुनिश्चित करना है कि हम हमेशा हमारे प्रसंस्करण लिपियों के नवीनतम और सबसे बड़ी संस्करण का उपयोग कर रहे हैं?

वहाँ कुछ बहुत आसान सरल तरीके हम ऐसा कर सकती हैं, चाल, हालांकि, इस को प्राप्त करने में प्रसंस्करण शक्ति और नेटवर्क यातायात को कम करना है. आओ हम समाधान का सबसे सरल के साथ शुरू करने और इसे पुनरावृत्तियों के एक जोड़े के साथ धीरे धीरे सुधार होगा.

पहली विधि के लिए बस अपने काम पर नियंत्रण सर्वर से कनेक्ट (साम्बा, FTP, या इसी तरह के माध्यम से) और नीचे कोड के नवीनतम संस्करण पुल होगा. नहीं बहुत कुशल है, लेकिन यह काम करेंगे. देता है कि कुछ हद तक, कैसे बनाने और के बारे में एक स्क्रिप्ट का उपयोग rsync पर सुधार है कि प्रत्येक स्थान पर समय? वैकल्पिक रूप से क्या (हमारे कोड चलाने पर हर अद्यतन के बारे में संसाधन लगाने के हमारे नवीनतम लिपि में तोड़फोड़ की जाँच अभी तो शुरू में बाहर कोड svn अद्यतन )?

अंत में हम एक bash (क्रॉन से हर 10 मिनट) कहा जाता है जो स्क्रिप्ट के रूप में इस रूप में आसान लगता है के साथ खत्म हो सकता है:

  #! / Bin / श्री
 grep grep | पी एस-अगर कुल्हाड़ी | grep v php > / dev / बातिल
 फिर
     गूंज "नौकरी वर्तमान में संसाधित कर रहा है, बाहर निकलें"
 और
     गूंज "नौकरी नहीं चल रहा है, अब शुरू"
     सीडी पथ / / / कॉपी / काम करने के लिए
     अद्यतन svn
     php yourJobProcessingScript.php
 फाई 

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

मेरे प्रदर्शन सेटअप में, मैं बिल्कुल के रूप में ऊपर था. तोड़फोड़ मेरा काम प्रसंस्करण सर्वर पर स्थापित किया गया था और मैं बस एक 'कामगार' शाखा से नवीनतम कोड खींचा 'svn अद्यतन का उपयोग कर. मैं भी अपने प्रसंस्करण स्क्रिप्ट जो परिणाम देते हैं के हिस्से के रूप डेटाबेस को लौट रहा था के लिए एक संस्करण संख्या टैग गयी. इस तरह से मैं देख सकता था कि मेरे कोड हर बार जब मैं कार्यकर्ता शाखा यानी कि मैं निश्चित रूप से नवीनतम प्रसंस्करण स्क्रिप्ट चला रहा था में अपने ट्रंक नकल अद्यतन किया जा रहा था.

नवीनतम आंकड़ों का प्रयोग

यदि आपकी नौकरी प्रसंस्करण डेटा स्रोतों का उपयोग करता है तो कुछ बिंदु ये भी अद्यतन किया जा रहे हैं पर. जब तक आप एक बहुत ही निराला आधार पर आप के लिए यातायात के साथ अपने नेटवर्क के रूप में जल्दी के रूप में अपने कर्मचारियों एक ठहराव के लिए सब कुछ लाने के चलने आरंभ बाढ़ जा रहे हैं पर आपके डेटा स्रोत कहते हैं. मैं अपने समाधान के लिए तय किया कि मैं अपने डेटा स्रोतों मेरा वी एम एस के साथ घूमने करना चाहते हैं.

पकड़ तुम वहाँ हो घोड़ों विशाल! यदि मेरे डेटा स्रोत हैं? वैसे यह वास्तव में बात कर रहे हैं हम डेटा एक मामला है बहुत से कैसे? यह सर्वर प्रसंस्करण सकता है अतिरिक्त एक हो खरीद में प्रत्येक मशीन की तुलना में अधिक लागत प्रभावी ड्राइव करने के लिए मुश्किल स्थापित करने के अतिरिक्त बड़ा है. इस बजट सवाल का है और व्यापार के लिए है अप करने के लिए तय. यह हो सकता है कि आपके डेटा स्रोत मशीनें हैं इतनी बड़ी है कि अपनी बस कार्यकर्ता अपने डेटा में की राशि है कि unfeasible रखने के लिए. मामले में है कि होगा क्या तुम? लेकिन अच्छी तरह से हम डेटा स्थानीय एक सका देखो बुला सर्वर, इस नेटवर्क के साथ मुद्दों कारण हो सकता है. मामले में इस तरह के रूप में इस प्रणाली ग्रिड एक वातावरण कार्यालय अपने सकती में शामिल हो जाते हैं अवास्तविक है. यह अनुरोध कर सकते हैं भी हो सकता है कि स्रोत डेटा में आप देख सकते हैं थ्रॉटलिंग या वैकल्पिक चलाने के बीच ही बुला उदाहरण रणनीतियों के लिए अपने कार्यकर्ताओं 08:00 और 06:00 एक रात और /.

आगे बढ़ते देता 100Gb डेटा के लिए हमारे डेटा स्रोतों राशि कहते हैं. हाँ है कि काफी के लिए चारों ओर एक अद्यतन पर नेटवर्क चाल के डेटा का एक सा है ठीक है. हम यह कैसे सुनिश्चित हैं कि हम इस मामले में डेटा का नवीनतम प्रतिलिपि होता है? Rsync एक संभावना है, लेकिन व्यक्तिगत रूप से मैं अपनी नौकरी प्रसंस्करण सर्वर पर अपनी नवीनतम डेटा स्रोत चल रहा है और इस सेटिंग के ऊपर प्रतिकृति में एक मास्टर के रूप में (एक अच्छा समय बिन प्रवेश के साथ) जाने के लिए रास्ता हो सकता है द्वारा लगता है कि:

प्रतिकृति अपने कार्यकर्ताओं में से प्रत्येक अपने डेटा स्रोतों के लिए एक काम पर नियंत्रण सर्वर अद्यतन करने के लिए दास के रूप में स्थापित करके नीचे अच्छी तरह से नेटवर्क गतिविधि में एक बड़ी वृद्धि (है कि जब तक आप एक बहुत बड़ा डेटा अद्यतन करते हैं और अपने सभी कार्यकर्ताओं में लात बिना होगी मिलने अपने कार्यकर्ताओं को एक बार में). आप नहीं होगा लंबे समय से एक को रोकते हैं, डेटाबेस अद्यतन, के रूप में काम करने से पहले प्रत्येक उस पर यह है फायदे rsync में mysql कार्यकर्ता अपने डेमॉन पर जारी करेंगे अपनी लगातार अद्यतन डेटा जबकि प्रसंस्करण.

यह कैसे मैं अपने प्रदर्शन सर्वर सेट करें. प्रतिकृति को स्थापित मैं (mySQL साइट का पालन गाइड पर प्रतिकृति की स्थापना ऊपर ) और मिनट के भीतर 20 मैं डाटासेट था मेरे सर्वर नियंत्रण inital कार्यकर्ता नकल नौकरी. प्रत्येक अतिरिक्त कर्मचारी के लिए प्रतिकृति सेटिंग्स और प्रक्रिया हर बार जब वी एम नकल की थी काम किया.

सारांश

लेख के इस भाग में हम पर ध्यान दिया है कितना आसान और पीड़ारहित यह using rsync या subverion (SVN) के द्वारा अपने संसाधन तिथि करने के लिए कोड रखने के लिए काम करते हैं और उसी time. हम भी चर्चा में नेटवर्क यातायात को कम करना है कैसे अपने डेटा स्रोत में जानकारी के लिए यह अनुमति देने के नीचे अपने कार्यकर्ताओं से प्रत्येक के लिए मिलने के लिए द्वारा करने की तारीख रखना. इस तरह हम यह सुनिश्चित करना कि हम व्यापार और हमारे कार्यालय ग्रिड प्रणाली में तर्क जानकारी के साथ रखने के क्षेत्र. उसमें निश्चित रूप से अनगिनत विकल्प होगा इन कार्यों का प्रदर्शन करने के लिए, यहाँ थे, लेकिन दो सरल उदाहरण को दिखाने के लिए कितना आसान है एक समाधान के लिए आ रहा है.

अगली बार

श्रृंखला के इस अंतिम भाग में, जिसे उपयुक्त नाम भाग 5 , हम के लिए की तैनाती पर चर्चा करेंगे इस प्रणाली. मैं संक्षेप में प्रस्तुत करेंगे क्या सीखा है और मैं बनाने में कामयाब रहे है क्या.

कार्यालय ग्रिड कम्प्यूटिंग वातावरण आभासी प्रयोग - भाग 3

द्वारा स्टीवन लॉयड Watkin , शुक्रवार 4 दिसम्बर 2009 23:37

परिचय

मैं दिन हर काम में एक कंपनी के डेटा हम कहाँ के रिकॉर्ड के लाखों नौकरियों प्रसंस्करण बैच चलाने के कई और मैं गया है और प्रत्येक है सोच के बारे में हाल ही में सभी के चारों ओर बैठ मशीनों है कि हर घंटे के लिए कई दिन कुछ नहीं कर रहे हैं. हमारे सिस्टम होगा यह नहीं हो सकता है अच्छा अगर हम सत्ता का उपयोग सिलेंडर प्रसंस्करण के लिए उन मशीनों? लेख के इस सेट में मैं कार्यालय एक हूँ रोजगार के संभावित लाभ को देखने जा करने के लिए ग्रिड वातावरण का उपयोग virtualised.

में भाग 2 हम चलेंगे देखा नौकरियों सर्वर एक है, और असफल कैसे बिना संसाधित है चाहिए नौकरियों काम किया है कि प्रत्येक यह सुनिश्चित करने कॉन्फ़िगर whilst में आदेश प्राप्त करने के लिए संसाधन की राशि सबसे बड़ी.

या लंगड़ा सर्वर - अपने कार्यकर्ता की स्थापना

इस प्रक्रिया में अगला कदम करने के लिए अपने आभासी कार्यकर्ताओं को तैयार है. इस लिए मैं VirtualBox का उपयोग कर CentOS की स्थापना का उपयोग करने जा रहा हूँ. मैं स्थापित करने के लिए कर रहा हूँ जा रहा माईसीक्वल और PHP के रूप में सर्वर पर, ज्ञात भी एक लंगड़ा (ली nux, ySQL मीटर, पी एच पी) Server (मैं बना दिया है सकते हैं कि नाम तक).

  • अपनी खिड़कियों की मशीन (लिंक का अनुसरण करें) पर स्थापित करें VirtualBox
  • डाउनलोड करने और एक बनाया आभासी मशीन के भीतर CentOS (वर्तमान संस्करण 5.3) स्थापित

वहाँ बात है कोई मुझे इस के लिए जा रहा वहाँ है: के बाहर ट्यूटोरियल की महान 1,000 शायद वहाँ (ठीक है यहाँ, एक बनाना और VirtualBox आभासी मशीन के नीचे CentOS Managing ). महत्वपूर्ण बात नोट करने के लिए मुझे लगता है कि मैं GridMachine बुलाया मेरी आभासी मशीन.

जहाँ तक virtualisation ग्राहक और ऑपरेटिंग सिस्टम के अपने विकल्पों के चलते वहाँ हर चुनाव के लिए कोई बड़ी सम्मोहक कारण है. VirtualBox कुछ मैं अपने घर मशीन पर प्रयोग किया जाता है और तीन प्रमुख ऑपरेटिंग सिस्टम के द्वारा समर्थित है. मैं अपने एक अच्छा स्थिर OS के रूप में चुना CentOS और मैं इसे अपने स्वयं के वेब सर्वर पर उपयोग करें. मैं काम उपकरण के लिए सही आस्तिक में महान हूँ एक (हालांकि मैं आवेदन कर रहा हूँ मानसिकता आसान के लिए आप और तेज यहाँ का उपयोग '), इसलिए यदि ऑपरेटिंग सिस्टम एक्स तेज चलता है अपने कोड और अधिक कुशलतापूर्वक के बजाय का उपयोग करें कि:)

महत्वपूर्ण बात यह सुनिश्चित करें कि आपके VM DHCP का उपयोग करता है, एक नए आभासी मशीन के लिए अन्यथा अलग से विन्यस्त किया जा जो कुछ हम want.By DHCP का उपयोग नहीं कर क्या हमें नेटवर्क सेटिंग कार्यकर्ता मशीनों के लिए व्यक्तिगत रूप से कॉन्फ़िगर की जरूरत नहीं है की आवश्यकता होगी, DHCP हाथ में कर देगा आप के लिए आईपी पता. इसलिए आप कार्यालय के बारे में हर एक की स्थापना के बारे में चिंता किए बिना अपने आभासी मशीन (इस scalability में सुधार और कार्यकर्ता प्रशासन कम कर देता है) की नकल कर सकते हैं.

प्रक्रिया आप को प्राप्त करने का लक्ष्य रखना चाहिए के लिए एक नया भौतिक मशीन प्राप्त करने, VirtualBox स्थापित है, और फिर बहुत ज्यादा बहुत कुछ बिना आभासी छवि को तैनात किया जाएगा. यह सेटअप करने के लिए बुद्धिमान हो सकता है एक अलग subnet इतनी है कि आप कम से कम देखने के लिए कैसे कई मशीनों चल रहा हो सकता है पर अपने सभी कार्यकर्ता. तुम भी एक लंबे पट्टे या DHCP पट्टे असीमित पर अपने मशीन स्थापित की आवश्यकता होगी.

कार्यकर्ता पर नौकरियां कैसे चलाने के लिए

यह एक दिलचस्प क्षेत्र है और वहाँ कार्यकर्ता पर प्रसंस्करण नौकरियों के लिए कई वैध तरीके हैं. यहाँ मैं सिर्फ दो सबसे स्पष्ट चर्चा करेंगे:

  • सदा स्क्रिप्ट चलाने: एक स्क्रिप्ट, एक खोल स्क्रिप्ट है, या एक PHP स्क्रिप्ट है कार्यकर्ता पर एक बार निष्पादित हो सकता है और एक अनंत लूप के भाग के रूप में चलाता है. मैं स्क्रिप्ट की एक दुर्घटना के रूप में इस विधि छूट है और संभवतः अपने कार्यकर्ताओं को किसी प्रकार का हस्तक्षेप के बिना चलने नहीं रहेगा.
  • क्रॉन आधारित स्क्रिप्ट निष्पादन: हर एक्स मिनट क्रॉन डेमॉन से अपनी स्क्रिप्ट के लिए एक फोन kicks बातें जा पाने के लिए. कुछ जाँच के बिना यह अपने कार्यकर्ता चल स्क्रिप्ट के कई कई प्रतियां ले सकता है.

मेरे निर्णय को क्रॉन जिसमें से हर 10 minutes. मेरा खोल स्क्रिप्ट निम्नलिखित कार्य करता है एक खोल स्क्रिप्ट kicks साथ जाना था:

  1. एक प्रक्रिया सूची के लिए जाओ और 'php' इस grep. यदि नहीं तो जारी पाया.
  2. अपनी नौकरी कोड को बुलाओ, मेरे मामले में यह कुछ PHP आधारित होगी
  3. कार्यकर्ता लिपि अपनी दौड़ पूर्ण
  4. अगले उपयुक्त फोन पर फिर से जाने के लिए तैयार

मेरे bash स्क्रिप्ट निम्नलिखित की तरह कुछ दिखता है:

  #! / Bin / श्री
 grep grep-v | | grep php> / dev / बातिल पी एस कुल्हाड़ी अगर
 फिर
     गूंज "नौकरी वर्तमान में संसाधित कर रहा है, बाहर निकलें"
 और
     गूंज "नौकरी नहीं चल रहा है, अब शुरू"
     php yourJobProcessingScript.php
 फाई 

नोट: गूंज है व्यर्थ कर रहे हैं लगभग पूरी तरह से है, लेकिन उन्हें संपादित कर सकते हैं मदद अगली जो व्यक्ति आता है साथ में करने के लिए और प्रयास करें.

जो निष्कर्ष निकाला कार्यकर्ता आभासी मशीन, त्वरित, आसान, और आसानी से हार्डवेयर के प्रत्येक नए टुकड़ा है कि प्राप्त करने के लिए नकल की स्थापना की. ग्रिड प्रणाली की 'चतुराई' वास्तव में कल्पना ओएस में नहीं है, अपने सभी प्रक्रिया रोजगार, नौकरी विन्यास करने के लिए बनाया कोड के साथ करने के लिए, और यकीन है कि काम चलाता है जब उचित हो (यानी जब मेजबान बेकार है ).

विंडोज स्थापना श्रमिक आरंभीकृत करने के लिए

पहला काम यह पता करने के लिए विंडोज कमांड लाइन से आभासी मशीन चलाने के लिए आवश्यक आदेश काम है. यदि आप डिफ़ॉल्ट स्थान में स्थापित है और आप VirtualBox है कार्यकर्ता है नाम कार्यकर्ता अपने GridMachine अपने ऊपर तो आदेश की आवश्यकता के लिए लोड:

  "C: \ Program Files \ रवि \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

लेकिन एक 'नेतृत्वहीन' राज्य हम प्रयोग करने की आवश्यकता में स्क्रिप्ट चलाने के लिए:

  "C: \ Program Files \ रवि \ VirtualBox \ VBoxHeadless.exe 'startvm GridMachine - vrdp बंद = 

इस GUI के बिना आभासी मशीन शुरू करने और इसे राज्य को बचाने के लिए शान की अनुमति होगी. दूसरा तर्क बंद हो जाती है तो यह RDP, RDP के साथ संघर्ष नहीं करता है विंडोज़ या 3389 देने पर बंदरगाह सुनने के बारे में संदेश आप संवेदनशील. आभासी मशीन मामला नाम है!

अगला, हम खिड़कियों स्थापित करने के लिए बंद हमारे कार्यकर्ता VM लात एक बार मशीन निष्क्रिय कर दिया गया है की आवश्यकता होगी. > सभी कार्यक्रम - -> Accessories -> सिस्टम उपकरण - ऐसा करने के लिए (Windows XP) पर आप शुरू करने के लिए जाने की आवश्यकता होगी नीचे के रूप में> अनुसूचित टास्क:

अनुसूचित कार्यों

पर अगला क्लिक करें 'जोड़ें अनुसूचित टास्क' के बाद से करने के लिए एक कस्टम प्रोग्राम जोड़ें ब्राउज़ करें. आपके VBoxManage स्क्रिप्ट और नेविगेट करने के लिए ठीक क्लिक. (हम एक मिनट में यह परिवर्तन होगा) विकल्प और जारी रखने से किसी के लिए अपने काम अनुसूची. अगले स्क्रीन खिड़कियां लंघन आप से पूछना होगा कि आप कौन इस कार्य को चलाना चाहता हूँ के बाद, मैं या तो 'प्रशासक' या सुझाव चाहते हैं एक नई विशेषाधिकृत उपयोगकर्ता बनाने. याद हम किसी भी बिंदु पर मशीन पर मानक स्टाफ खाता के साथ हस्तक्षेप नहीं करना चाहता. अगली और जाँच इस कार्य के लिए दिखाने के लिए उन्नत विकल्प क्लिक करें.

unticked है छोड़ दिया करने के लिए अंत 'के textbox रन जोड़ हमारे startvm GridMachine' स्ट्रिंग है और यह सुनिश्चित हुआ है जब कि केवल चलाते हैं. अनुसूची कार्य अगले जाएँ और अनुसूची बूंद विकल्प 'जब बेकार', अगले टैब पर जाने से पहले समय की राशि है जो आप मशीन की तरह चाहते हैं के लिए बेकार होने का चयन करने के लिए नीचे बदल जाते हैं.

अंत में जो विकल्प राज्यों कार्य रोकने के लिए अगर यह समय की एक्स राशि में चल रहे untick, लेकिन इस कार्य को रोकने के लिए अगर मशीन नहीं रह गया है निष्क्रिय विकल्प टिक नहीं है.

अनुसूची

बस यही बात है तो विंडोज़ मेजबान स्थापना के लिए!

सारांश

इस भाग में हम एक आभासी के लिए एक कार्यकर्ता के रूप में कार्य मशीन, साथ ही जिस तरह हम कहते हैं और हमारा काम प्रसंस्करण लिपियों निष्पादित (अपने आप को एक PHP स्क्रिप्ट के लिए) निर्धारित किया है. यहाँ से हम कैसे खिड़कियों की प्रतियां हमारे सेट अप करने के लिए कोई मुखिया मोड में आभासी मशीन शुरू जब कंप्यूटर निष्क्रिय हो जाता है, और अपने राज्य को बचाने जब उपयोगकर्ता मशीन का उपयोग शुरू को देखो. उम्मीद है आप इस बिंदु पर देख रहे हैं कैसे आसान यह एक ऐसी प्रणाली स्थापित कर रहे हैं और कुछ प्रयोग अपने आप को जा रहा प्राप्त खुजली है!

अगली बार

में भाग 4 हम उपकरण का उपयोग करने में लग रही हो जाएगा सुनिश्चित करें कि आप तर्क और कोड और एक रहे हैं चल नवीनतम संस्करण डेटा स्रोतों ताकि सूचना प्राप्त परिणामों हमेशा नवीनतम व्यापार अप करने की तारीख के साथ.

कार्यालय ग्रिड कम्प्यूटिंग वातावरण आभासी प्रयोग - भाग 1

द्वारा स्टीवन लॉयड Watkin , शुक्रवार 4 दिसम्बर 2009 11:23

परिचय

मैं दिन हर काम में एक कंपनी के डेटा हम कहाँ के रिकॉर्ड के लाखों नौकरियों प्रसंस्करण बैच चलाने के कई और मैं गया है और प्रत्येक है सोच के बारे में हाल ही में सभी के चारों ओर बैठ मशीनों है कि हर घंटे के लिए कई दिन कुछ नहीं कर रहे हैं. हमारे सिस्टम होगा यह नहीं हो सकता है अच्छा अगर हम सत्ता का उपयोग सिलेंडर प्रसंस्करण के लिए उन मशीनों? लेख के इस सेट में मैं कार्यालय एक हूँ रोजगार के संभावित लाभ को देखने जा करने के लिए ग्रिड वातावरण का उपयोग virtualised.

के रूप में एक PHP डेवलपर मैं, लिनक्स हूँ, जाने के लिए उपयोग का उपयोग उपकरण है कि मैं हर दिन अर्थात् mySQL , PHP, VirtualBox और तोड़फोड़ (SVN). हालांकि मुझे उम्मीद है कि इस गाइड अन्य भाषाओं और प्रौद्योगिकियों के लिए बस के रूप में अच्छी तरह से अनुकूल होगा.

समाधान मैं प्रदान बहुत शिथिल प्रसंस्करण हम तथापि प्राप्त करने की आवश्यकता के रूप में मैं सादगी के लिए चीजें बदल देंगे, या करने के लिए और अधिक रोचक उपयोग परिदृश्यों उपज सकता हूँ कि इस पूरे लेख के माध्यम से सही नहीं हो सकता है के प्रकार पर आधारित होगा.

इन virtualised वातावरण विंडोज़ मशीन पर चलने के बाद से इस है कार्यालयों के बहुमत क्या चलेगा. प्रसंस्करण कि कार्यालय मशीनों हस्तक्षेप उन मशीनों का उपयोग नहीं करना चाहिए कर्मचारियों के साथ, मशीन पर कोई रखरखाव की आवश्यकता होती है चाहिए, और नई मशीनों को आसानी से deployable रूप में वे उपलब्ध हो जाते हैं. इसके अलावा, नए आभासी मशीनों कोई अतिरिक्त विन्यास की जरूरत नहीं के रूप में यह बहुत कम होता है और scalability आसानी जिस पर ग्रिड प्रणाली बढ़ाया जा सकता है चाहिए.

क्यों किसी Office कंप्यूटिंग ग्रिड तैनात?

सबसे पहले आप सोच सकते हैं इस तरह के रूप में कंप्यूटिंग संसाधन क्यों न सिर्फ उपयोग बादल एक है अमेज़न EC2 मंच ? अच्छी तरह से उदाहरण के लिए कई कारण हैं, हो सकता है:

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

मुझे यकीन है कि सूची जारी रखने के सकता हूँ, लेकिन मुझे लगता है कि अब के लिए काफी है.

किसी Office कंप्यूटिंग ग्रिड के लाभ

खैर, कुछ गणित करते हैं (और सही शैली में भौतिक विज्ञान की मदद से कुछ व्यापक धारणा बना) देता है. तुम बड़े मांसल प्रसंस्करण प्रति दिन 100 नौकरियों चलाने वाले किसी सर्वर है की कल्पना करो. अपने कार्यालय में आप 50 मशीनों जो बेकार हैं 16 घंटे एक दिन है, इन मशीनों में से प्रत्येक के रूप में अपने शक्तिशाली मांसल प्रसंस्करण तोड़ के रूप में 10% है. (सभी यहाँ के परिणाम को नजरअंदाज प्रदर्शन को बढ़ाने के लिए गोल कर रहे हैं).

तो, 1 यानी मशीन * 10% बिजली / 2 * 3 1 डेस्कटॉप प्रसंस्करण में निष्क्रिय समय 0.067 समय = प्रति दिन 6 पूर्ण रोजगार प्रक्रिया सकता है.

यदि आप अब इस स्तर तक यह लेता है डेस्कटॉप 15 निष्क्रिय करने के लिए करता है सर्वर मुख्य प्रसंस्करण के रूप में अपने दिन की प्रक्रिया के रूप में कई नौकरियों के प्रति.

मशीनों 50 तो कार्यालय का ढोंग में हमारे, हम सर्वर से 4 पूर्ण संसाधन सकता है हमारी वृद्धि को सत्ता से 1 सर्वर प्रसंस्करण या हम प्रति दिन नौकरियों प्रसंस्करण 400 हो सकता है 100 के बजाय.

सूचना, हार्डवेयर में नए निवेश के लिए कोई आपकी कंपनी समय है सिर्फ 4 वृद्धि अपने बैच प्रसंस्करण क्षमता! संभवतः आप अपने बिजली के उपयोग में वृद्धि, लेकिन ज्यादातर मैं कार्यालय के वातावरण हैं मशीनों के लिए किया गया है आम तौर पर रात वैसे भी बाएँ से जा रहे हैं, तो आप एक हरे रंग की पहल के रूप में यह देख सकते.

अन्य लाभ भी नए में निवेश मतलब है (या अद्यतन) प्रसंस्करण सर्वर किया जा सकता है यदि आपके कार्यालय मशीनों पर्याप्त हैं देरी और जैसा कि आप अपने कार्यालय मशीनों की शक्ति को अपने कार्यालय ग्रिड अधिक शक्तिशाली हो जाता है अपने आप में सुधार कि.

टेक्नोलॉजीज

तुम क्या जरूरत है? (या अधिक सही ढंग से क्या मैं का उपयोग करें):

  • निष्क्रिय कार्यालय मशीनों (मेरे मामले में एक अतिरिक्त पुरानी Windows XP लैपटॉप में)
  • VirtualBox (या अन्य virtualisation ग्राहक सॉफ्टवेयर)
  • मशीन के साथ PHP आभासी ए, mySQL ओएस नीचे कट चल runningÂ, मैं सर्वर लंगड़ा रहा हूँ बुला इन मेरा:)
  • नौकरियों को चलाने के लिए
  • नौकरी सर्वर (एक और आभासी मशीन कहीं जा सकता है)

ठेठ नौकरियां

नौकरियों है कि इस प्रणाली को चलाने के लिए डिज़ाइन किया गया है के प्रकार इस प्रकार है:

  • प्रणाली डेटा जिस पर हम मैच और परिणाम वापस करने की आवश्यकता की एक सूची प्राप्त करता है
  • मिलान की जाँच के शामिल / कई (काफी स्थिर) डेटा स्रोतों खोज
  • डेटा स्रोतों से अधिक परिणाम सत्यापन की आवश्यकता होती है, विलय कर सकते हैं, परिणाम के जवाब में अतिरिक्त डेटा स्रोतों की जाँच
  • डेटा मिलान के रिकॉर्ड के साथ वापस आ रहा है, पूरी तरह से मान्य है और संसाधित
  • एक नौकरी के भीतर प्रत्येक रिकॉर्ड आराम से स्वतंत्र है

तो बुनियादी तौर पर हम नौकरियों जो डेटाबेस lookups और कुछ संख्या crunching, एक कारोबारी माहौल में एक काफी ठेठ परिदृश्य का एक मिश्रण की आवश्यकता होती है चल रहा है देख रहे हैं.

ग्रिड समाधान केवल इस प्रकार की नौकरियों के प्रसंस्करण के लिए लाभप्रद नहीं हैं. असल में, किसी भी प्रक्रिया है जो स्वतंत्र इकाइयों में विभाजित किया जा सकता है समानांतर में चला जा सकता. सूचना और अधिक उदाहरण देखें यह विकिपीडिया के लिए: ग्रिड कंप्यूटिंग , लेकिन प्रसिद्ध उदाहरण के एक जोड़े हैं SETI @ होम और BIONC . वहाँ कंप्यूटिंग ग्रिड चलाने के लिए व्यवस्थाएं हैं, और ये अच्छी तरह से लायक हैं में देख रहे हैं.

हम क्या हासिल होगा?

ये लेख मैं दिखाने के लिए कि एक कार्यालय ग्रिड तैनाती बेहद महंगी या समय लेने की जरूरत नहीं है आशा के अंत तक. मैं चर्चा करने जा रहा हूँ:

  • ऊपर काम पर नियंत्रण प्रणाली की स्थापना, नौकरी विन्यास
  • एक उपयुक्त संसाधन आभासी मशीन बनाना
  • स्थापना के लिए एक विंडोज़ मशीन पर प्रणाली कैसे
  • आप यह सुनिश्चित करने के लिए नवीनतम कोड और डेटा उपयोग कर रहे हैं
  • तैनाती और बेंच मार्किंग
  • आगे देख रहे हैं

मैं (ठीक है मैं ने बनाया है, तो यह लिखा था) का निर्माण हो जाएगा एक उदाहरण के लिए एक स्थानीय Windows XP और मेरी GridMachine 'आभासी मशीन का उपयोग कर मशीन पर परीक्षण अवधारणाओं आवेदन. मेरे काम पर नियंत्रण सर्वर चलाता है जो किया जाएगा मेरे मुख्य मशीन Fedora 11 .

यह कोई एक पूरी तरह से काम कर मजबूत प्रणाली, प्रदर्शन का मतलब रास्ते में है इसका मतलब है एक प्रदर्शन के अधिक से दिखा रहा है कि इन बातों को समय का एक यथोचित कम जगह में और कम कीमत पर हासिल किया जा सकता चर्चा. कृपया मुझे कोई भी टिप्पणी, सुधार, या सुधार भेजने के लिए स्वतंत्र लग रहा है और मैं अपना सर्वश्रेष्ठ करने के लिए इस मैच के लिए अद्यतन लेख रखेंगे.

अगली बार

में भाग 2 और मैं नियंत्रण में काम शुरू कर देंगे से तलाश प्रणाली, असफल बिना देखने में संसाधित है नौकरी रोजगार के लिए चाहिए प्रत्येक सुनिश्चित करना है कि whilst हो प्रसंस्करण विन्यास में आदेश करने के लिए सबसे बड़ी राशि को प्राप्त करने.

कार्यालय ग्रिड कम्प्यूटिंग वातावरण आभासी प्रयोग - भाग 2

द्वारा स्टीवन लॉयड Watkin , शुक्रवार 4 दिसम्बर 2009 11:23

परिचय

मैं दिन हर काम में एक कंपनी के डेटा हम कहाँ के रिकॉर्ड के लाखों नौकरियों प्रसंस्करण बैच चलाने के कई और मैं गया है और प्रत्येक है सोच के बारे में हाल ही में सभी के चारों ओर बैठ मशीनों है कि हर घंटे के लिए कई दिन कुछ नहीं कर रहे हैं. हमारे सिस्टम होगा यह नहीं हो सकता है अच्छा अगर हम सत्ता का उपयोग सिलेंडर प्रसंस्करण के लिए उन मशीनों? लेख के इस सेट में मैं कार्यालय एक हूँ रोजगार के संभावित लाभ को देखने जा करने के लिए ग्रिड वातावरण का उपयोग virtualised.

में भाग 1 मैं एक कार्यालय ग्रिड बनाने दिया का अवलोकन करने के लिए चाहते हो जाएगा आप प्रणाली और क्यों संभावित कारणों प्रौद्योगिकियों मैं हो जाएगा का उपयोग कर के रूप में कुछ भी चर्चा की.

नौकरी नियंत्रण

यदि आप जा रहे हैं नौकरियों हो तो चल रहा है आप के लिए कुछ करने के लिए उन्हें प्रबंधित तरह की जरूरत जा रहे हैं. अपने काम पर नियंत्रण प्रणाली (अपनी नौकरी सर्वर पर) को बहुत अच्छी तरह से भी एक कार्यालय ग्रिड को चलाने का प्रयास करने से पहले बाहर सोचा की जरूरत है. सबसे पहले तो, एक काम पर नियंत्रण प्रणाली के लिए कार्य क्या कर रहे हैं:

  • नौकरियों बाहर अनुरोध पर कार्यकर्ताओं से हाथ
  • बताओ श्रमिकों क्या नौकरियों के प्रकार को चलाने के लिए
  • ट्रैक नौकरियां
  • यह सुनिश्चित करें कि नौकरी केवल एक बार चलती है
  • श्रमिकों को नौकरी डेटा प्रदान करें, या कम से कम उन्हें बताने के लिए इसे पाने के लिए जहां

इस प्रणाली को भी एक्स्टेंसिबल की जरूरत है, एक समाधान है कि एक भी मामले में अब के लिए काम करता है के लिए रोजगार के कई प्रकार के भाग के रूप में व्यापार एक ग्रिड समाधान में मूल्य देखता बढ़ाया जा सकता है. उदाहरण के लिए, नौकरी प्राथमिकताओं फायदा मिल सकता है, एक से अधिक नौकरी प्रकार (यानी कई कोड कुर्सियां) मौजूद है, अंतत: आप भी कई अलग अलग मशीनों है कि कर्मचारी काम के प्रत्येक प्रकार के लिए अनुकूलित कर रहे हैं (हालांकि कि दूर 'सामान्य कार्यकर्ता से कदम नहीं चला सकते हो सकता है विचार '). हमेशा के लिए भविष्य के बारे में सोचने की कोशिश करें जब विकासशील प्रणाली, एक अल्पकालिक दृष्टि लंबी अवधि निराशा और बढ़ विकास के समय के लिए नेतृत्व कर सकते हैं.

नौकरी सर्वर

हम कहीं जरूरत अपने काम को नियंत्रण से, यह आपके ग्रिड में ही व्यवस्था है कि एक निश्चित रिसोर्स लोकेटर है होना चाहिए, हो सकता है कि एक आईपी पता, होस्ट का नाम, यूआरएल (आंतरिक DNS का उपयोग करके), आदि इसका कारण यह है जा रहे हैं श्रमिकों को रोजगार के लिए कहाँ देखना पता है की जरूरत है, कर्मचारियों को काम पर नियंत्रण प्रणाली (नहीं काम पर नियंत्रण प्रणाली श्रमिकों खोजने के लिए) की जरूरत है.

नौकरी सर्वर ही वास्तव में एक जटिल कार्य (एक बुनियादी तंत्र में किसी भी तरह) नहीं है, यह करने के लिए नौकरियों की एक सूची की दुकान, नौकरी हाथ से बाहर, परिणाम प्राप्त करते हैं, और बाद में उन्हें बाद में पुनः प्राप्ति के लिए दुकान की जरूरत है. कैसे इन भागों (जैसे कि 'नौकरी हाथ से बाहर') बहुत बुनियादी किया जा सकता है परिभाषित कर रहे हैं. बाद में हम इस प्रणाली का विस्तार करने के लिए एक प्रशासन में जोड़ने, संपादित करने, हटाने, रोजगार निलंबित इंटरफ़ेस शामिल कर सकते हैं लेकिन यह इस अभ्यास से परे है.

वहाँ कोई कारण कुछ तो यह है कि अपनी नौकरी सर्वर एक आभासी अपने मुख्य प्रसंस्करण सर्वर के भीतर चल मशीन नहीं हो सकता है यह बहुत अधिक संसाधनों से पानी नहीं प्रदान की है. नौकरी सर्वर तथापि उच्च उपलब्धता की आवश्यकता नहीं है, अगर यह एक शुक्रवार शाम आप के लिए संसाधन की एक पूरी सप्ताहांत खोने के लिए जा रहे हैं पर नीचे चला जाता है, संभवतः आप प्रसंस्करण समय की कीमत सप्ताह के एक जोड़े (जब आपके मुख्य प्रसंस्करण अकेले सर्वर की तुलना में) की लागत . आप के लिए उच्च उपलब्धता के लिए एक लोड संतुलित पर्यावरण पर अपनी नौकरी सर्वर लगाने पर विचार कर सकते हैं.

बुनियादी सेटअप

The basic setup for our job server will consist of what I'm calling one of my LiMP servers (that is Li nux, m ySql, P HP). The code running on the workers will actually work out what jobs it can run by interacting with with job control system databases. Later on we could create a web service and actually hand out jobs rather than having the workers do the hard work themselves, but for now we'll continue using the KISS principle (Keep it Simple, Stupid!).

So, lets create three mySQL tables to deal with jobs. These will be `jobs`, `jobRecords`, and `jobResults`.

jobs table Here I'm using SQL Buddy a great little alternative to phpMyAdmin just because its easier to install on centOS (for others see: 10 Great alternatives to phpMyAdmin )

This table consists of 5 simple fields,

  • id: Uniquely identify the job
  • name: Could be a client reference, or any number of other identifiers
  • Status: You need to know where the job is at, eg
    • 0: Not started
    • 1: Picked up
    • 2: Completed
  • started_by: Who's started doing the job? This isn't entirely required but is a nice to have. I'd suggest tracking workers by their IP address on your network
  • started_at: When did the worker start the job? By tracking jobs that have not completed within X amount of time we know we need to pick up the job once again and start processing by another worker. Workers could stop processing/go offline for any number of reasons, power failure, crash, network loss, etc.

It is easy how this table could be extended with a few additional fields to allow for statistics tracking, a finish time column to see how long the job took, a counter to see how many workers picked up the job (obviously this needs to tend to 1), job priority, the list can go on and on. In more complex job scenarios it would be possible to specify how much memory the worker would need access to (and therefore only use suitable workers), or even what type of worker would be required.

Lets add a few example jobs:

example jobs

The next table again is quite simple to understand, these are our job records. They are linked to the main jobs table by a column `jobs_id`. The make up of this table very much depends on the data that you need to supply to your workers, lets make a very simple example where we have four columns:

  • id: ID of the record
  • name: Person's name
  • address: Person's address
  • jobs_id: The job ID that this record is linked to

The third and final table consists of a results table, it has much the same make up as our records table, and with the addition of some columns could be part of the records table:

  • job_record_id: Link the result to the job table
  • result: The result data

…and that's all you need for job control! (albeit at a very basic level) In my case I'm pointed to another table where my data to process was located, but this could just as easily been a file, parameters to run simulation code, you name it.

Selecting a job

जैसा कि पहले कहा, मजदूरों हमारे लिए अब के लिए हमारा काम, प्रबंधन करना होगा, ताकि हम सभी के लिए वास्तव में जरूरत है एक नौकरी कि संसाधन की जरूरत है और जानकारी प्राप्त कर मिल रहा है. हम यह कैसे करेंगे? अच्छी तरह से हमारा काम चयन मानदंड लेने और नौकरियों के लिए देखो, एसक्यूएल में मैं निम्नलिखित किया:

  1. किसी भी काम है कि पूर्ण रूप में, लेकिन हमारे कार्यकर्ता से चिह्नित नहीं कर रहे हैं (एक पहचानकर्ता, आसान आईपी पता हो जाएगा के साथ स्थानापन्न __ME__) उन्हें रीसेट लें:
      अद्यतन `नौकरियों` सेट `स्थिति '= 0 कहां` `स्थिति = 1 और` started_by = __ME__ `; 
  2. हमारा काम चयन मानदंड का प्रयोग, एक नौकरी का चयन करें और नियंत्रण प्रणाली है कि इस कर्मचारी के साथ काम कर रहा है बताओ:
      अद्यतन `नौकरियों` सेट `` स्थिति = 1, `` started_by = __ME__, `` started_at = (अब), जहाँ `स्थिति '= 0 या
     (`` स्थिति = 1 और `` started_at> ((अब) DATE_SUB, अंतराल एक्स घंटे)) आदेश द्वारा `आईडी` ए एस सी; 

    नौकरियों है कि समय की एक्स राशि में जो परिणाम हम यह सुनिश्चित करना कि सभी नौकरियों एक कार्यकर्ता दुर्घटनाग्रस्त या AWOL जाने की घटना में चलाए जा रहे हैं नहीं लौटे हैं हथियाने के द्वारा.

  3. अगले नौकरियों खुद के रिकॉर्ड के बाद विवरण हड़पने:
      चुनें * से `नौकरियों` जहां `started_by` = 1 सीमा __ME__;
     चुनें * से `job_records` जहां `आईडी` = __JOBID__; 

काम के पूरा होने पर हम सम्मिलित हमारे परिणाम और अभिलेखों को पूरा के रूप में काम निशान. याद के रूप में नौकरी निलंबित / किसी भी समय फिर से शुरू अपनी स्क्रिप्ट में कुछ मजबूती के लिए अनुमति दे सकते हैं. यह हो सकता है कि काम काम पर नियंत्रण प्रणाली को अद्यतन है, तो एक काम में अभिलेखों की संख्या और काम पर नियंत्रण प्रणाली के लिए वापस बचाया एक बुद्धिमान कदम होगा परिणामों की संख्या की जाँच के माध्यम से आधे रास्ते निलंबित.

इसके अलावा, whilst यह दर्शाता है कि कैसे रोजगार और चयन किया जा सकता है वास्तव में कामयाब से एक SQL-क्वेरी फ्रेम चाहिए abstracting अपने काम पर नियंत्रण ताकि यदि आप, तय प्रणाली के आधार स्विच करने के लिए उपयोग कर एक वेब सेवा, एक फ़ाइल XML , या किसी अन्य सिस्टम की संख्या में यह उसके ऊपर कोड को प्रभावित नहीं करेगा.

नौकरी विन्यास

अगले पहलू पर विचार काम आकार और विन्यास है. नौकरी विन्यास के साथ खेल से हम गति, प्रक्रिया प्रतिकृति, और विश्वसनीयता के बीच एक उत्कृष्ट संतुलन कायम कर सकते हैं. एक जोड़ी OFA परिदृश्यों लें:

  1. रोजगार चलाने के लिए 1 से प्रत्येक दिन: यह मतलब है कि आपके कर्मचारी दिन की जरूरत 15 से काम प्रत्येक प्रक्रिया (समय की 2/3rds सत्ता के लिए की याद% 10). यह स्पष्ट रूप से एक बुद्धिमान विन्यास नहीं है, अपने काम के आकार रास्ता बहुत बड़ा! इसे ले जाएगा कम से कम करने के लिए एक प्रारंभिक कार्यकर्ता AWOL जाना चाहिए संसाधित नौकरी मिल (समय लेने के लिए है कि यह एक परिणाम प्लस पुनर्संसाधन समय वापस नहीं आया है) समय डबल. आदर्श में एक तुम्हें याद कर बजाते पर होगा कम से कम एक नौकरी रखने के अंत तक पूरा काम आसानी से मंजूरी दे दी की लंबी अवधि के प्रत्येक बेकार तुम, उस तरह से ऊपर सबसे खराब और कम से मामले में एक दिन जाना होगा काम ले दो के लिए प्रक्रिया पहले करना चाहिए.
  2. नौकरियों मिनट ले 1 से चलाएँ: इसका मतलब यह है कि अपने कार्यकर्ताओं मिनट के बारे में लेने के 15 से काम चलाने के प्रत्येक. Whilst यह शुरू में आदर्श लग सकता है, तुम दोपहर के भोजन के समय, कॉफी ब्रेक, बैठकों, आदि इस परिदृश्य अपने सिस्टम के अन्य क्षेत्रों पर दबाव डालता है और अपनी ही समस्याओं का परिचय के दौरान अतिरिक्त काम प्रसंस्करण लाभ. उदाहरण के लिए, सबसे पहले अपने सेटअप / प्रसंस्करण समय का अनुपात ठीक नीचे जा रहा है, इसलिए प्रणाली दक्षता खोने. अपने नेटवर्क के लिए लगातार विभिन्न कार्यकर्ताओं निराशा कर्मचारी जो अपने दिन काम करने के लिए दिन डोंग कर रहे हैं काम की जानकारी स्ट्रीमिंग होने जा रहा है. आप भी अपनी नौकरी प्रसंस्करण सर्वर पर और अधिक दबाव डाला के रूप में इसे बाहर बहुत से और एक नियमित आधार पर कार्य के छोटे टुकड़ों के बहुत सारे पकवान है जा रहे हैं. अन्त में, इस स्थिति में यदि आपकी नौकरी सर्वर नीचे चला जाता है आप के लिए सकता है बड़ा रोजगार जबकि अपूर्ण काम का एक बड़ा वापस लॉग बनाने के लिए जा रहे हैं blissfully अनजान है कि इस काम के सर्वर कठिनाइयों का सामना कर रहा था प्रसंस्करण जारी रखा.

वास्तविकता में वहाँ कोई भी अपने ग्रिड स्थापना के लिए आदर्श विन्यास हो सकता है, ज्यादा संसाधन उपलब्ध, नौकरी की, नौकरी वापसी समय की आवश्यकताओं, नेटवर्क की क्षमता, और इतने पर प्रकार पर निर्भर करता है. हालांकि कुछ दिशा निर्देश होगा:

  • आकार नौकरियों ताकि प्रत्येक कर्मचारी कम से कम 3-4 नौकरियों के माध्यम से 15 घंटे (सबसे लंबे समय तक की संभावना निष्क्रिय समय अवधि) की अवधि में प्राप्त कर सकते हैं
  • काम के आकार के साथ खेलने ताकि सेटअप समय काफी तुच्छ प्रसंस्करण समय (ऊपर बिंदु मन में असर) की तुलना में हो जाता है.
  • अगर एक काम डबल में समय की राशि को पूरा नहीं करता है (शायद कम) आप यह है कि इसके चले AWOL मान और यह एक और कार्यकर्ता के साथ प्रसंस्करण शुरू को पूरा करने की उम्मीद है. इसका मतलब है आप तीन बार करने के लिए एक नौकरी की सामान्य लंबाई प्रतीक्षा इसे (संभवतः अब अगर बाद में काम विफल रहता है) को पूरा करने के लिए हो सकता है. लेकिन आप यह कर सकते हैं कम करना चाहते करने के लिए समय है, नियमित आधार सावधान रहना होगा एक नहीं के लिए कम यह भी पर कार्य प्रसंस्करण शुरू duplicating सकता है जितना आप.
  • नौकरियों बाहर आवश्यकताओं की स्वतंत्र संभव के रूप में ज्यादा के रूप में किया जाना चाहिए. नौकरी सर्वर, उदाहरण के लिए, केवल और हर काम का प्रारंभ और समाप्ति पर संपर्क किया जाना चाहिए.
  • अपने नेटवर्क तर मत करो, यह दो नकारात्मक प्रभाव पड़ेगा, अपने कर्मचारियों को दिन के समय नेटवर्क कनेक्शन समस्याओं को निराशा होती है और बाहर एक समस्या यह है कि केवल बदतर रूप में आप अपने ग्रिड पैमाने पर मिल जाएगा समय के साथ अनुभव किया जा सकता का उपयोग कर पाएंगे.
  • सुनिश्चित रोजगार अपने कार्यकर्ताओं पर चला सकते हैं. अगर नौकरियों स्मृति भी बन गहन या डिस्क स्थान गहन नौकरी छोड़ और शुरू केवल एक चीज है कि आप ध्यान देंगे कोई वास्तविक कारण है कि कारण के साथ कार्रवाई की नौकरियों की संख्या में एक बूंद है.

एक नौकरी के सबमिट परिणाम

जब एक नौकरी के परिणाम प्रस्तुत यह महत्वपूर्ण है कि जांच के परिणाम एक और मजदूर द्वारा प्रस्तुत नहीं किया है, खासकर अगर मौजूदा कर्मचारी कुछ समय के लिए निष्क्रिय किया गया है.

परिणाम यह सुनिश्चित करें कि परिणामों की संख्या नौकरी के भीतर रिकॉर्ड की संख्या मैच कब प्रस्तुत कर रहे हैं.

जैसा कि पहले कहा है, और हो सकता है, नहीं कर सकता पर जोर दिया पर नौकरी बहाली और परिणाम प्रस्तुत करने में दोष सहिष्णुता का निर्माण. कार्यकर्ताओं में जाने का सबसे अधिक बार असुविधाजनक पर मोड को निरस्त करने और यह होने के लिए catered की जरूरत है (और सबसे अधिक संभावना कर सकते हैं). इसके अलावा एक बार फिर दूर अपने परिणाम प्रस्तुत करने abstracting मदद अपने काम पर नियंत्रण प्रणाली के लिए भविष्य में बदलाव बहुत आसान से निपटने के लिए पूरा करेगा.

सारांश

इस section में हम एक काम पर नियंत्रण सर्वर क्या करने की जरूरत है और एक बहुत ही बुनियादी स्थापित प्रणाली पाने के लिए पर ध्यान दिया है. हम चर्चा कैसे नियंत्रण प्रणाली से एक नौकरी पाने के लिए और सबसे अच्छा कैसे के लिए रोजगार कॉन्फ़िगर करने के लिए सबसे अपने कार्यालय ग्रिड प्रणाली के बारे में हमारी. खत्म करने के लिए, परिणाम प्रस्तुत करने के काम पर नियंत्रण सर्वर को वापस पर एक या दो पैराग्राफ पेश किया गया.

  • एक काम पर नियंत्रण सर्वर नौकरियों का प्रबंधन और सुनिश्चित करता है कि सब काम पूरा कर रहे हैं इकाइयों
  • abstracting अपनी नौकरी / परिणाम प्रस्तुत हम ज्यादा समस्याओं के बिना नियंत्रण सर्वर की तकनीक बदल सकते हैं का चयन करके
  • कॉन्फ़िगर अपने काम को सुनिश्चित करने के लिए कि वे जल्दी से और कुशलता से अपने नेटवर्क बुनियादी सुविधाओं पर बहुत अधिक दबाव डालने के बिना, और एक नियमित आधार पर प्रसंस्करण कार्यों duplicating के बिना चलाए जा रहे हैं.
  • यह सुनिश्चित करें कि आप अपनी दिनचर्या में दोष सहिष्णुता और त्रुटि checking निर्माण, कार्यकर्ताओं को निरस्त करने और फिर से शुरू कर सकते हैं और समय की सबसे असुविधाजनक. जाँच करने के लिए यदि परिणाम पहले से ही एक कार्यकर्ता द्वारा भी सौंपी गई हैं याद रखें.

अगली बार

में 3 हिस्सा हम श्रमिकों प्रसंस्करण हूँ बनाने के लिए हमारे आभासी मशीन खिड़कियां और सेट अप हमारे मशीनों समय के लिए निष्क्रिय हो जाते हैं,.

कार्यालय ग्रिड कम्प्यूटिंग वातावरण आभासी प्रयोग - भाग 5

द्वारा स्टीवन लॉयड Watkin , शुक्रवार 4 दिसम्बर 2009 11:03

परिचय

मैं दिन हर काम में एक कंपनी के डेटा हम कहाँ के रिकॉर्ड के लाखों नौकरियों प्रसंस्करण बैच चलाने के कई और मैं गया है और प्रत्येक है सोच के बारे में हाल ही में सभी के चारों ओर बैठ मशीनों है कि हर घंटे के लिए कई दिन कुछ नहीं कर रहे हैं. हमारे सिस्टम होगा यह नहीं हो सकता है अच्छा अगर हम सत्ता का उपयोग सिलेंडर प्रसंस्करण के लिए उन मशीनों? लेख के इस सेट में मैं कार्यालय एक हूँ रोजगार के संभावित लाभ को देखने जा करने के लिए ग्रिड वातावरण का उपयोग virtualised.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. So,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

तैनाती

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

बंद करो!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

कृपया मुझे कोई भी टिप्पणी, सुधार, या सुधार भेजने के लिए स्वतंत्र लग रहा है और मैं अपना सर्वश्रेष्ठ करने के लिए इस मैच के लिए अद्यतन लेख रखेंगे.













पैनोरमा थीम द्वारा Themocracy

अब 6 आगंतुकों ऑनलाइन
2 मेहमानों, 4 bots, 0 सदस्यों
अधिकतम आज आगंतुकों: 12:56 पर 11 हूँ UTC
इस माह: 2011/08/06 22 में 12:30 UTC हूँ
इस वर्ष: 10:40 130 पर 28-03-2011 दोपहर UTC
सब समय: 10:40 130 पर 28-03-2011 दोपहर UTC