الفئة : برمجة الويب

توجيه طلبات إلى وحدة تحكم عن sitemap.xml مخصص / عمل

من جانب ، الأربعاء 6 يناير 2010 12:13

من أجل طلبات مباشرة لل/ sitemap.xml إلى وحدة تحكم مخصصة الخاص والعمل في إطار زند التطبيق ببساطة إضافة التالية في application.ini الخاص أو بديلة ملف التكوين (على سبيل المثال يمكنني استخدام navigation.ini) :

 resources.router.routes.sitemap.route = "sitemap.xml"
 = مؤشر resources.router.routes.sitemap.defaults.controller
 = خريطة resources.router.routes.sitemap.defaults.action

ويمكن رؤية رمز المثال لإخراج العمل من خلال إنشاء وحدة تحكم في المناسبة (على سبيل المثال خريطة بلدي يكمن في وحدة تحكم الفهرس ، خريطة العمل) :

 < فب
 فئة IndexController
     يمتد Zend_Controller_Action
 {
     / **
      * يجعل من خريطة على أساس الإعداد Zend_Navigation
      * /
     الجمهور sitemapAction الدالة ()
     {
    	 صدى دولار هذا -> عرض -> الملاحة () --> خريطة () ؛
    	 دولار هذا -> عرض -> تخطيط () --> disableLayout () ؛
    	 دولار هذا -> _helper -> viewRenderer -> setNoRender (صحيح) ؛
     }
 }

ويمكن بسرعة وبسهولة يمكن إنشاؤها باستخدام خرائط مواقع Zend_Navigation ، تعليمي كبير السريع (وعموما مفيدة جدا للدروس الإطار زند) هي مصنوعة من الجبس زند -- خلق ديناميكية قائمة خريطة موقع وفتات الخبز .

زند إطار كل وحدة تستند الإعدادات

من جانب الجمعة 1 يناير 2010 22:40

لقد خلقت متابعة لهذا المنصب الذي يتطلب أقل التكوين ، يرجى الاطلاع على تخطيط وبناء وحدة -- الإطار زند .

عند استخدام إطار زند مع الوحدات ، واضح في أنه إذا كنت تقوم بتشغيل مختلفة (من الباطن) مواقع قبالة نفس التطبيق كنت لا تريد بالضرورة نفس تخطيط البرامج النصية لكل جزء. قررت أن أذهب مع بنية الموقع التالي :

  / التطبيق
     / تحكم
         ...
     / النماذج
     / وحدات
         / الافتراضي
             / تحكم
             / تخطيط
                 / البرامج النصية
             / آراء
                 / البرامج النصية
         / anotherModule
             ...
     / البرامج النصية

كانت المشكلة إعداد تخطيط البرامج النصية على أساس لكل وحدة. وجاء الجواب من خلال استخدام مساعد العمل. إنشاء تخطيطات على أساس كل وحدة تتضمن ثلاث خطوات :

  1. Application.ini (أو ما شابه ذلك الإعداد التكوين) :
      admin.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / مشرف / تخطيطات / مخطوطات"
     default.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / الافتراضي / تخطيطات / مخطوطات"
     member.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / عضو / تخطيطات / مخطوطات"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ وحدات / التابعة / تخطيطات / مخطوطات" 
  2. إنشاء مساعدك العمل :
      <؟ PHP
     / **
      * يضبط مسار التخطيط على أساس كل وحدة
      *
      * كاتب واحد ويد واتكن @ <lloyd@evilprofessor.co.uk>
      * @ منذ 2010/01/01
      * /
     فئة Pro_Controller_Action_Helper_SetLayoutPath
         يمتد Zend_Controller_Action_Helper_Abstract
     {
         / **
          * يضبط مسار التخطيط على أساس وحدة
          * /
         الجمهور preDispatch الدالة ()
         {
        	 $ الوحدة = دولار هذا -> getRequest () --> getModuleName () ؛
    
    	     إذا دولار (= دولار هذا التمهيد -> getActionController ()
    	                        --> getInvokeArg ('التمهيد')) {
    
    	         = $ $ التكوين التمهيد -> getOptions () ؛
    
    	         اذا (isset ($ التكوين [$ وحدة] ['الموارد'] ['تخطيط'] ['layoutPath'])) {
    	             layoutPath $ =
    	                  [وحدة $] $ التكوين ['الموارد'] ['تخطيط'] ['layoutPath'] ؛
    	             دولار هذا -> getActionController ()
    	                  --> getHelper ('تخطيط')
    	                  --> setLayoutPath ($ layoutPath) ؛
    	         }
        	 }
         }
     } 
  3. وأخيرا boostrap المساعد العمل :
      ...
         / **
          * يقوم بإعداد تخطيط البرامج النصية على أساس كل وحدة
          * /
         وظيفة حماية _initLayoutHelper ()
    	 {
    	     دولار هذا -> التمهيد ('frontController') ؛
    	     $ = تخطيط Zend_Controller_Action_HelperBroker : addHelper (
    	         Pro_Controller_Action_Helper_SetLayoutPath الجديدة ()) ؛
    	 }
     ... 

المذهب : الافتراضي DATETIME NOW ()

من جانب ، الأربعاء 30 ديسمبر 2009 18:30

لقد كنت تناضل مع إنشاء قاعدة بيانات لمخطط جديد زند إطار المشروع. ابن به محاولة استخدام المذهب ORM لنماذج قاعدة البيانات الخاصة بي. ولست بحاجة لإعداد المخطط بحيث أنه سمح لي لتحديد موعد ووقت الافتراضية لعمود `التاريخ والوقت ، على سبيل المثال عند إضافة رسالة جديدة أحصل على الطابع الزمني الحالي. بعد البحث وتجريب الكثير وجدت الحل لذلك أنا تقاسمها.

في المخطط الخاص YAML ملف تفعل ببساطة ما يلي :

 الرسالة :
   actAs :
     Timestampable :
       الانشاء :
         الاسم : created_at
         اكتب : الطابع الزمني
         التنسيق : Ymd H : الأول : ليالي
       تحديث :
         الاسم : last_updated
         اكتب : الطابع الزمني
         التنسيق : Ymd H : الأول : ليالي
   أعمدة :
     اسم المستخدم :
       اكتب : صحيح
       الأساسي : صحيح
       autoincrement : صحيح
     الاسم : سلسلة (255)
     البريد الإلكتروني : سلسلة (300)
     الرسالة : سلسلة (2000)

إذا من ناحية أخرى لا يريدون `updated_at` العمود يمكنك استخدام ما يلي :

 الرسالة :
   actAs :
     Timestampable :
       الانشاء :
         الاسم : created_at
         اكتب : الطابع الزمني
         التنسيق : Ymd H : الأول : ليالي
       تحديث :
         المعاقين : صحيح
   أعمدة :
     اسم المستخدم :
       اكتب : صحيح
       الأساسي : صحيح
       autoincrement : صحيح
     الاسم : سلسلة (255)
     البريد الإلكتروني : سلسلة (300)
     الرسالة : سلسلة (2000)

تصميم أنماط PHP -- خطة المراقب

من جانب الثلاثاء 29 ديسمبر 2009 22:02

لقد قرأت أنماط رئيس التصميم الأولى مؤخرا ، وقررت أن أكتب بعض أنماط كأمثلة PHP لمصلحة بلدي. أول واحد أنني قررت أن تصل هي رمز نمط المراقب . التعريف الرسمي للنمط المراقب هو :

نمط المراقب (مجموعة فرعية من غير متزامن نشر / نمط الاشتراك ) هو برنامج تصميم النمط الذي فيه الكائن ، ودعا هذا الموضوع ، وتحتفظ بقائمة من المعالين ، ودعت مراقبين ، ويخطر لهم تلقائيا أي تغييرات حالة ، وعادة عن طريق الاتصال واحد من هذه الأساليب . وهي تستخدم أساسا لتنفيذ النظم الموزعة معالجة الحدث.

كما نظم تصبح أكثر المتباعدة التأكد من أنه عندما حدث يحدث في جميع الأنظمة التي تتطلب معرفة وعلم من هذه التحديثات. على سبيل المثال ، بلوق وظيفة ، وبعد توفير وظيفة قد نحتاج لتحديث محرك البحث (على سبيل المثال Lucene) ، وتحديث خريطة لدينا ، والعلامات ، مستخدمي البريد الإلكتروني المشتركين ، وما إلى ذلك النمط المراقب تسمح للمطورين إضافة المستمعين إضافية دون تحرير موضوعها ملاحظتها . عن طريق حقن المراقبين (أي مراقب بحث تحديث محرك ومولد خريطة الموقع ، الخ) في موضوع (أي نظام آخر بلوق التحرير) يمكن أن نسمح لتنفيذ كافة التحديثات الضرورية من دون أية تغييرات.

متابعة "تصميم أنماط PHP -- خطة المراقب" القراءة »

مكتب بيئات الحوسبة الشبكية باستخدام الظاهري -- الجزء 4

من جانب الجمعة 4 ديسمبر 2009 11:59

مقدمة

أنا أعمل في شركة حيث نقوم بتشغيل العديد من الوظائف دفعة معالجة الملايين من سجلات البيانات في كل يوم ، ولقد تم التفكير في الآونة الأخيرة عن جميع الآلات التي تجلس حولها كل يوم تفعل شيئا لعدة ساعات. لن يكون من الجيد لو استطعنا استخدام هذه الأجهزة لتعزيز قوة المعالجة أنظمتنا؟ في هذه المجموعة من المقالات انا ذاهب للبحث في الفوائد المحتملة لاستخدام مكتب الشبكة باستخدام البيئات الافتراضية.

في الجزء 3 أنشأنا لدينا آلة تجهيز مجموعة الظاهري والنوافذ آلات ليصبح خاملا وقت العمال.

تشغيل أحدث كود

حتما بعد خلق منطق عملك العمال سوف تتغير ، سيتم العثور على البق ، وسوف تنتج رمز أسرع أكثر كفاءة وبالتالي ترك العمال الخاص تجلس تجهيز البيانات باستخدام رمز كريه الرائحة القديمة . فكيف نضمن أننا دائما باستخدام الإصدار الأحدث والأكبر من تجهيز النصوص لدينا؟

هناك عدد قليل من طرق بسيطة سهلة للغاية يمكننا القيام بذلك ، خدعة ، ولكن ، للحد من قوة المعالجة ، وحركة مرور الشبكة في تحقيق ذلك. لنبدأ مع أبسط الحلول وتحسينه ببطء على مدى بضعة تكرارات.

والأسلوب الأول هو ببساطة أوصل لدينا وظيفة الخادم التحكم (عن طريق سامبا ، FTP ، أو ما شابه ذلك) ، وهدم أحدث نسخة من التعليمات البرمجية. ليست فعالة جدا ، ولكنه سوف قيام بهذه المهمة. يتيح تحسين لذلك إلى حد ما ، عن كيفية إنشاء واستخدام rsync النصي أنه في كل مرة بدلا من ذلك؟ بدلا من ذلك ماذا عن وضع سيناريو لدينا احدث تجهيز التخريب في التحقق من رمز في البداية ومن ثم استكمال مجرد رمز لنا في كل تشغيل ( إس التحديث

في النهاية نستطيع في نهاية المطاف مع نصي باش (ويطلق عليه كرون كل 10 دقائق) والتي تبدو بسيطة مثل هذه :

  #! / بن / ش
 إذا PS الفأس | GREP - V GREP | GREP PHP > / ديف / لاغية
 ثم
     صدى "حاليا على تجهيز وظيفة ، خروج"
 آخر
     صدى "وظيفة ليست قيد التشغيل ، يبدأ الآن"
     CD / مسار / إلى / العمل / نسخة
     إس التحديث
     فب yourJobProcessingScript.php
 فاي 

الآن يمكننا أن نتأكد من أن تشغيل مع بعضها ونحن بالتأكيد تشغيل أحدث الرمز. نحن ضمان ذلك من خلال تحديث قاعدتنا رمز في كل مرة نقوم بإجراء تشغيل والحد من حركة مرور الشبكة فقط عن طريق نقل ملف الخلافات عبر شبكتنا.

مظاهرة في الإعداد بلدي ، وأنا فعلت تماما كما سبق. تم تثبيت التخريب على وظيفتي وأنا خادم تجهيز انسحب ببساطة رمز آخر من فرع 'عامل' باستخدام 'إس التحديث. أود أيضا أن أضيف العلامة رقم الإصدار النصي لمعالجة بلدي الذي كان عاد إلى قاعدة البيانات كجزء من عودة النتائج. بهذه الطريقة يمكن أن أرى أنه يجري تحديث قانون بلدي في كل مرة أقوم نسخ الجذع بلدي في أي فرع للعامل الذي كنت اخوض بالتأكيد النصي أحدث التجهيز.

باستخدام أحدث البيانات

إذا كان عملك تجهيز يجعل من استخدام مصادر البيانات بعد ذلك في بعض هذه النقطة سوف تكون محدثة للغاية. إلا إذا كنت مكالمتك مصادر البيانات على أساس نادرة جدا وأنت تسير في الفيضانات شركتك مع حركة المرور بمجرد بدء تشغيل العاملين لديك كل ما يصل إلى طريق مسدود. حل لبلادي قررت ان كنت ترغب في نقل مصادر البيانات الخاصة بي مع نظام رصد السفن في جميع أنحاء بلدي.

عقد كنت الخيول هناك! ماذا لو مصادر بيانات ضخمة بلدي؟ حسنا هذا هو في الحقيقة حالة كمية البيانات التي نتحدث؟ قد يكون أكثر فعالية من حيث التكلفة لتثبيت محرك الأقراص الثابتة أكبر إضافية في كل من الجهاز الخادم لشراء معالجة إضافية. هذا هو السؤال الميزانية ومتروك لرجال الأعمال لاتخاذ قرار. انها ربما كانت مصادر البيانات هي من الضخامة بحيث به غير مجد فقط للحفاظ على هذه الكمية من البيانات في الأجهزة ملفك. في هذه الحالة ماذا ستفعل؟ كذلك يمكن أن ننظر إلى دعوة خادم البيانات المحلية ، ولكن هذا قد يسبب مشاكل مع الشبكة. في هذه الحالة يجوز لنظام الشبكة مثل هذا يصبح من غير الواقعي أن تدرج في بيئة مكتبك. قد يكون أيضا أنك يمكن أن ننظر إلى استراتيجيات بديلة للتشغيل ، على سبيل المثال فقط استدعاء العاملين لديك 20:00 حتي 6:00 كل ليلة و / أو اختناق تطلب مصدر البيانات.

الانتقال دعنا نقول لدينا كمية البيانات إلى مصادر البيانات 100GB. نعم هذا جيد لا بأس به من البيانات إلى التحرك في جميع أنحاء الشبكة على التحديث. كيف يمكننا أن نضمن أن لدينا أحدث نسخة من البيانات في هذه الحالة؟ Rsync هو احتمال ، ولكن شخصيا اعتقد ذلك بتشغيل المصدر أحدث البيانات عن عملك خادم تجهيز وإعداد هذه الخطوة باعتبارها الماجستير في النسخ المتماثل (مع تسجيل بن لفترة طويلة لطيفة) قد تكون وسيلة للذهاب :

تكرار وسوف عن طريق تحديد كل من العاملين لديك على النحو عبدا لعمل التحديثات خادم السيطرة على مصادر البيانات تنساب بشكل جيد للعاملين في الخاص دون زيادة كبيرة في نشاط شبكة الاتصال (وهذا ما لم يتم إجراء تحديث بيانات ضخمة وجميع العاملين في ركلة الخاص مرة واحدة). هذا وقد مزايا على rsync في أنك لن تحصل على وقفة طويلة قبل كل مهمة ؛ مثل تحديث قاعدة البيانات ، و الخلية الخفي على ملفك سيتم تحديث بياناته باستمرار في حين أن معالجة مستمرة.

هذا هو كيف أقوم بإعداد خدمة بلدي المظاهرة. لإعداد النسخ المتماثل تابعت دليل على موقع ماي ( إعداد النسخ ) ، وخلال 20 دقيقة كان لي عامل بلدي inital تكرار مجموعة البيانات المهمة ملقمات السيطرة. عن كل عامل إضافي عملت إعدادات النسخ وعملية في كل مرة عندما تم نسخ VM.

ملخص

في هذا المقطع من مقالة لدينا نظر في كيفية سهلة وغير مؤلم هو للحفاظ على مشاركاتك تجهيز ما يصل إلى التاريخ أو using rsync subverion (SVN) للقيام بهذا العمل والحد من حركة مرور الشبكة في نفس time. ناقشنا أيضا كيف للحفاظ على معلوماتك مصدر بيانات تصل إلى التاريخ من خلال السماح لتنساب إلى كل من العاملين لديك. وبالتالي نحن علينا التأكد من أن المنطقة مواكبة منطق الأعمال والمعلومات في مكتبنا نظام الشبكة. ستكون هناك بدائل لا تعد ولا تحصى من الواضح أن أداء هذه المهام ، ولكن كانوا هنا مثالين بسيطة لإظهار مدى سهولة الحل هو أن يأتي من قبل.

المرة التالية

في الجزء الأخير من هذه السلسلة ، اسم على مسمى الجزء 5 ، وسوف نناقش هذا النظام للنشر. وسوف ألخص ما تم تعلمه وما تمكنت من خلق.

مكتب بيئات الحوسبة الشبكية باستخدام الظاهري -- الجزء 3

من جانب الجمعة 4 ديسمبر 2009 23:37

مقدمة

أنا أعمل في شركة حيث نقوم بتشغيل العديد من الوظائف دفعة معالجة الملايين من سجلات البيانات في كل يوم ، ولقد تم التفكير في الآونة الأخيرة عن جميع الآلات التي تجلس حولها كل يوم تفعل شيئا لعدة ساعات. لن يكون من الجيد لو استطعنا استخدام هذه الأجهزة لتعزيز قوة المعالجة أنظمتنا؟ في هذه المجموعة من المقالات انا ذاهب للبحث في الفوائد المحتملة لاستخدام مكتب الشبكة باستخدام البيئات الافتراضية.

في الجزء 2 ألقينا نظرة على وظيفة خادم سيتم تشغيل ، وكيف يجب أن يتم تكوين فرص عمل من أجل تحقيق أكبر قدر من التجهيز مع ضمان أن تتم معالجة كل وظيفة دون أن تفشل.

إنشاء عامل الخاص بك -- أو خادم يعرج

الخطوة التالية في العملية هي إعداد العاملين لديك الظاهري. لهذا انا ذاهب الى استخدام تركيب centOS فيرتثلبوإكس به. انا ذاهب الى تثبيت الخلية و PHP على الخادم ، المعروف أيضا باسم Server (لي جوز ، ySQL م ، ف HP) يعرج (ربما أكون قد أدلى بهذا الاسم متابعة).

  • فيرتثلبوإكس تثبيت الجهاز على ويندوز الخاص بك (اتبع الرابط)
  • تحميل وتثبيت centOS (الإصدار الحالي 5.3) داخل آلة افتراضية تم إنشاؤها

ليس هناك نقطة ذهابي إلى هذا هناك على الارجح 1000 "ليالي من الدروس العظيمة الى هناك (حسنا ، وهنا واحد : خلق وManaging الجهاز الظاهري centOS تحت فيرتثلبوإكس ). نقطة المهم أن نلاحظ أفترض أن اتصلت بي آلة افتراضية GridMachine.

بقدر ما خياراتي العميل الافتراضية ونظام التشغيل نذهب الى هناك وجود سبب قاهر كبيرة لكل خيار. فيرتثلبوإكس شيء يمكنني استخدام الجهاز على بيتي ومعتمد من قبل أنظمة التشغيل الرئيسية الثلاث. اخترت centOS باعتبارها OS استقرارها جيدة ويمكنني استخدامه على خادم الويب الخاصة بي. انا مؤمن كبير في الأدوات المناسبة لهذا المنصب (على الرغم من انني تطبيق "استخدام أسرع وأسهل بالنسبة لك" عقلية هنا) ، حتى إذا كان نظام التشغيل X يدير مشاركاتك أسرع وأكثر كفاءة استخدام هذا بدلا من ذلك :)

جعل الأهم على يقين من أن يستخدم DHCP VM الخاص ، وإلا لآلة كل الظاهري الجديد سوف تحتاج إلى أن يتم تكوين بشكل منفصل وهو ما نقوم به لا تستخدم DHCP want.By نحن لسنا بحاجة لتكوين إعدادات الشبكة بشكل فردي لآلات العمال ، وسوف DHCP اليد المتكاملة للكم. لذا يمكنك نسخ الجهاز الظاهري عن المكتب دون الحاجة إلى القلق حول وضع كل واحد حتى (وهذا تحسن قابلية الإدارة ، ويقلل عامل).

فإن هذه العملية يجب أن يكون الهدف لتحقيق الحصول على آلة جديدة البدنية وتثبيت فيرتثلبوإكس ، والى حد كبير ثم نشر الصورة الظاهرية من دون الكثير من غيره. قد يكون من الحكمة لإعداد كل ما تبذلونه من العمال على شبكة فرعية مختلفة بحيث يمكنك على الأقل نرى كيف العديد من الآلات هي على التوالي. سوف تحتاج أيضا إلى إعداد الأجهزة الخاصة بك على الإيجار طويلة أو غير محدودة DHCP التأجير.

كيفية تشغيل وظائف على العامل

هذا هو مجال اهتمام وهناك طرق عديدة لصالح تجهيز الوظائف على العامل. هنا سوف أناقش فقط وهما الأكثر وضوحا :

  • يشغل على الدوام النصي : برنامج نصي ، سواء كان ذلك نصي قذيفة ، أو يتم تنفيذ البرنامج النصي PHP مرة واحدة على العمال ويعمل كجزء من حلقة لا نهائية. لقد مخفضة أنا هذه الطريقة واحدة من سيناريو تحطم وربما عمالك ستتوقف لتشغيل بدون نوعا من التدخل.
  • كرون تنفيذ البرنامج النصي إلى : كل دقيقة X البرنامج الخفي كرون تنطلق استدعاء البرنامج النصي للحصول على اشياء اخرى. دون التحقق من بعض وهذا يمكن أن يؤدي إلى نسخ عديدة من العامل الخاص بتشغيل البرنامج النصي.

وكان قرار لي للذهاب مع كرون التي تنطلق نصي قذيفة كل minutes. 10 قذيفة النصي بلدي بتنفيذ المهام التالية :

  1. الحصول على قائمة هذه العملية وGREP ل 'بى. إذا لم يتم العثور على مواصلة ذلك الحين.
  2. استدعاء رمز عملك ، في حالتي فإن ذلك سيكون شيئا تستند PHP
  3. النصي عامل يكمل مساره
  4. على استعداد للذهاب مرة أخرى على دعوة مناسبة المقبل

مخطوطتي باش يبدو شيء كما يلي :

  #! / بن / ش
 إذا PS الفأس | GREP - V GREP | GREP PHP> / ديف / لاغية
 ثم
     صدى "حاليا على تجهيز وظيفة ، خروج"
 آخر
     صدى "وظيفة ليست قيد التشغيل ، يبدأ الآن"
     فب yourJobProcessingScript.php
 فاي 

ملاحظة : صدى تكاد تكون بلا جدوى تماما ، ولكن قد تساعد الشخص التالي الذي يأتي على طول لمحاولة تحريرها.

أن يختتم إعداد الجهاز العامل الظاهري ، سريعة وبسيطة وسهلة لنسخ كل قطعة جديدة من الأجهزة التي يتم تلقيها. في "شطارة" في النظام الشبكي في الحقيقة ليست في نظام التشغيل تصور ، في كل علاقة مع رمز لعملية خلق الوظائف ، وتكوين فرص العمل ، والتأكد من أن يدير العمل عندما يكون ذلك مناسبا (أي عندما المضيف خاملا ).

إعداد Windows لInitialise العمال

المهمة الأولى هي العمل على الأمر المطلوب لتشغيل الجهاز الظاهري من سطر الأوامر النوافذ. إذا كنت قد قمت بتثبيت فيرتثلبوإكس في الموقع الافتراضي وقمت المسمى الخاص GridMachine عامل ثم الأمر المطلوب لتحميل العامل الخاص هو :

  "C : \ ملفات البرنامج \ أحد \ فيرتثلبوإكس \ VBoxManage.exe" startvm GridMachine 

ولكن لتشغيل البرنامج النصي في حالة 'مقطوعة الرأس" نحن بحاجة إلى استخدام :

  "C : \ ملفات البرنامج \ أحد \ فيرتثلبوإكس \ VBoxHeadless.exe" - startvm GridMachine -- vrdp = إيقاف 

وهذا بدء تشغيل الجهاز الظاهري دون واجهة المستخدم الرسومية ، والسماح لإنقاذ الدولة بأمان. الوسيطة الثانية إيقاف RDP بحيث لا تتعارض مع RDP النوافذ ، أو تعطيك رسالة حول الاستماع على منفذ 3389. اسم الجهاز الظاهري هو قضية حساسة!

المقبل ، وسوف نحتاج إلى ضبط النوافذ حتى تنطلق VM لدينا عامل مرة واحدة الجهاز خاملا. للقيام بذلك (على نظام التشغيل Windows XP) ستحتاج للذهاب ابدأ --> كافة البرامج --> الملحقات -- أدوات النظام> --> المهام المجدولة على النحو التالي :

جدولة المهام

القادم انقر على 'إضافة مهمة مجدولة" يليها استعراض لإضافة برنامج مخصص. انتقل إلى VBoxManage النصي الخاص بك ، وانقر فوق موافق. جدول مهمتك لأي من الخيارات (سنقوم بتغيير هذا في دقيقة واحدة) ومتابعة. بعد تخطي الشاشة التالية سوف يطلب منك النوافذ الذي تريد تشغيل هذه المهمة ، سواء كنت تشير الى "مسؤول" أو إنشاء مستخدم جديد متميز. نتذكر أننا لا نريد التدخل في حساب الموظفين المعيارية على الجهاز عند أي نقطة. انقر المقبل والتحقق من عرض خيارات متقدمة لهذه المهمة.

إلى نهاية مربع النص تشغيل ترك unticked إضافة لدينا "startvm GridMachine' سلسلة وضمان تشغيل فقط عند تسجيل الدخول. زيارة المهمة القادمة وجدول تغيير الجدول المنسدلة إلى الخيار "عند الخمول ، اختيار مقدار الوقت الذي ترغب أن يكون الجهاز خاملا قبل الانتقال إلى علامة التبويب المقبل.

untick أخيرا الخيار الذي ينص على وقف العمل إذا كان قد تم تشغيل X مبلغ من الوقت ، ولكن لا علامة على خيار إيقاف المهمة إذا كان الجهاز لم يعد خاملا.

جدول

هذا كل شيء ثم لإعداد المضيف النوافذ!

ملخص

في هذا الجزء أنشأنا جهاز ظاهري ليكون بمثابة عامل ، فضلا عن الطريقة التي نسميها وتنفيذ البرامج النصية لدينا تجهيز وظيفة (لنفسي النصي PHP). من هنا فإننا ننظر إلى كيفية إعداد لدينا نسخ من ويندوز لبدء الجهاز الظاهري في وضع مقطوعة الرأس عندما يصبح الكمبيوتر خاملا ، وإنقاذ حالته عندما يستأنف المستخدم استخدام الجهاز. نأمل في هذه المرحلة كنت ترى كيف بسيط هو لاقامة مثل هذا النظام والحكة للحصول على بعض التجارب الجارية نفسك!

المرة التالية

في الجزء 4 سنكون يبحث في استخدام الأدوات لضمان أن تقوم بتشغيل أحدث إصدار من مصادر التعليمات البرمجية والبيانات بحيث يتم الحصول على النتائج دائما ما يصل إلى موعد مع أحدث معلومات الأعمال والمنطق.

مكتب بيئات الحوسبة الشبكية باستخدام الظاهري -- الجزء 1

من جانب الجمعة 4 ديسمبر 2009 11:23

مقدمة

أنا أعمل في شركة حيث نقوم بتشغيل العديد من الوظائف دفعة معالجة الملايين من سجلات البيانات في كل يوم ، ولقد تم التفكير في الآونة الأخيرة عن جميع الآلات التي تجلس حولها كل يوم تفعل شيئا لعدة ساعات. لن يكون من الجيد لو استطعنا استخدام هذه الأجهزة لتعزيز قوة المعالجة أنظمتنا؟ في هذه المجموعة من المقالات انا ذاهب للبحث في الفوائد المحتملة لاستخدام مكتب الشبكة باستخدام البيئات الافتراضية.

ك PHP المطور انا ذاهب الى استخدام الأدوات التي تستخدم في كل يوم وهي لينكس ، و الخلية ، PHP ، فيرتثلبوإكس والتخريب (SVN). ومع ذلك آمل أن يكون هذا الدليل سوف التكيف مع اللغات الأخرى ، وكذلك التكنولوجيات فقط.

وسوف يكون الحل الأول تقديم فضفاضة جدا استنادا إلى نوع من المعالجة كنا بحاجة إلى تحقيق ولكن هذا قد لا يكون صحيحا من خلال المادة بكاملها وأنا سوف تغير أشياء عن البساطة ، أو لإنتاج سيناريوهات الاستخدام أكثر إثارة للاهتمام.

وهذه البيئات virtualised تشغيل النوافذ على الأجهزة لأن هذا هو ما غالبية مكاتب التشغيل. تجهيز الآلات المكتبية التي لا يجب أن لا تتداخل مع الموظفين الذين يستخدمون تلك الآلات ، ينبغي أن لا تحتاج إلى الصيانة في الجهاز ، ويمكن نشرها بسهولة إلى الأجهزة الجديدة عندما تصبح متاحة. أيضا ، يجب أن الأجهزة الظاهرية الجديدة لا تتطلب أي تكوين إضافي لأن هذا يقلل كثيرا من التدرجية وسهولة التي يمكن أن تمتد لنظام الشبكة.

لماذا نشر الحوسبة مكتب الشبكة؟

أولا كنت قد يكون التفكير ، لماذا لا مجرد استخدام الموارد الحوسبة السحابية مثل منصة EC2 الأمازون ؟ كذلك يمكن أن تكون أسباب عدة ، على سبيل المثال :

  • فلن يكلف بعض البيانات إلى بيئة الحوسبة السحابية
  • لا يمكنك وضع بعض البيانات في بيئة الحوسبة السحابية لأسباب قانونية (مثل البيانات مغادرة البلاد) ، يحتمل أن تكون لأسباب قانونية ، مثل سجلات NHS.
  • كنت تريد أن تبقي وحدات المعالجة الخاصة بك وثيقة ولها السيطرة الكاملة على الأجهزة جدا
  • ليس لديك أموال المشاريع لتشغيل مثيلات سحابة
  • مكتبك لايوجد اتصال بالإنترنت ، وبالتالي ، ليس من الممكن استخدام الموارد سحابة
  • كنت لا تحب المطر والغيوم توحي المطر ، وبالتالي يجب الابتعاد تماما

أنا متأكد من أن القائمة يمكن أن يستمر ، ولكن أعتقد أن هذا يكفي في الوقت الراهن.

مزايا مكتب الشبكة الحاسوبية

كذلك ، يتيح القيام ببعض الرياضيات (والفيزياء في الاسلوب الصحيح يتيح تقديم بعض الافتراضات التي تجتاح). تخيل لديك كبير سمين تشغيل خادم تجهيز 100 وظيفة في اليوم الواحد. في مكتبك لديك 50 الآلات التي عاطلة 16 ساعة في اليوم ، كل من هذه الأجهزة هي 10 ٪ قويا مثل قطع التجهيز الخاص سمين. (يتم تقريب كل النتائج هنا أن نقلل زيادة الأداء).

لذا ، يمكن السلطة آلة 1 * 10 ٪ * 03/02 = 0.067 أي وقت التجهيز المكتبي 1 في الوقت الضائع 6 الوظائف العملية الكاملة يوميا.

اذا كنت الآن على نطاق هذا الأمر يستغرق 15 المكتبية الخمول وظائف لعملية ما يصل يوميا اعتبارا خادم تجهيز الرئيسي لا.

حتى في مكتبنا التظاهر من 50 آلة يمكن ان نزيد قوتنا من 1 خادم تجهيز ما يصل إلى 4 خوادم معالجة كاملة ، أو أننا يمكن تجهيز 400 وظيفة في اليوم الواحد بدلا من 100.

اشعار عن أي استثمار في المعدات الجديدة وزادت الشركة طاقتها فقط تجهيز الدفعات 4 مرات! من المحتمل أنك ذاهب الى زيادة استخدام الطاقة الخاصة بك ولكن من أكثر البيئات المكتبية لقد كنت في الآلات هي اليسار عموما على أي حال بين عشية وضحاها ، لذلك هل يمكن أن نرى في ذلك المبادرة الخضراء.

مزايا أخرى يعني أيضا أن الاستثمار في جديد (أو تحديث) يمكن تأخير تجهيز خوادم إذا الآلات المكتبية الخاص كافية وأنه يمكنك تحسين قوة آلات مكتبك شبكة مكتبك يصبح أكثر قوة تلقائيا.

تكنولوجيات

ماذا تحتاج؟ (أو أكثر بشكل صحيح ما لم أستخدمها) :

  • الآلات المكتبية الخمول (في حالتي على تجنيب الكمبيوتر المحمول القديمة ويندوز إكس بي)
  • فيرتثلبوإكس (أو آخر برنامج العميل الافتراضية)
  • جهاز ظاهري مع PHP و MySQL running تشغيل خفض OS ، ادعو هذه الملقمات بلدي يعرج :)
  • فرص عمل لتشغيل
  • وظيفة الخادم (جهاز آخر يمكن أن يكون في مكان ما الظاهري)

النمطية وظائف

أنواع الوظائف التي تم تصميم هذا النظام لتشغيل كما يلي :

  • نظام يتلقى قائمة على البيانات التي نحتاج لمباراة العودة والنتائج
  • يتضمن التدقيق مطابقة / تبحث عدة (جامدة إلى حد ما) مصادر البيانات
  • قد تنتج من مصادر البيانات تتطلب التحقق من صحة مزيد من الاندماج ، والتحقق من مصادر بيانات إضافية استجابة للنتائج
  • يتم إرجاع سجلات متطابقة مع البيانات والتحقق من صحتها ومعالجتها بشكل كامل
  • داخل كل سجل على وظيفة مستقلة عن بقية

أساسا لذلك نحن نبحث في تشغيل الوظائف التي تتطلب مزيجا من عمليات البحث قاعدة البيانات وبعض عدد الطحن ، سيناريو نموذجي إلى حد ما في بيئة العمل.

حلول الشبكة ليست مفيدة فقط للتجهيز وظائف من هذا النوع. في الأساس ، يمكن تشغيل أي العملية التي يمكن تقسيمها الى وحدات مستقلة بشكل متواز. شاهد ويكيبيديا للحصول على أمثلة ومزيد من المعلومات : الحوسبة الشبكية ، ولكن اثنين من الأمثلة الشهيرة سيتي @ المنزل و BIONC . هناك أطر لإدارة الشبكات الحاسوبية ، وهذه تستحق النظر في.

ماذا نحقق؟

بحلول نهاية هذه المقالات وآمل أن تبين أن نشر على شبكة المكاتب لا يلزم أن يكون مضيعة مكلفة جدا أو الوقت. انا ذاهب الى مناقشة ما يلي :

  • إنشاء نظام مراقبة وظيفة التكوين وظيفة ،
  • إنشاء آلة التجهيز المناسب الظاهري
  • كيفية إعداد نظام ويندوز على جهاز
  • ضمان كنت تستخدم أحدث التعليمات البرمجية والبيانات
  • نشر والقياس
  • واستشرافا للمستقبل

سأكون بناء (موافق أنني بنيت ، ثم كتب هذا؟) تطبيق مثلا لاختبار على جهاز المفاهيم المحلية باستخدام ويندوز إكس بي بي "GridMachine" الجهاز الظاهري. وخدمة بلدي وظيفة الرقابة تكون الآلة الرئيسية التي تدير فيدورا 11 .

يقصد به هذا لا يعني اطلاقا أن يبرهن على وجود نظام العمل بالكامل قوية ، وأكثر من مظاهرة ومناقشة تبين أنه لا يمكن تحقيق هذه الأمور في فترة قصيرة معقولة من الوقت وبتكلفة زهيدة. لا تتردد في ارسال لي أي تعليقات ، التصحيحات أو التحسينات وسأبذل قصارى جهدي للحفاظ على هذه المادة المحدثة للمباراة.

المرة التالية

في الجزء 2 سأبدأ من خلال النظر في وظيفة نظام مراقبة ، والنظر في الكيفية التي ينبغي أن يتم تكوين فرص عمل من أجل تحقيق أكبر قدر من التجهيز مع ضمان أن تتم معالجة كل وظيفة دون أن تفشل.

مكتب بيئات الحوسبة الشبكية باستخدام الظاهري -- الجزء 2

من جانب الجمعة 4 ديسمبر 2009 11:23

مقدمة

أنا أعمل في شركة حيث نقوم بتشغيل العديد من الوظائف دفعة معالجة الملايين من سجلات البيانات في كل يوم ، ولقد تم التفكير في الآونة الأخيرة عن جميع الآلات التي تجلس حولها كل يوم تفعل شيئا لعدة ساعات. لن يكون من الجيد لو استطعنا استخدام هذه الأجهزة لتعزيز قوة المعالجة أنظمتنا؟ في هذه المجموعة من المقالات انا ذاهب للبحث في الفوائد المحتملة لاستخدام مكتب الشبكة باستخدام البيئات الافتراضية.

في الجزء 1 أعطى لمحة عامة عن النظام والتكنولوجيات أنني سوف تستخدم كذلك كما نوقشت بعض الأسباب المحتملة لماذا كنت تريد إنشاء شبكة المكاتب.

وظيفة التحكم

اذا كنت تريد الذهاب لتشغيل وظائف ثم وأنت تسير في حاجة إلى بعض الطرق لإدارتها. نظام الرقابة على وظيفة (وظيفة على الخادم الخاص بك) يجب أن يكون بشكل جيد قبل محاولة مدروسة حتى لتشغيل شبكة للمكاتب. أولا كان الأمر كذلك ، ما هي مهام وظيفة نظام مراقبة :

  • وظائف يده بناء على طلب من العمال
  • اقول ما هو نوع العمال من فرص العمل لتشغيل
  • تعقب فرص العمل
  • ضمان أن يتم تشغيلها مرة واحدة فقط وظائف
  • توفير بيانات مهمة للعمال ، أو على الأقل نقول لهم مكان الحصول عليه

النظام يحتاج أيضا إلى توسعة ، وهو الحل الذي يعمل الآن في حالة واحدة يمكن تمديدها لتشغيل عدة أنواع من الوظائف والأعمال يرى قيمة في حل الشبكة. على سبيل المثال ، قد كسب فرص العمل الأولويات ، وأكثر من نوع واحد قد توجد وظيفة (أي رمز قواعد عدة) ، في نهاية المطاف قد قمت بتشغيل عدة آلات حتى عامل المختلفة التي هي الأمثل لكل نوع من أنواع العمل (على الرغم من أنه لا يتحرك بعيدا عن عامل "النوعية "الفكرة). أحاول دائما أن نفكر في المستقبل عند وضع الأنظمة ، ويمكن رؤية على المدى القصير تؤدي إلى الإحباط على المدى الطويل وزيادة الوقت اللازم لتطوير.

وظيفة خادم

نحن ذاهبون الى الحاجة للتحكم في مكان ما من وظائفنا ، وينبغي أن يكون هذا هو النظام الوحيد في الشبكة الخاصة بك التي لديها موارد ثابتة محدد ، يمكن أن عنوان IP أو اسم المضيف ، عنوان (باستخدام DNS داخلي) ، الخ وذلك لأن العمال بحاجة إلى معرفة مكان البحث عن فرص العمل ، والعمال بحاجة الى ايجاد نظام مراقبة العمل (لا تحكم عمل النظام العثور على العمال).

وظيفة الخادم نفسه لا يملك في الواقع مهمة معقدة (في النظام الأساسي على أية حال) ، فإنه يحتاج إلى تخزين قائمة من الوظائف ، ومن ناحية وظيفة خارج وتلقي النتائج ، وتخزينها في وقت لاحق لهم في وقت لاحق من أجل استردادها. كيف يمكن أن يتم تعريف هذه الأجزاء ('بتوزيع الوظائف" مثل) تكون أساسية جدا. في وقت لاحق يمكننا توسيع النظام ليشمل واجهة الإدارة لإضافة أو تعديل أو حذف أو تعليق وظيفة ولكن هذا هو وراء هذه العملية.

لا يوجد أي سبب على الإطلاق أن خادم ثم عملك لا يمكن تشغيل جهاز ظاهري داخل خادم تجهيز الرئيسي شريطة أن لا تستنزف موارد كثيرة جدا من ذلك. ملقم المهام لكن لا ضرورة توافر عالية ، وإذا كان وتنخفض مساء يوم الجمعة وأنت تسير في عطلة نهاية الاسبوع لتفقد كامل التجهيز ، ويبدد كنت يحتمل بضعة أسابيع بقيمة الوقت اللازم للتجهيز (بالمقارنة مع خادم المعالجة الرئيسية وحدها) . قد ترغب في النظر في وضع خادم عملك على بيئة متوازنة للتحميل توافر عالية.

الإعداد الأساسي

سيتم الإعداد الأساسي للملقم عملنا تتألف من ما أنا واحد من استدعاء ملقمات بلدي يعرج (أي لي جوز ، ySql م ، ف حصان). وسوف يعمل على رمز العمال ثيا العمل فعلا ما الوظائف التي يمكن تشغيلها من خلال التفاعل مع العمل مع قواعد بيانات نظام المراقبة. في وقت لاحق يمكن أن نخلق خدمة الإنترنت واليد فعلا فرصة عمل بدلا من العمال للقيام بهذا العمل الشاق أنفسهم ، ولكن في الوقت الراهن سنستمر باستخدام مبدأ KISS (يبقيه بسيط ، غبي!).

لذا ، يتيح إنشاء ثلاثة الخلية الجداول للتعامل مع وظائف. وسوف تكون هذه الوظائف `` ، `` jobRecords و`` jobResults.

جدول الوظائف هنا أنا باستخدام SQL الأصدقاء بديلا رائعا يذكر ل بريس لمجرد أسهل لتثبيت على centOS (انظر للآخرين : 10 البدائل الكبرى لبريس )

هذا الجدول يتكون من 5 حقول بسيطة ،

  • اسم المستخدم : تحديد وظيفة فريدة
  • الاسم : هل يمكن أن يكون مرجعا العميل ، أو أي عدد من المحددات الأخرى
  • الحالة : عليك أن تعرف أين هو في هذه المهمة ، على سبيل المثال
    • 0 : لم يبدأ
    • 1 : التقطت
    • 2 : تم انجازها
  • started_by : المتواجدون بدأت القيام بهذه المهمة؟ ليس هذا المطلوب تماما ولكنها لطيفة لديهم. كنت تشير الى العمال عن طريق تتبع عنوان IP الخاصة بهم على الشبكة
  • started_at : متى العامل بدء المهمة؟ من خلال تتبع الوظائف التي لم تكتمل في غضون مبلغ العاشر من الوقت ونحن نعلم أننا بحاجة لالتقاط العمل مرة أخرى والبدء في المعالجة من قبل عامل آخر. يمكن إيقاف معالجة العمال / يذهب حاليا لأي عدد من الأسباب ، انقطاع التيار الكهربائي ، وتحطم ، وفقدان الشبكة ، إلخ.

فمن السهل كيف يمكن توسيع هذه الطاولة مع حقول إضافية قليلة للسماح لتتبع الإحصاءات ، وعمود وقت الانتهاء لمعرفة كم من الوقت استغرق العمل ، عداد لمعرفة عدد العمال التقطت هذه المهمة (من الواضح أن هذا يحتاج إلى تميل إلى 1) ، وأولوية العمل ، ويمكن أن تطول القائمة وتطول. في سيناريوهات مهمة أكثر تعقيدا سيكون من الممكن تحديد مقدار الذاكرة العامل سيكون بحاجة الى الوصول الى (وبالتالي لا تستخدم سوى عمال مناسبة) ، أو حتى أي نوع من العمال المطلوبة شأنه.

يتيح إضافة وظائف قليلة سبيل المثال :

سبيل المثال وظيفة

الجدول التالي هو مرة أخرى بسيطة جدا لفهم ، وهذه هي نتائج عملنا. أنها مرتبطة الجدول الرئيسي الوظائف حسب عمود `` jobs_id. وتشكل هذا الجدول يعتمد كثيرا على البيانات التي تحتاج لتزويد العاملين لديك ، ويتيح تقديم مثال بسيط للغاية حيث لدينا أربعة أعمدة :

  • اسم المستخدم : رقم السجل
  • الاسم : اسم الشخص
  • العنوان : عنوان الشخص
  • jobs_id : معرف المهمة التي يرتبط هذا السجل

الجدول الثالث والأخير يتكون من جدول النتائج ، فإنه لديه الكثير لنفسه كما في الجدول يشكلون سجلاتنا ، ومع إضافة بعض الأعمدة قد يكون جزءا من الجدول السجلات :

  • job_record_id : ارتباط النتيجة الى طاولة العمل
  • النتيجة : البيانات نتيجة

... وهذا هو كل ما تحتاجه للسيطرة على وظيفة! (ولو على مستوى أساسي جدا) في حالتي أنا أشرت إلى جدول آخر ، حيث كان يقع لي أن البيانات العملية ، ولكن هذا يمكن بسهولة مثلما كان ملف المعلمات لتشغيل رمز المحاكاة ، سمها ما شئت.

اختيار وظيفة

As stated previously, the workers will do our job management for us for now, so all we need to really do is find a job that needs processing and get the information. How would we do this? Well pick our job selection criteria and look for jobs, in SQL I did the following:

  1. Take any jobs that are not marked as complete but from our worker and reset them (substitute __ME__ with an identifier, easiest would be IP address):
     UPDATE `jobs` SET `status` = 0 WHERE `status` = 1 AND `started_by` = __ME__; 
  2. Using our job selection criteria, select a job and tell the control system that this worker is dealing with it:
     UPDATE `jobs` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW() WHERE `status` = 0 OR
    (`status` = 1 AND `started_at` > DATE_SUB(NOW(), INTERVAL X HOUR)) ORDER BY `id` ASC; 

    By grabbing jobs that haven't returned results in X amount of time we ensure that all jobs are run in the event of a worker crashing or going AWOL.

  3. Next grab the jobs details followed by the records themselves:
     SELECT * FROM `jobs` WHERE `started_by` = __ME__ LIMIT 1;
    SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Upon completion of the job we insert our result records and mark the job as complete. Remember as jobs can suspend/resume at any time allow for some robustness in your script. It might be that the task suspends half way through updating the job control system, so checking the number of records in a job and the number of results saved back to the job control system would be a wise move.

In addition, whilst this demonstrates how jobs can be selected and managed from an SQL-query frame you should really be abstracting your job control so that if you decide to switch to using a web service, a file based system, XML , or any other number of systems it will not affect the code above it.

Job Configuration

The next aspect to consider is job size and configuration. By playing with job configuration we can strike an excellent balance between speed, process replication, and reliability. Take a couple of scenarios:

  1. Jobs take 1 day each to run: This means that your workers need 15 days to process each job (remember 10% of the power for 2/3rds of the time). This is clearly not a wise configuration, your job size is way too big! It would take at least double the time to get a job processed should the initial worker go AWOL (time to pick up that it hasn't returned a result plus reprocessing time). In an ideal you'd have at least one full job easily cleared by the end of each long idle period, that way you keep the jobs ticking over and at worst case a job would take two days to process should the first go missing.
  2. Jobs take 1 minute to run: This means that your workers take about 15 minutes to run each job. Whilst this may initially seem ideal, you gain additional work processing during lunch time, coffee breaks, meetings, etc this scenario puts strain on other areas of your system and introduces its own problems. For example, firstly your setup/processing time ratio is going to go right down, therefore losing system efficiency. Your network is going to be constantly streaming job information to the various workers frustrating staff who are dong their day to day work. You're also going to put more strain on your job processing server as it has to dish out lots and lots of small pieces of work on a regular basis. Lastly, in this situation if your job server goes down you're going to create a huge back log of uncompleted work whereas bigger jobs could of continued processing blissfully unaware that the job server was experiencing difficulties.

في الواقع لن يكون هناك تكوين مثاليا لإعداد الشبكة الخاصة بك ، فإن الكثير يعتمد على الموارد المتاحة ، وأنواع ، وفرص العمل متطلبات الوظيفة الزمنية ، والقدرة على الشبكة ، وهلم جرا. بيد أن بعض المبادئ التوجيهية على النحو التالي :

  • حجم فرص العمل حتى يتسنى لكل عامل على الأقل من خلال الحصول على وظيفة 3-4 في مدة 15 ساعة (على الأرجح أطول فترة الوقت الضائع)
  • اللعب مع حجم فرص العمل حتى ذلك الوقت الإعداد يصبح ضئيلا نسبيا بالمقارنة مع الوقت لتجهيز (واضعة في اعتبارها النقطة أعلاه).
  • إذا كان العمل لا يتم إكمال المبلغ في مضاعفة من الوقت (ربما أقل) تتوقع أن نفترض أن تنجزه AWOL لها ذهب والبدء في معالجتها مع عامل آخر. هذا يعني أنك قد تضطر إلى الانتظار مدة تصل إلى ثلاثة أضعاف من العادي وظيفة لأنها لاستكمال (أطول ربما إذا فشل المهمة اللاحقة). قد تحتاج للحد من هذا الوقت ، ولكن يجب الحرص على عدم الحد منه كثيرا كما كنت قد تبدأ ازدواجية المهام معالجة على أساس منتظم.
  • وينبغي أن تكون مستقلة عن وظائف خارج المتطلبات قدر الإمكان. ملقم المهام ، على سبيل المثال ، لا ينبغي أن يكون الاتصال في بداية ونهاية كل وظيفة.
  • لا تشبع الشبكة ، وهذا سوف يكون اثنين الآثار السلبية ، وسوف تجد النهار موظفيك باستخدام الشبكة قد تكون محبطة واجهت مشاكل مع اتصالات مهلة المشكلة التي سوف تزداد سوءا كما كنت نطاق الشبكة الخاصة بك.
  • يمكن أن تضمن وظائف تعمل على العاملين لديك. إذا ما أصبحت بعض الوظائف وظائف الذاكرة أيضا سوف الفضائية المكثفة أو قرص بدء إحباط مكثفة والشيء الوحيد الذي ستلاحظ هو الانخفاض في عدد الوظائف معالجتها مع عدم وجود سبب حقيقي لماذا.

تقديم نتائج وظيفة

عند تقديم نتائج مهمة من المهم للتأكد من أن النتائج لم تكن مقدمة من عامل آخر ، خصوصا إذا كان العامل الحالي ظلت نائمة لبعض الوقت.

عند تقديم النتائج ضمان أن عدد النتائج يطابق عدد السجلات في العمل.

كما ذكر سابقا ، والتي لا يمكن التأكيد على وبناء التسامح مع الخطأ في استرجاع وظيفة وتقديم النتائج. ويمكن للعمال (وعلى الأرجح سوف) الانتقال إلى وضع غير مريح في تعليق أكثر من مرة ، وهذا يحتاج إلى أن يكون للبت. وسيتم أيضا مرة أخرى بعيدا استخلاص النتائج الخاص بتقديم المساعدة لتلبية التغيرات المستقبلية لنظام مراقبة عملك أسهل بكثير للتعامل معها.

ملخص

في هذا section لقد ألقينا نظرة على ما ملقم مراقبة مهمة يتعين عليها القيام به وكيفية الحصول على النظام الأساسي للغاية اقامة. ناقشنا كيفية استرداد وظيفة من نظام التحكم وأفضل طريقة لتكوين فرص عمل للحصول على أكثر من مكتبك لدينا نظام الشبكة. وحتى النهاية ، وقدم فقرة أو اثنين على تقديم النتائج إلى وظيفة خادم السيطرة.

  • خادم يدير مهمة مراقبة وظائف ويضمن أن يتم الانتهاء من جميع وحدات العمل
  • من خلال الاستخلاص وظيفتك اختيار / تقديم نتائج يمكن أن نغير هذه التكنولوجيا من خادم السيطرة من دون مشاكل كبيرة
  • تكوين الوظائف الخاصة بك لضمان تشغيلها بسرعة وبكفاءة دون وضع الكثير من الضغوط على البنية التحتية للشبكة الخاصة بك ، ودون تكرار معالجة المهام على أساس منتظم.
  • تأكد من الخطأ والتسامح وبناء checking خطأ في الأعمال الروتينية الخاصة بك ، يمكن للعمال واستئناف تعليق وغير مريح أكثر من مرة. تذكر للتحقق مما إذا تم بالفعل النتائج المقدمة من عامل آخر.

المرة التالية

في الجزء 3 سنقوم خلق لدينا آلة المعالجة الظاهرية وإعداد لدينا آلات النوافذ ليصبح خاملا وقت العمال.

مكتب بيئات الحوسبة الشبكية باستخدام الظاهري -- الجزء 5

من جانب الجمعة 4 ديسمبر 2009 11:03

مقدمة

أنا أعمل في شركة حيث نقوم بتشغيل العديد من الوظائف دفعة معالجة الملايين من سجلات البيانات في كل يوم ، ولقد تم التفكير في الآونة الأخيرة عن جميع الآلات التي تجلس حولها كل يوم تفعل شيئا لعدة ساعات. لن يكون من الجيد لو استطعنا استخدام هذه الأجهزة لتعزيز قوة المعالجة أنظمتنا؟ في هذه المجموعة من المقالات انا ذاهب للبحث في الفوائد المحتملة لاستخدام مكتب الشبكة باستخدام البيئات الافتراضية.

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. بذلك ،

  • 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.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.

زند الإطار : أساسيات -- مراجعة

By , Saturday 28th November 2009 10:42 pm

My employer recently paid for a group of us developers to take the Zend Framework: Fundamentals course, here I'll summarise my thoughts and opinions on the course for others. For those looking to save time, here's my summary:

For developers who haven't had time to look at the Zend Framework this course (Zend Framework: Fundamentals) offers a good overall picture of the framework introducing you to the key areas and giving enough information in order to continue. For those who have spent time looking at the framework and have followed one or two tutorials this course does not offer much beyond.

خلفية

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. I've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

About the Course

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). The time is spent going through a set of slides provided by Zend with discussion at any time. You can use a microphone to talk to the instructor, but to be honest I didn't see anyone use anything more than the chat window. In addition a VMWare Ubuntu machine is provided that has example code and projects set up an a trial version of Zend Studio. The course leader talks to attendees either over an integrated VoIP solution, or you can dial in using one of the many worldwide dial in numbers.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. Personally I felt that providing the code or each app and then asking us to develop what was essentially a copy alongside didn't really provide a good learning experience. I would have preferred to develop an application similar, but not identical. to the example application with the benefit of having a guide to refer to. Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. After the course feedback was taken, it was emphasised several times through the course that Zend takes feedback very seriously, in fact apparently our version of the course was quite new. Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

The course style was informal, allowed for feedback and collaboration between attendees and the instructor. The course leader was friendly, approachable (email addresses were shared for questions), and whilst his presentation from the slides was a bit shaky seemed fully competent in the framework. He was clearly someone who used the framework on a regular basis rather than someone who is taught to teach the course, I liked the 'real world' experience in that respect.

Overall Feeling

In some ways I found the course a waste of time, in others it was very handy. Hopefully I'll get my reasons across clearly, and maybe provide some food for thought or useful feedback (knowing me this is unlikely!).

For myself this course was aimed at too low a level. Having gone through the quickstart guide, read Rob Allen's Zend Framework in Action, and worked with the framework a little I didn't really get anything too much. I would of liked the course to pick up from the end of the quickstart and develop additional skills.

That said, the course title does clearly state “Zend Framework: Fundamentals ” and in that aspect the course achieves what it sets out to do. Other members of the development team that haven't spent the time looking into the framework finished each session with enthusiasm and asked questions which was really nice to see.

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 100%. It was also time that I got to sit down each day and think about coding using the framework and future projects, something I wouldn't of been able to do otherwise (can you imagine your company agreeing to that? :) ). Last but not least you also get a nice certificate from Zend to say that you attended the course (albeit by email).

Zend Framework Certification

This was one question that kept coming to mind during the course, would it prepare me for the certification? The quick, easy is a resounding No . The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

ملخص

Given everything I've written above, I'll summarise everything in two easy bullet points:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. The course seems to generate interest and enthusiasm for the framework amongst developers.
  • Used the Zend Framework: While it was nice to shore up some of the very basics I felt the time, effort, and funds to take the course could of been better spent elsewhere. It will be nice to see Zend create a new higher level course to take developers to the next level – at least to the standard of certification and beyond. For that I would sign up immediately.












الموضوع بواسطة بانوراما Themocracy

4 زوار الآن على الانترنت
2 ضيوف ، 2 السير ، 0 أعضاء
Max visitors today: 13 at 01:30 pm UTC
This month: 48 at 12-09-2011 02:18 pm UTC
هذا العام : 130 في 28-03-2011 الساعة 10:40 بالتوقيت العالمي
كل الوقت : 130 في 28-03-2011 الساعة 10:40 بالتوقيت العالمي