مقدمة
أنا أعمل في شركة حيث نقوم بتشغيل العديد من الوظائف دفعة معالجة الملايين من سجلات البيانات في كل يوم ، ولقد تم التفكير في الآونة الأخيرة عن جميع الآلات التي تجلس حولها كل يوم تفعل شيئا لعدة ساعات. لن يكون من الجيد لو استطعنا استخدام هذه الأجهزة لتعزيز قوة المعالجة أنظمتنا؟ في هذه المجموعة من المقالات انا ذاهب للبحث في الفوائد المحتملة لاستخدام مكتب الشبكة باستخدام البيئات الافتراضية.
في الجزء 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 : ارتباط النتيجة الى طاولة العمل
- النتيجة : البيانات نتيجة
... وهذا هو كل ما تحتاجه للسيطرة على وظيفة! (ولو على مستوى أساسي جدا) في حالتي أنا أشرت إلى جدول آخر ، حيث كان يقع لي أن البيانات العملية ، ولكن هذا يمكن بسهولة مثلما كان ملف المعلمات لتشغيل رمز المحاكاة ، سمها ما شئت.
اختيار وظيفة
كما ذكر سابقا ، فإن العمال سوف تفعل إدارتنا مهمة بالنسبة لنا في الوقت الراهن ، لذلك كل ما نحتاج الى القيام به حقا هو ايجاد فرص العمل التي تحتاج المعالجة والحصول على المعلومات. كيف نفعل ذلك؟ اختيار جيد لدينا معايير اختيار الوظائف والبحث عن فرص العمل ، في SQL فعلت ما يلي :
- اتخاذ أي الوظائف التي لم يتم وضع علامة على أنها كاملة ولكن من عاملنا وإعادة تعيين لهم (بديلا __ME__ مع المعرف ، سيكون أسهل عنوان IP) :
UPDATE `الوظائف` SET `` حالة = 0 WHERE `` وضع = 1 AND `` = started_by __ME__ ؛
- باستخدام معايير الاختيار لدينا وظيفة ، حدد وظيفة ونقول للنظام مراقبة أن هذا العامل هو التعامل معها :
UPDATE `الوظائف` SET `` حالة 1 = ، `` = started_by __ME__ ، `` started_at = NOW () WHERE `` حالة = 0 أو
(`` وضع = 1 AND `` started_at> DATE_SUB (NOW () ، ساعة INTERVAL X)) ORDER BY `` ASC معرف ؛
قبل الاستيلاء على الوظائف التي لم تكن قد عادت النتائج في العاشر من مقدار الوقت علينا أن نضمن أن يتم تشغيل جميع الوظائف في حالة وجود عامل معطل أو بدون اذن.
- انتزاع المقبل تفاصيل الوظائف تليها السجلات نفسها :
SELECT * FROM `الوظائف` WHERE `started_by` = 1 LIMIT __ME__ ؛
SELECT * FROM `` WHERE `job_records معرف` = __JOBID__ ؛
عند الانتهاء من هذه المهمة ونحن لدينا نتيجة إدراج سجلات وعلامة مهمة على النحو الكامل. كما يمكن أن نتذكر وظائف تعليق / استئناف في أي وقت تسمح لبعض الشدة في السيناريو الخاص بك. قد يكون من أن المهمة علقت في منتصف الطريق من خلال تحديث نظام التحكم في الوظائف ، والتحقق من ذلك في عدد من السجلات في العمل وحفظ عدد من النتائج المهمة مرة أخرى إلى نظام التحكم سيكون خطوة حكيمة.
بالإضافة إلى ذلك ، بينما هذا يوضح كيف يمكن تحديد وظائف والمدارة من إطار SQL - الاستعلام يجب أن يكون حقا بغض تحكم عملك بحيث إذا قررت التحول إلى استخدام خدمة الإنترنت ، ونظام القائمة ملف ، XML ، أو أي دولة أخرى نظم عدد من انها لن تؤثر على رمز فوقه.
وظيفة تكوين
الجانب القادم للنظر هو حجم العمل والتكوين. من خلال اللعب مع تكوين وظيفة يمكننا تحقيق توازن بين سرعة ممتازة ، وتكرار العملية ، والموثوقية. اتخاذ سيناريوهات حساب الأموال التشغيلية زوجين :
- 1 الوظائف تأخذ كل يوم لتشغيل : وهذا يعني أن العاملين لديك 15 يوما لحاجة العملية لكل وظيفة (تذكر 10 ٪ من الطاقة الكهربائية ل2/3rds من الوقت). ومن الواضح أن هذا ليس من الحكمة التكوين ، وحجم العمل كبير جدا هو الطريق! ان الامر سيستغرق ما لا يقل عن ضعف الوقت للحصول على وظيفة عامل معالجتها ينبغي أن تذهب AWOL الأولي (الوقت لالتقاط أنه لم يعد نتيجة لذلك بالإضافة إلى وقت إعادة المعالجة). في مثالية مانع لديك على الأقل وظيفة واحدة مسح كامل بسهولة قبل نهاية كل فترة الخمول الطويلة ، وبهذه الطريقة يمكنك الحفاظ على وظائف أكثر والموقوتة في أسوأ الحالات على وظيفة سوف يستغرق يومين لأول عملية يجب أن تذهب في عداد المفقودين.
- وظائف اتخاذ 1 دقيقة لتشغيل : وهذا يعني أن العاملين لديك يستغرق حوالي 15 دقيقة لتشغيل كل وظيفة. في حين أن هذا قد يبدو في البداية مثالية ، يمكنك الحصول على مزيد تجهيز العمل خلال وقت الغداء ، وفترات الاستراحة ، واجتماعات ، الخ هذا السيناريو يضع ضغطا على مجالات أخرى من النظام الخاص بك ويقدم مشاكلها الخاصة. على سبيل المثال ، أولا نسبة قتك إعداد / تجهيز سيسجل الحق ، وخسرت بالتالي كفاءة النظام. الشبكة ستكون تدفق المعلومات بشكل مستمر وظيفة للموظفين العاملين في مختلف محبطة الذين دونغ يومهم في العمل اليوم. وأنت تسير أيضا لوضع المزيد من الضغوط على عملك خادم تجهيز كما على طبق من الكثير والكثير من القطع الصغيرة من العمل على أساس منتظم. ويمكن أخيرا ، في هذه الحالة إذا كان خادم عملك وتنخفض وأنت تسير لإنشاء سجل الظهر هائل من العمل غير المكتمل في حين أن أكبر فرص عمل للاستمرار تجهيز يجهل بسعادة أن الخادم كان العمل تواجه صعوبات.
في الواقع لن يكون هناك تكوين مثاليا لإعداد الشبكة الخاصة بك ، فإن الكثير يعتمد على الموارد المتاحة ، وأنواع ، وفرص العمل متطلبات الوظيفة الزمنية ، والقدرة على الشبكة ، وهلم جرا. بيد أن بعض المبادئ التوجيهية على النحو التالي :
- حجم فرص العمل حتى يتسنى لكل عامل على الأقل من خلال الحصول على وظيفة 3-4 في مدة 15 ساعة (على الأرجح أطول فترة الوقت الضائع)
- اللعب مع حجم فرص العمل حتى ذلك الوقت الإعداد يصبح ضئيلا نسبيا بالمقارنة مع الوقت لتجهيز (واضعة في اعتبارها النقطة أعلاه).
- إذا كان العمل لا يتم إكمال المبلغ في مضاعفة من الوقت (ربما أقل) تتوقع أن نفترض أن تنجزه AWOL لها ذهب والبدء في معالجتها مع عامل آخر. هذا يعني أنك قد تضطر إلى الانتظار مدة تصل إلى ثلاثة أضعاف من العادي وظيفة لأنها لاستكمال (أطول ربما إذا فشل المهمة اللاحقة). قد تحتاج للحد من هذا الوقت ، ولكن يجب الحرص على عدم الحد منه كثيرا كما كنت قد تبدأ ازدواجية المهام معالجة على أساس منتظم.
- وينبغي أن تكون مستقلة عن وظائف خارج المتطلبات قدر الإمكان. ملقم المهام ، على سبيل المثال ، لا ينبغي أن يكون الاتصال في بداية ونهاية كل وظيفة.
- لا تشبع الشبكة ، وهذا سوف يكون اثنين الآثار السلبية ، وسوف تجد النهار موظفيك باستخدام الشبكة قد تكون محبطة واجهت مشاكل مع اتصالات مهلة المشكلة التي سوف تزداد سوءا كما كنت نطاق الشبكة الخاصة بك.
- يمكن أن تضمن وظائف تعمل على العاملين لديك. إذا ما أصبحت بعض الوظائف وظائف الذاكرة أيضا سوف الفضائية المكثفة أو قرص بدء إحباط مكثفة والشيء الوحيد الذي ستلاحظ هو الانخفاض في عدد الوظائف معالجتها مع عدم وجود سبب حقيقي لماذا.
تقديم نتائج وظيفة
عند تقديم نتائج مهمة من المهم للتأكد من أن النتائج لم تكن مقدمة من عامل آخر ، خصوصا إذا كان العامل الحالي ظلت نائمة لبعض الوقت.
عند تقديم النتائج ضمان أن عدد النتائج يطابق عدد السجلات في العمل.
كما ذكر سابقا ، والتي لا يمكن التأكيد على وبناء التسامح مع الخطأ في استرجاع وظيفة وتقديم النتائج. ويمكن للعمال (وعلى الأرجح سوف) الانتقال إلى وضع غير مريح في تعليق أكثر من مرة ، وهذا يحتاج إلى أن يكون للبت. وسيتم أيضا مرة أخرى بعيدا استخلاص النتائج الخاص بتقديم المساعدة لتلبية التغيرات المستقبلية لنظام مراقبة عملك أسهل بكثير للتعامل معها.
ملخص
في هذا section لقد ألقينا نظرة على ما ملقم مراقبة مهمة يتعين عليها القيام به وكيفية الحصول على النظام الأساسي للغاية اقامة. ناقشنا كيفية استرداد وظيفة من نظام التحكم وأفضل طريقة لتكوين فرص عمل للحصول على أكثر من مكتبك لدينا نظام الشبكة. وحتى النهاية ، وقدم فقرة أو اثنين على تقديم النتائج إلى وظيفة خادم السيطرة.
- خادم يدير مهمة مراقبة وظائف ويضمن أن يتم الانتهاء من جميع وحدات العمل
- من خلال الاستخلاص وظيفتك اختيار / تقديم نتائج يمكن أن نغير هذه التكنولوجيا من خادم السيطرة من دون مشاكل كبيرة
- تكوين الوظائف الخاصة بك لضمان تشغيلها بسرعة وبكفاءة دون وضع الكثير من الضغوط على البنية التحتية للشبكة الخاصة بك ، ودون تكرار معالجة المهام على أساس منتظم.
- تأكد من الخطأ والتسامح وبناء checking خطأ في الأعمال الروتينية الخاصة بك ، يمكن للعمال واستئناف تعليق وغير مريح أكثر من مرة. تذكر للتحقق مما إذا تم بالفعل النتائج المقدمة من عامل آخر.
المرة التالية
في الجزء 3 سنقوم خلق لدينا آلة المعالجة الظاهرية وإعداد لدينا آلات النوافذ ليصبح خاملا وقت العمال.