परिचय
मैं एक कंपनी में जहाँ हम कई बैच प्रसंस्करण नौकरियों डेटा के अभिलेखों का लाखों प्रत्येक दिन चलाने के लिए और मैं सभी मशीनों है कि प्रत्येक के आसपास बैठते हैं और हर दिन कई घंटे के लिए कुछ नहीं कर रही के बारे में किया गया है हाल ही में सोच काम करते हैं. यह अच्छा नहीं होगा अगर हम उन मशीनों का उपयोग करने के लिए हमारे सिस्टम के प्रसंस्करण शक्ति सिलेंडर सकता है? लेख के इस सेट में मैं एक कार्यालय रोजगार के संभावित लाभ को देखने जा रहा हूँ ग्रिड virtualised वातावरण का उपयोग .
में भाग 1 मैं प्रणाली और प्रौद्योगिकियों मैं के रूप में उपयोग किया जाएगा अच्छी तरह के रूप में संभावित कारणों तुम क्यों एक कार्यालय ग्रिड बनाने के लिए चाहते हो जाएगा के कुछ चर्चा के एक सिंहावलोकन दिया.
काम पर नियंत्रण
यदि आप जा रहे हैं नौकरियों चल रहा हो तो आप कुछ तरह उन्हें प्रबंधित की आवश्यकता के लिए जा रहे हैं. आपका काम नियंत्रण प्रणाली (अपनी नौकरी सर्वर पर) के लिए भी एक कार्यालय ग्रिड को चलाने का प्रयास करने से पहले वास्तव में अच्छी तरह से बाहर सोचा की जरूरत है. सबसे पहले तो, एक नौकरी नियंत्रण प्रणाली के लिए कार्य क्या कर रहे हैं:
- कामगारों से अनुरोध पर हाथ बाहर नौकरियों
- श्रमिकों नौकरियों के लिए किस प्रकार चलाने के लिए को बताएँ
- ट्रैक नौकरियों
- सुनिश्चित करें कि नौकरियों केवल एक बार चला रहे हैं
- श्रमिकों को नौकरी डेटा प्रदान करें, या कम से कम उन्हें बताओ यह कहाँ पाने के लिए
इस प्रणाली को भी एक्स्टेंसिबल, एक समाधान है कि एक भी मामले में अब के लिए काम करता है के लिए नौकरियों के कई प्रकार के भाग के रूप में व्यापार में एक ग्रिड समाधान के लायक देखता बढ़ाया जा सकता है है की जरूरत है. उदाहरण के लिए, नौकरियों प्राथमिकताओं लाभ, एक नौकरी से अधिक प्रकार मौजूद हो सकता है हो सकता है (यानी कई कोड अड्डों), अंततः आप भी कई अलग अलग कार्यकर्ता मशीनों है कि नौकरी के प्रत्येक प्रकार के लिए अनुकूलित कर रहे हैं रन आउट (हो सकता है कि हालांकि 'सामान्य कार्यकर्ता से दूर कदम नहीं 'विचार). हमेशा के भविष्य के बारे में लगता है कि जब प्रणाली विकसित करने की कोशिश, एक अल्पकालिक दृष्टि लंबी अवधि हताशा और वृद्धि विकास के समय के लिए नेतृत्व कर सकते हैं.
नौकरी सर्वर
हम कहीं जरूरत करने के लिए हमारी नौकरियों नियंत्रण से जा रहे हैं, यह अपने ग्रिड में केवल प्रणाली है कि एक निश्चित रिसोर्स लोकेटर है हो सकता है, होना चाहिए कि एक आईपी पता, होस्ट नाम, यूआरएल (आंतरिक DNS का उपयोग), आदि इसका कारण यह है श्रमिकों जहां नौकरियों के लिए देखो पता की जरूरत है, कामगारों को नौकरी नियंत्रण प्रणाली (नौकरी नियंत्रण प्रणाली नहीं कार्यकर्ताओं को खोजने के) खोजने की जरूरत है.
नौकरी सर्वर ही वास्तव में एक जटिल कार्य नहीं है (एक बुनियादी तंत्र में किसी भी तरह), यह नौकरियों की एक सूची की दुकान, हाथ नौकरियों बाहर, परिणाम प्राप्त करने के लिए, और बाद में उन्हें बाद में पुनः प्राप्ति के लिए दुकान की जरूरत है. कैसे इन भागों (जैसे 'नौकरियों बाहर हाथ') को परिभाषित कर रहे हैं बहुत ही बुनियादी हो सकता है. बाद में हम प्रणाली का विस्तार करने के लिए एक प्रशासन इंटरफ़ेस जोड़ने, संपादित करने, हटाने, रोजगार निलंबित लेकिन इस व्यायाम से परे है शामिल कर सकते हैं.
वहाँ कोई कारण जो भी तो है कि अपनी नौकरी सर्वर एक आभासी मशीन अपने मुख्य प्रसंस्करण सर्वर के भीतर चल रहे नहीं किया जा सकता है बशर्ते वह भी कई संसाधनों से पलायन नहीं करता है. नौकरी सर्वर लेकिन उच्च उपलब्धता की जरूरत नहीं है, अगर यह एक शुक्रवार की शाम आप प्रसंस्करण के एक पूरे सप्ताहांत खोने जा रहे हैं पर नीचे चला जाता है, संभवतः आप सप्ताह के प्रसंस्करण समय के लायक एक जोड़े (जब अपने मुख्य प्रसंस्करण अकेले सर्वर की तुलना में) लागत . आप एक लोड संतुलित वातावरण पर उच्च उपलब्धता के लिए अपनी नौकरी सर्वर डालने पर विचार करना चाहते हो सकता है.
मूल सेटअप
हमारा काम के सर्वर के लिए बुनियादी सेटअप क्या मैं बुला रहा हूँ मेरी लंगड़ा सर्वर के (कि ली nux, मीटर ySql, पी हिमाचल प्रदेश) से मिलकर करेंगे . Thea कार्यकर्ताओं पर चल रहे कोड वास्तव में बाहर काम नियंत्रण प्रणाली डेटाबेस के साथ के साथ बातचीत के द्वारा काम करेंगे क्या यह नौकरियों चला सकते हैं. बाद में हम कार्यकर्ता कड़ी मेहनत खुद करते हैं बजाय एक वेब सेवा और रोजगार के बाहर वास्तव में हाथ बनाने के लिए, लेकिन हो सकता है अभी के लिए हम चूमने के सिद्धांत (यह सरल, बेवकूफ रखें !) का उपयोग जारी रखेंगे.
तो देता है, तीन बनाने mySQL तालिकाओं के लिए नौकरियों के साथ सौदा. ये `नौकरियों,` jobRecords `, और` jobResults जाएगा.
यहाँ मैं का उपयोग कर रहा हूँ SQL दोस्त एक महान थोड़ा वैकल्पिक phpMyAdmin सिर्फ इसलिए अपने CentOS पर स्थापित करने के लिए आसान (के लिए दूसरों को देखें: 10 phpMyAdmin करने के लिए महान विकल्प )
इस तालिका 5 सरल क्षेत्रों के होते हैं,
- आईडी: विशिष्ट नौकरी की पहचान
- नाम: एक ग्राहक संदर्भ, या अन्य identifiers के किसी भी संख्या हो सकता है
- स्थिति: तुम्हें पता है, जहां काम उदाहरण के लिए, की जरूरत है
- 0: प्रारंभ नहीं किया गया
- 1: उठाया
- 2: पूर्ण
- started_by: कौन काम कर रही शुरू कर दिया है? यह पूरी तरह नहीं बल्कि आवश्यक है एक अच्छा है. मैं उनके अपने नेटवर्क पर आईपी पते के द्वारा ट्रैकिंग श्रमिकों सुझाव चाहते हैं
- started_at: कर्मचारी काम कब शुरू किया? नौकरियों है कि समय की एक्स राशि है जो हम जानते हैं कि हम करने के लिए एक बार फिर से काम लेने और एक अन्य कार्यकर्ता द्वारा प्रसंस्करण शुरू करने की आवश्यकता के भीतर पूरा नहीं किया है पर नज़र रखने. श्रमिक रोक प्रसंस्करण / के किसी भी संख्या कारणों से, बिजली विफलता, दुर्घटना, नेटवर्क हानि, आदि के लिए ऑफ़लाइन जा सकते हैं
यह आसान है कि कैसे इस तालिका में कुछ अतिरिक्त फ़ील्ड के साथ बढ़ाया जा सकता है और आँकड़ों पर नज़र रखने, एक खत्म समय स्तंभ देखने के लिए कितनी देर तक काम लिया, एक काउंटर को देखने के लिए कितने कार्यकर्ताओं नौकरी उठाया (जाहिर है इस की जरूरत के लिए करते हैं के लिए अनुमति 1) नौकरी प्राथमिकता, सूची में और पर जा सकते हैं. अधिक जटिल काम परिदृश्य में यह संभव हो सकता करने के लिए निर्दिष्ट कितना स्मृति कार्यकर्ता (और इसलिए केवल उपयुक्त श्रमिकों का उपयोग करें), या यहाँ तक कि कार्यकर्ता की किस प्रकार की आवश्यकता होगी उपयोग की आवश्यकता होगी.
चलो कुछ उदाहरण नौकरियों जोड़ने है:
अगले तालिका फिर से समझने के लिए काफी सरल है, ये हमारा काम रिकॉर्ड कर रहे हैं. वे एक `स्तंभ jobs_id` द्वारा मुख्य नौकरियों तालिका से जुड़े हुए हैं. इस तालिका के मेकअप बहुत डेटा पर निर्भर करता है कि आप अपने कर्मचारियों के लिए आपूर्ति की जरूरत है देता है, एक बहुत ही सरल उदाहरण है, जहाँ हम चार स्तंभों:
- आईडी: रिकॉर्ड के आईडी
- नाम: व्यक्ति का नाम
- पता: व्यक्ति के पते
- नौकरी आईडी है कि इस रिकॉर्ड के लिए जुड़ा हुआ है : jobs_id
तीसरे और अंतिम तालिका एक परिणाम तालिका के होते हैं, यह बहुत ही हमारे रिकॉर्ड की तालिका के रूप में बनाने, और कुछ स्तंभों के अलावा के साथ रिकॉर्ड तालिका का हिस्सा हो सकता है:
- job_record_id: नौकरी तालिका में परिणाम लिंक
- परिणाम: परिणाम डेटा
... और कहा कि तुम सब काम पर नियंत्रण के लिए की जरूरत है! (हालांकि एक बहुत ही बुनियादी स्तर पर) मेरे मामले में मैं किसी अन्य तालिका जहां प्रक्रिया के लिए अपने डेटा स्थित था ओर इशारा कर रहा हूँ, लेकिन यह बस के रूप में आसानी से एक फाइल हो सकता था, पैरामीटर अनुकार कोड को चलाने के लिए, तुम यह नाम है.
एक नौकरी का चयन
जैसा कि पहले कहा, श्रमिकों के लिए हमें अब हमारा काम प्रबंधन के लिए क्या करेंगे, तो हम सब सच में करने की ज़रूरत है कि संसाधन की जरूरत है एक नौकरी खोजने के लिए और जानकारी मिल. हम यह कैसे करना चाहते हैं? खैर हमारा काम चयन मानदंड लेने और नौकरियों के लिए देखो, एसक्यूएल में मैं निम्नलिखित किया:
- ले लो किसी भी नौकरियों है कि पूरा के रूप में, लेकिन हमारे कार्यकर्ता से चिह्नित नहीं कर रहे हैं और उन्हें रीसेट (एक पहचानकर्ता के साथ __ME__ विकल्प, आसान IP पता होगा):
अद्यतन `नौकरियों` सेट `स्थिति` = 0 कहां `स्थिति` = 1 और `started_by` = __ME__;
- हमारी नौकरी के चयन के मापदंड का उपयोग, एक नौकरी का चयन करें और नियंत्रण प्रणाली बताओ कि इस कार्यकर्ता के साथ काम कर रहा है:
अद्यतन `नौकरियों` `स्थिति` = 1, `started_by` = __ME__, `started_at` अब = () कहां `स्थिति` = 0 या सेट
(`स्थिति` = 1 और `started_at`> DATE_SUB (अब), अंतराल एक्स HOUR ()) द्वारा `id` ए एस सी आदेश;
नौकरियों है कि परिणाम समय की एक्स राशि हम सुनिश्चित करें कि सभी नौकरियों को एक दुर्घटनाग्रस्त या AWOL जा कार्यकर्ता की घटना में चलाए जा रहे हैं में नहीं लौटे हैं हथियाने.
- अगले नौकरियों खुद रिकॉर्ड द्वारा पीछा विवरण हड़पने:
SELECT * `से नौकरियों` जहां `started_by` = __ME__ एक सीमा;
* `से job_records` का चयन करें जहाँ `आईडी` = __JOBID__;
नौकरी हम अपने परिणाम रिकॉर्ड डालने और पूरा के रूप में नौकरी का निशान के पूरा होने पर. याद रखें के रूप में नौकरी निलंबित / किसी भी समय कर सकते हैं फिर से शुरू अपनी स्क्रिप्ट में कुछ मजबूती के लिए अनुमति देते हैं. यह हो सकता है कि कार्य नौकरी नियंत्रण प्रणाली अद्यतन के माध्यम से आधे रास्ते निलंबित, तो नौकरी में रिकॉर्ड की संख्या की जाँच और नौकरी नियंत्रण प्रणाली के लिए वापस बचाया परिणामों की संख्या एक बुद्धिमान कदम होगा.
इसके अलावा, whilst यह दर्शाता है कैसे नौकरियों और चयनित किया जा सकता है एक एसक्यूएल क्वेरी फ्रेम तुम सच में जाना चाहिए से प्रबंधित abstracting अपनी नौकरी नियंत्रण इतना है कि यदि आप एक वेब सेवा, एक फ़ाइल आधारित प्रणाली का उपयोग करने के लिए स्विच करने का फैसला XML, या किसी अन्य सिस्टम की संख्या यह ऊपर कोड को प्रभावित नहीं करेगा.
नौकरी विन्यास
अगले पहलू पर विचार करने के काम आकार और विन्यास है. नौकरी विन्यास के साथ खेलने से हम गति, प्रक्रिया, प्रतिकृति, और विश्वसनीयता के बीच एक उत्कृष्ट संतुलन कर सकते हैं. लो एक जोड़े OFA परिदृश्यों:
- नौकरियां 1 दिन ले प्रत्येक चलाने के लिए इसका मतलब यह है कि अपने कर्मचारियों को 15 दिनों की जरूरत है हर काम प्रक्रिया (समय के 2/3rds के लिए शक्ति का 10 % याद). यह स्पष्ट रूप से एक बुद्धिमान विन्यास नहीं है, अपनी नौकरी का आकार रास्ता भी बड़ा है! यह कम से कम दोगुना समय लेने के लिए एक संसाधित नौकरी पाने के प्रारंभिक कार्यकर्ता AWOL (समय लेने के लिए कि यह एक परिणाम प्लस पुनर्संसाधन समय नहीं वापस आ गया है) जाना चाहिए. एक आदर्श आप कम से कम एक पूरा काम आसानी से प्रत्येक लंबे समय से निष्क्रिय अवधि के अंत तक मंजूरी दे दी है, तरीका है कि आप अधिक और सबसे खराब स्थिति में एक नौकरी बजाते नौकरियों रखना चाहते हैं और प्रक्रिया के लिए दो दिन ले जाएगा पहली याद आ जाना चाहिए.
- नौकरियां 1 मिनट लेने के लिए चलाएँ: इसका मतलब यह है कि अपने कर्मचारियों के बारे में 15 मिनट लेने के लिए हर काम चलाने है . Whilst यह शुरू में आदर्श लग सकता है, आप दोपहर के भोजन के समय के दौरान अतिरिक्त काम प्रसंस्करण हासिल करने के लिए, कॉफी ब्रेक, बैठकों, आदि इस परिदृश्य में अपने सिस्टम के अन्य क्षेत्रों पर दबाव डालता है और अपनी ही समस्याओं का परिचय. उदाहरण के लिए, सबसे पहले अपने समय सेटअप / प्रसंस्करण अनुपात ठीक नीचे जाना है, इसलिए प्रणाली दक्षता को खोने जा रहा है. अपने नेटवर्क के लिए लगातार विभिन्न कार्यकर्ताओं को निराशा कर्मचारियों के साथ जो दांग उनके दिन काम करने के दिन हैं के लिए काम की जानकारी स्ट्रीमिंग होने जा रहा है. तुम भी अपनी नौकरी प्रसंस्करण सर्वर पर अधिक दबाव डाल के रूप में यह बहुत सारे और एक नियमित आधार पर काम के छोटे टुकड़ों के बहुत सारे के लिए बाहर पकवान के लिए जा रहे हैं. अन्त में, इस स्थिति में अगर अपनी नौकरी सर्वर नीचे चला जाता है तुम जबकि बड़ी नौकरियों के अपूर्ण काम का एक बड़ा वापस लॉग बनाने जा रहे हैं blissfully अनजान प्रसंस्करण कि नौकरी सर्वर कठिनाइयों का सामना कर रहा था जारी रखा सकता है.
वास्तविकता में वहाँ अपने ग्रिड की स्थापना के लिए नहीं एक आदर्श विन्यास हो जाएगा, बहुत उपलब्ध संसाधनों, नौकरी, नौकरी प्रतिवर्तन समय आवश्यकताओं, नेटवर्क की क्षमता, और इतने पर के प्रकार पर निर्भर करता है. हालांकि कुछ दिशानिर्देश होगा:
- साइज नौकरियों इतना है कि प्रत्येक कार्यकर्ता को 15 घंटे की अवधि में कम से कम 3-4 जॉब (सबसे लंबे समय तक होने की संभावना निष्क्रिय समय अवधि) के माध्यम से प्राप्त कर सकते हैं
- नौकरी के आकार के साथ खेलो ताकि सेटअप समय काफी प्रसंस्करण समय (मन में ऊपर बिंदु असर) की तुलना में नगण्य हो जाता है.
- यदि एक नौकरी डबल समय की राशि (शायद कम) आप इसे पूरा करने के की उम्मीद में पूरा नहीं करता है यह लगता है कि अपने से चला गया AWOL और यह अन्य कार्यकर्ता के साथ प्रसंस्करण शुरू. इसका मतलब है आप तीन बार इसके लिए एक नौकरी की सामान्य लंबाई के लिए प्रतीक्षा को पूरा करने के लिए (संभवतः अब अगर बाद में काम विफल रहता है) हो सकता है. आप इस समय को कम करने के लिए, लेकिन नहीं यह भी बहुत कम है के रूप में आप एक नियमित आधार पर प्रसंस्करण कार्यों duplicating शुरू हो सकता है सावधान रहना चाहते हो सकता है.
- नौकरियां जितना संभव बाहर आवश्यकताओं के स्वतंत्र होना चाहिए. नौकरी सर्वर, उदाहरण के लिए, केवल और हर काम के शुरू और अंत में संपर्क किया जाना चाहिए.
- अपने नेटवर्क तर नहीं है, इस दो नकारात्मक प्रभाव पड़ेगा, अपने दिन कर्मचारियों नेटवर्क निराशा होती है और समस्याओं कनेक्शन बाहर एक समस्या यह है कि केवल बिगड़ के रूप में आप अपने ग्रिड पैमाने पर होगा समय के साथ अनुभव किया जा सकता है का उपयोग कर पाएंगे.
- सुनिश्चित नौकरियों अपने कार्यकर्ताओं पर चला सकते हैं. यदि नौकरियों भी स्मृति बन गहन या डिस्क स्थान गहन नौकरियों निरस्त शुरू करने के लिए और केवल एक बात तुम नोटिस हूँ कोई वास्तविक कारण के साथ कार्रवाई की नौकरियों की संख्या में एक बूंद है.
एक नौकरी के सबमिट परिणाम
जब एक नौकरी के परिणाम प्रस्तुत यह महत्वपूर्ण है कि परिणाम एक अन्य कार्यकर्ता द्वारा नहीं किया गया है प्रस्तुत किया है, खासकर अगर वर्तमान कार्यकर्ता कुछ समय के लिए निष्क्रिय किया गया है की जाँच करने के के लिए.
जब परिणाम प्रस्तुत कर रहे हैं सुनिश्चित करें कि परिणामों की संख्या नौकरी के भीतर अभिलेखों की संख्या से मेल खाता है.
जैसा कि पहले कहा, और अधिक पर जोर दिया, नौकरी की पुनर्प्राप्ति और परिणाम प्रस्तुत करने में दोष सहिष्णुता का निर्माण नहीं कर सकते. श्रमिकों कर सकते हैं (और सबसे अधिक संभावना होगी) को निलंबित मोड में जाने के समय की सबसे असुविधाजनक पर और इस की जरूरत के लिए catered करने के लिए. इसके अलावा एक बार फिर दूर अपने परिणाम प्रस्तुत करने abstracting अपने काम पर नियंत्रण बहुत आसान प्रणाली के साथ सौदा करने के लिए भविष्य परिवर्तन के लिए पूरा करने में मदद करेगा.
सारांश
इस section में हम एक नौकरी नियंत्रण सर्वर के लिए क्या करने की जरूरत पर ध्यान दिया है और कैसे प्राप्त करने के लिए एक बहुत ही बुनियादी प्रणाली स्थापित. हम चर्चा कैसे पुनः प्राप्त करने के लिए नियंत्रण प्रणाली से एक नौकरी और कैसे सबसे अच्छा करने के लिए नौकरियों को कॉन्फ़िगर करने के लिए सबसे अपने कार्यालय ग्रिड प्रणाली के हमारे. खत्म करने के लिए, या परिणाम प्रस्तुत वापस काम पर नियंत्रण सर्वर पर पैरा दो पेश किया गया.
- एक काम पर नियंत्रण सर्वर नौकरियों और यह सुनिश्चित करता है कि सब काम इकाइयों पूरा कर रहे हैं का प्रबंधन
- अपने काम का चयन परिणाम प्रस्तुत / abstracting करके हम ज्यादा समस्याओं के बिना नियंत्रण सर्वर के प्रौद्योगिकी बदल सकते हैं
- अपनी नौकरियों को कॉन्फ़िगर करने के लिए सुनिश्चित करें कि वे जल्दी से और कुशलता से अपने नेटवर्क बुनियादी सुविधाओं पर बहुत अधिक दबाव डालने के बिना चलाए जा रहे हैं, और प्रसंस्करण एक नियमित आधार पर कार्य duplicating के बिना.
- सुनिश्चित करें कि आप गलती सहिष्णुता और अपनी दिनचर्या में त्रुटि checking निर्माण, श्रमिकों को निलंबित और फिर से शुरू कर सकते हैं और समय की सबसे असुविधाजनक. चेक यदि परिणाम पहले से ही एक अन्य कार्यकर्ता द्वारा दर्ज़ हो गया है याद रखें.
अगली बार
इन भाग 3 हम अपने आभासी प्रसंस्करण मशीन बनाने के लिए और हमारे खिड़कियां मशीनों को सेट करने के लिए निष्क्रिय समय श्रमिकों बन हूँ .