معرفی
من در یک شرکت کار می کنند که در آن ما برای اجرای بسیاری از مشاغل دسته پردازش میلیون ها پرونده داده را در هر روز و من شده فکر کردن به تازگی در مورد تمام ماشین هایی که در اطراف هر روز نشسته انجام هیچ چیزی برای چند ساعت. آیا آن را نمی شود خوب است اگر ما می تواند این دستگاه قدرت پردازش سیستم خود را برای تقویت استفاده کنید؟ در این مجموعه ای از مقالات من قصد دارم در مزایای بالقوه به کارگیری دفتر شبکه با استفاده از محیط های مجازی.
در قسمت 1 خودم رو دادم به کلی از سیستم و فن آوری خواهد شد با استفاده از و همچنین برخی از دلایل بالقوه مورد بحث به همین دلیل شما می توانید برای ایجاد شبکه دفتر.
کنترل های شغلی
اگر قصد دارید شغل در حال اجرا می شود و سپس شما نیاز به رفتن به برخی از راه را برای مدیریت آنها. کار سیستم خود را کنترل کنید (بر روی سرور کار خود) باید به خوبی فکر حتی قبل از اقدام به اجرای شبکه دفتر. پس در ابتدا، وظایف برای کنترل یک سیستم کار:
- دست از شغل بر درخواست از کارگران
- بگویید کارگران چه نوع از مشاغل به اجرا
- مشاغل آهنگ
- اطمینان حاصل شود که کار فقط یک بار اجرا می شوند
- ارائه داده های کار به کارگران، و یا حداقل به آنها بگویید که آن را دریافت کنید
این سیستم همچنین نیاز به توسعه، یک راه حل که با این نسخهها کار در حال حاضر تنها در یک مورد ممکن است توسعه یافته برای اجرای انواع مختلفی از مشاغل به عنوان کسب و کار ارزش در راه حل های شبکه را می بیند. به عنوان مثال، شغل ممکن است اولویت های به دست آوردن، بیش از یک نوع کار ممکن است وجود داشته باشد (به عنوان مثال چندین پایگاه های کد)، در نهایت شما حتی ممکن است دستگاه های چند کارگر های مختلف که برای هر نوع کار بهینه شده است (هر چند که "کارگر عمومی حرکت به دور از اجرا ایده). همیشه سعی کنید در مورد آینده فکر می کنم زمانی که در حال توسعه سیستم، یک چشم انداز کوتاه مدت می تواند به سرخوردگی دراز مدت و افزایش زمان توسعه منجر شود.
سرور های شغلی
ما قصد داریم نیاز به جایی برای کنترل شغل خود را از این باید تنها سیستم در شبکه خود را که دارای منابع یاب ثابت، این باشد که یک آدرس IP، نام میزبان، آدرس (با استفاده از DNS داخلی)، و غیره به دلیل این است که کارگران باید بدانند که به کجا نگاه کنند برای مشاغل، کارگران نیاز به پیدا کردن کار سیستم های کنترل (و نه کار سیستم کنترل کارگران).
سرور کار خود واقعا یک کار پیچیده (به هر حال در یک سیستم اصلی)، به آن نیاز دارد برای ذخیره لیستی از مشاغل، دست مشاغل، دریافت نتایج، و سپس آنها را ذخیره برای بازیابی بعدی. این قطعات (دست مشاغل 'مانند) چگونه تعریف می شوند را می توان بسیار ساده است. بعدها ما می توانیم سیستم مدیریت برای اضافه کردن، ویرایش، حذف، تعلیق شغل، اما این است که فراتر از این تمرین به گسترش است.
بدون هیچ دلیل آنچه پس از آن که شغل خود را از سرور می تواند یک ماشین مجازی در حال اجرا در سرور پردازش اصلی خود را ارائه منابع بیش از حد بسیاری از آن را تخلیه نمی وجود دارد. سرور کار با این حال نیاز به در دسترس بودن بالا، اگر آن را در عصر روز جمعه در حال رفتن به از دست دادن کل تعطیلات آخر هفته از پردازش پایین می رود، به طور بالقوه از چند هفته به ارزش زمان پردازش (در مقایسه با زمانی که به سرور پردازش اصلی خود را به تنهایی هزینه شما) است. شما ممکن است بخواهید به در نظر قرار دادن سرور کار خود را بر روی محیط زیست بار متعادل برای در دسترس بودن بالا.
راه اندازی پایه
راه اندازی اولیه برای سرور کار ما را از آنچه من خواستار یکی از سرور لنگی من (که شده است nux لی متر ySql و و P HP) تشکیل شده است. کد در حال اجرا بر روی کارگران the در واقع از کار چه شغل می تواند اجرا شود آن را از طریق برقراری ارتباط با پایگاه داده سیستم کنترل کار. بعدها در ما می تواند یک وب سرویس و در واقع دست کارهای به جای داشتن کارگران انجام کار سخت خود، ایجاد، اما در حال حاضر با استفاده از اصل KISS (نگه داشتن آن ساده، احمق!) ادامه خواهیم داد .
بنابراین، به شما اجازه می دهد تا 3 خروجی زیر جداول برای مقابله با شغل. از این خواهد شد: مشاغل `،` jobRecords `، و` jobResults `.
در اینجا من با استفاده از SQL دوستان یک جایگزین عالی کمی به phpMyAdmin به فقط به خاطر اینکه راحت تر آن را در لینوکس نصب کنید (برای دیگران می بینیم: 10 بزرگ جایگزین به phpMyAdmin به )
این جدول شامل 5 فیلد ساده،
- ID: شناسایی منحصر به فرد کار
- نام: میتونه مرجع مشتری، یا هر تعداد از شناسه های دیگر
- وضعیت: شما باید بدانید که در آن کار است، به عنوان مثال
- 0: شروع نشده
- 1: برداشت
- 2: پایان یافته
- started_by: چه کسی شروع به انجام این کار؟ این به طور کامل ضروری نیست اما خوب است به. من می خواهم کارگران ردیابی آدرس IP خود را در شبکه خود را نشان می دهد
- started_at: هنگامی که کارگر کار را شروع کردی؟ با پیگیری کارهایی که در درون مقدار X از زمان به اتمام می دانیم که ما باید انتخاب کنید تا این کار یک بار دیگر و شروع به پردازش توسط یکی دیگر از کارگران است. کارگران می توانند پردازش / توقف offline برای هر تعداد از دلایل، قطع برق، سقوط، از دست دادن شبکه، و غیره
از آن آسان است که چگونه این جدول می تواند با چند زمینه اضافی اجازه می دهد تا برای ردیابی آمار، پایان ستون زمان که برای دیدن چه مدت این کار انجام گرفت، برای مقابله با بسیاری از کارگران را برداشت کار تمدید (بدیهی است که این نیاز به تمایل 1)، اولویت شغلی، لیست می توانید بر روی بروید. در سناریو کار پیچیده تر از آن خواهد بود امکان مشخص کردن کارگر چه مقدار حافظه، دسترسی به (و بنابراین تنها استفاده از کارگران مناسب)، و یا حتی چه نوع کارگر خواهد بود لازم است.
اجازه می دهد که اضافه کردن چند شغل به عنوان مثال:
جدول بعد دوباره به درک بسیار ساده است، این سوابق کار ما است. آنها توسط یک ستون jobs_id `به میز شغل اصلی مرتبط است. را تشکیل می دهند از این جدول بسیار بستگی دارد داده هایی را که شما نیاز دارید که برای عرضه به کارگران خود، اجازه می دهد تا ایجاد یک مثال بسیار ساده است که ما باید چهار ستون:
- شناسه (شماره): ID رکورد
- نام و نام خانوادگی: نام شخص
- آدرس ایمیل: آدرس سرگذشت
- jobs_id: ID کار است که این رکورد مربوط به
جدول سوم و نهایی متشکل از یک جدول نتایج، آن را به همان اندازه ای را تشکیل می دهند به عنوان جدول سوابق ما، و علاوه بر این برخی از ستون ها می تواند بخشی از جدول سوابق:
- job_record_id: لینک نتیجه را در میز کار
- نتیجه: داده ها منجر
و ... که همه شما را برای کنترل کار نیاز دارند. (البته در سطح بسیار ابتدایی) در مورد من، من به یکی دیگر از جدول که در آن اطلاعات من برای پردازش واقع شده بود اشاره کرد، اما این به راحتی می تواند یک فایل، پارامترهایی را برای اجرای کد شبیه سازی، آن را نام ببرید.
انتخاب یک کار
همانطور که قبلا، کارگران مدیریت کار ما را برای ما در حال حاضر انجام دهد، بنابراین همه ما باید واقعا انجام داد این است که پیدا کردن یک شغل است که نیاز به پردازش و دریافت اطلاعات است. چگونه این را انجام دهید؟ خوب معیار انتخاب شغل ما و انتخاب کنید و برای کار، در SQL من به شرح زیر است:
- هر شغل هستند که به عنوان کامل اما از کارگر ما مشخص شده و تنظیم مجدد آنها (جایگزین ME__ __ با شناسه و آسان خواهد بود آدرس IP):
تکمیلی: شغل: مجموعه وضعیت `= 0 WHERE` وضعیت `= 1 و` started_by `= __ ME__.
- با استفاده از معیارهای انتخاب کار ما، یک شغل را انتخاب کنید و به سیستم کنترل است که این کارگر در حال برخورد با آن:
تکمیلی: شغل: مجموعه: وضعیت `= 1،` started_by `= __ ME__: started_at` = کن () WHERE `وضعیت` = 0 OR
(`وضعیت` = 1 و `started_at`> DATE_SUB (NOW ()، فاصله X ساعت)) ORDER BY `ID` ASC؛
با گرفتن شغل هایی که در نتیجه مقدار X از شما اطمینان می دهیم که همه کارها در صورت کارگر توفنده و یا رفتن AWOL را اجرا بازگشته است.
- بعد از جزئیات مربوط به شغل و به دنبال آن پرونده خود گرفتن:
SELECT * FROM `شغل` WHERE `started_by` = __ ME__ LIMIT 1؛
SELECT * `job_records` WHERE `ID` = __ JOBID__.
پس از اتمام کار ما قرار دادن پرونده در نتیجه ما و علامت کار خود به عنوان کامل. به خاطر داشته باشید به عنوان شغل می تواند تعلیق / در هر زمان اجازه می دهد برای برخی از نیرومندی به خط خود را از سر گرفته است. این ممکن است که این کار را متوقف کند نیمی از راه را از طریق به روز رسانی سیستم های کنترل کار، چک کردن تعداد رکورد در یک شغل و تعداد نتایج: از بازگشت به کار کنترل سیستم ذخیره می باشد عاقلانه حرکت است.
علاوه بر این، در حالی که این نشان می دهد چگونه شغل را می توان از قاب SQL پرس و جو است که شما واقعا باید به انتخاب مدیریت چکیده کنترل کار خود را به طوری که اگر شما تصمیم به تبدیل به با استفاده از یک سرویس وب، فایل سیستم مبتنی بر XML ، و یا هر نوع دیگر تعدادی از سیستم های کد بالا آن تاثیر نمی گذارد.
پیکربندی های شغلی
جنبه بعدی در نظر گرفتن اندازه و پیکربندی کار می باشد. با بازی با تنظیمات کار ما می توانیم تعادل عالی بین سرعت، تکرار فرایند، و قابلیت اطمینان را بزنند. نگاهی به چند سناریو OFA:
- شغل 1 روز در هر اجرا کنید: این به این معنی است که کارگران خود را به 15 روز نیاز دارند برای پردازش هر کار (به یاد داشته باشید 10 درصد از قدرت برای 2/3rds از زمان). این است که به وضوح عاقلانه پیکربندی، اندازه شغل خود را از راه بیش از حد بزرگ است! این امر حداقل دو برابر این زمان را برای کار پردازش را باید کارگر اولیه AWOL (انتخاب کنید تا به آن است که در نتیجه به اضافه زمان بازفرآوری برنگشته است). در ایده آل شما می خواهم حداقل یک شغل به راحتی در پایان هر دوره طولانی بیکار پاک، که شما در حفظ شغل تیک تاک در طول و در بدترین حالت کار می کنند دو روز به روند باید اول از دست رفته است.
- شغل را 1 دقیقه اجرا: این به این معنی است که کارگران خود را حدود 15 دقیقه برای اجرای هر کار است. در حالیکه این ممکن است در ابتدا به نظر می رسد ایده آل، پردازش کار اضافی به دست آورید در زمان ناهار، پرش به قهوه، جلسات، و غیره این سناریو فشار بر مناطق دیگر از سیستم شما و معرفی مشکلات خاص خود را دارد. به عنوان مثال، ابتدا راه اندازی / پردازش نسبت خود را هم در حال رفتن به سمت راست پایین، کارایی سیستم و در نتیجه از دست دادن. شبکه شما در حال رفتن به اطلاعات به طور مداوم جریان کار به کارکنان های مختلف کارگران خسته کننده که دونگ روز خود را به کار روز. شما نیز فشار بیشتری را بر روی سرور پردازش کار که آن را تا مقدار زیادی و تعداد زیادی از تکه های کوچکی از کار را به صورت منظم به غذا. در نهایت، در این وضعیت اگر سرور کار خود را به پایین می رود شما قصد ایجاد دوباره وارد سیستم شوید عظیمی از کار ناتمام در حالی که شغل های بزرگتر می تواند در ادامه پردازش خوش غافل که سرور کار تجربه مشکلات.
در واقع هیچ تنظیمات ایده آل یکی برای راه اندازی شبکه شما وجود خواهد داشت، بسیار بستگی به منابع در دسترس، نوع شغل، چرخش شغلی مورد نیاز زمان، قابلیت های شبکه، و غیره. با این حال برخی از دستورالعمل ها خواهد بود:
- شغل اندازه به طوری که هر کارگر می تواند از طریق حداقل شغل 3-4 در یک دوره 15 ساعت (به احتمال زیاد طولانی ترین مدت زمان بیکار)
- بازی با حجم کار به طوری که زمان راه اندازی می شود نسبتا ناچیز در مقایسه با زمان پردازش (با در نظر گرفتن بالاتر از نقطه).
- اگر یک کار در دو مقدار زمان (شاید کمتر) شما انتظار آن را برای تکمیل کامل نیست فرض کنیم که از دست رفته خود را AWOL و شروع به پردازش آن را با دیگر کارگران است. این به این معنی است که شما ممکن است مجبور به صبر تا سه برابر طول طبیعی یک کار برای تکمیل (و احتمالا دیگر اگر این کار پس از آن با شکست مواجه). شما ممکن است بخواهید این زمان را کاهش دهد، اما مراقب باشید آن را کاهش دهد بیش از حد ممکن است شما شروع به تکثیر وظایف پردازش را به صورت منظم.
- شغل باید مستقل از الزامات خارج تا آنجا که ممکن است. سرور شغل، به عنوان مثال، تنها باید در آغاز و پایان هر کار تماس گرفته شود.
- شبکه خود را اشباع نمی کند، این دو اثر منفی داشته باشد، کارکنان در طول روز شما را پیدا خواهد کرد با استفاده از شبکه های خسته کننده و مشکلات ممکن است با اتصال به شبکه زمان بندی مشکل است که تنها بدتر خواهد شد که شبکه خود را در مقیاس شما تجربه.
- اطمینان از شغل می توانید بر روی کارگران خود را اجرا کنید. اگر شغل می شوند بیش از حد حافظه شدید یا شغل های فضای دیسک فشرده شروع به سقط و تنها چیزی که شما متوجه خواهید شد این افت در تعداد شغل پردازش با هیچ دلیل واقعی همین دلیل است.
نمایش نتایج: از ارائه یک کار
در هنگام ارائه نتایج حاصل از یک کار مهم است که برای بررسی که نتایج دیگری کارگر نشده است را مشاهده کنید، به خصوص اگر کارگر فعلی نهفته است برای برخی از زمان بوده است.
هنگامی که نتایج به دست آمده مشاهده کنید اطمینان حاصل شود که تعدادی از نتایج با شماره پرونده در این کار است.
همانطور که قبلا، و نه می تواند بیش از تاکید کرد، ایجاد تحمل خطا را در کار بازیابی و تسلیم نتایج. کارگران می توانند (و به احتمال زیاد خواهد شد) را به حالت به حالت تعلیق در ناخوشایند ترین بار و این نیاز به catered برای. همچنین یک بار دیگر چکیده دور ارسال نمائید نتایج کمک خواهد کرد که تهیه کردن برای تغییرات آینده به سیستم کنترل کار خود را بسیار ساده تر برای مقابله با.
خلاصه
در این section ما در نگاه چه کار کنترل سرور نیاز به انجام و چگونه می توانید یک سیستم بسیار ابتدایی راه اندازی شده است. ما در مورد چگونگی بدست آوردن کار از سیستم های کنترل و بهترین شغل ما را از دفتر شبکه سیستم خود را به پیکربندی. برای به پایان رساندن، از یک پاراگراف یا دو در ارسال نتایج به سرور کنترل کار ارائه شده است.
- یک سرور کنترل شغل مدیریت شغل و تضمین می کند که تمام واحدهای کار تکمیل شده
- چکیده کار خود را انتخاب کنید / نتایج تسلیم ما می توانیم تکنولوژی سرور کنترل بدون مشکلات زیادی را تغییر دهید
- پیکربندی شغل خود را به اطمینان حاصل شود که آنها به سرعت و کارآمد بدون فشار بیش از حد بر روی زیرساخت های شبکه خود اجرا و تکثیر وظایف پردازش را به صورت منظم.
- اطمینان حاصل شود که شما برای ساختن checking تحمل خطا و خطا را به روال خود را، کارگران می توانند تعلیق و از سرگیری و ناخوشایند ترین بار. به یاد داشته باشید برای بررسی نتایج به دست آمده در حال حاضر توسط یکی دیگر از کارگران مشاهده کنید.
دفعه بعد
در بخش 3 خواهیم ماشین پردازش مجازی و ایجاد و راه اندازی ماشین آلات پنجره های ما برای تبدیل شدن به زمان کارگران بیکار.