Вовед
Јас работам во компанија во која трчаме многу серија работни места обработка милиони евиденција на податоци секој ден и јас сум се размислува неодамна за сите машини кои седат околу секој ден прави ништо за неколку часа. Зарем не би било добро доколку можеме да ги користат овие машини за да ја зајакне моќ на процесирање на нашите системи? Во овој сет на статиите, ќе одам да се погледне на потенцијалните придобивки од вработувањето канцеларија мрежа користење виртуализирани средини.
Во Дел 1 дадов преглед на системот и технологии ќе биде со користење, како и дискутира некои од потенцијалните причини зошто вие би сакале да се создаде канцеларија мрежа.
Работа за контрола на
Ако сте ќе треба да се работи работни места, тогаш се случува да треба некој начин да управуваат со нив. Вашата работа на системот за контрола (на вашата работа сервер) треба да биде навистина добро обмислен пред дури и се обидува да се кандидира канцеларија мрежа. Значи прво, она што се задачите за работа на системот за контрола:
- Рака работни места по барање од работниците
- Кажете работници Кои видови на работи да се кандидира
- Песна работни места
- Осигурајте се дека работите се работи само еднаш
- Обезбедување на работа податоци на работниците, или барем да им каже каде да го добие
Системот, исто така треба да се растеглива, решение што работи за сега во еден случај може да се продолжи да се кандидира неколку видови на работни места, како на бизнис гледа вредноста во мрежа решение. На пример, може да добијат работни места приоритети, повеќе од една работа тип може да постои (т.е. неколку кодот бази), на крајот дури и може да работи неколку различни работник машини кои се оптимизирани за секој тип на работа (иако тоа не се движат подалеку од "генерички работник "идеја). Секогаш се трудам да размислувам за иднина, кога развој системи, краткорочни визија може да доведе до долгорочно фрустрација и зголемување на развојот на време.
Работа Server
Ние ќе треба некаде да се контролира нашата работа од, ова треба да биде само систем на вашиот мрежа која има постојана локатор, се дека IP адреса, името, рачно (со користење на внатрешниот DNS), итн Тоа е затоа што работниците треба да знаат каде да бараат работа, работниците треба да се најде работа контролен систем (не на работа на системот за контрола Најди работниците).
Работата серверот сам по себе не навистина имаат комплицирана задача (во основен систем во секој случај), треба да се сместат на листата на работни места, од рака, работни места, да се примаат резултати, а потоа и ги чува за подоцна пронаоѓање. Како овие делови (како "од рака работни места") се дефинирани може да биде многу основни. Подоцна може да се прошири системот да го вклучите интерфејс за да додадете, уредувате, бришете, да го суспендира работни места, но ова е надвор од оваа вежба.
Нема причина она тогаш вашата работа серверот не може да биде виртуелна машина работи во рамките на вашата главна обработка серверот доколку не на мозоци премногу ресурси од него. Работата серверот сепак не треба висока достапност, ако се спушта на вечер петок си оди за да се изгуби целиот викенд на обработка, потенцијално да ве чини неколку недели во вредност од времето на обработка (во споредба со вашата главна обработка серверот сам) . Вие може да сакате да се разгледа ставајќи вашата работа серверот на оптоварување избалансиран животната средина за висока достапност.
Основни подесување
Основната подесување за нашата работа серверот ќе се состои од она што јас го повикувам еден од моите Limp сервери (што е Li nux, м ySql, П HP). На код се извршува на Thea работници, всушност, ќе работат од она што работни места тоа може да работи преку интеракција со со работа системот за контрола на бази на податоци. Подоцна би можеле да се создаде веб сервис, а всушност рака работни места наместо на работниците прават напорна работа самите себе, но сега за сега ќе продолжиме со користење на KISS принцип (Нека биде едноставно, глупав!).
Значи, да се создаде три MySQL табели да се справи со работа. Тие ќе бидат `Вработувања`, `jobRecords`, и `jobResults`.
Еве јас користам SQL Бади голем малку алтернатива на phpMyAdmin само поради тоа што нејзините полесно да се инсталира на CentOS (за другите да видат: 10 Велика алтернативи на phpMyAdmin )
Оваа табела се состои од 5 едноставни полиња,
- ID: уникатно идентификуваат на работа
- Име: би можело да биде клиентот референца, или било кој број на други идентификатори
- Статус: Вие треба да знаете каде работата е во, на пример,
- 0: Не почна
- 1: зедов
- 2: Завршено
- started_by: Кој почна вршење на работа? Ова не е целосно задолжителна, но е убаво да се имаат. Би му сугерираат следење на работниците со нивната IP адреса на вашата мрежа
- started_at: Кога работникот почеток на работа? Со следење на работни места кои не се заврши во рок од Х сума на време знаеме дека треба да ги собереш на работа уште еднаш и на проектот за обработка од страна на друг работник. Работниците може да го запре обработка / Оди присутен за било кој број на причини, прекин на електричната енергија, несреќата, мрежа загуба, итн
Тоа е лесно како оваа табела може да се прошири со неколку дополнителни полиња за да се овозможи следење на статистиката, завршница време колона да се види колку долго работа се, на шалтер за да видите колку работници крена работа (очигледно ова треба да се стремат кон 1), работа приоритет, на листата може да оди и натаму. Во посложени работа сценарија тоа ќе биде можно да се определи колку меморија работникот ќе им треба пристап до (а со тоа само се користи соодветни работници), па дури и каков тип на работник ќе биде потребен.
Да додадете неколку пример работни места:
Во следната табела повторно е доста едноставна да се разбере, овие се нашите работа записи. Тие се поврзани со главната работа табелата со колона `jobs_id`. На сочинуваат на оваа табела многу зависи од податоците кои ви се потребни за снабдување на вашиот работници, да се направи еден многу едноставен пример каде што има четири колони:
- : ID на снимање
- име: Лице името
- адреса: адреса лицето
- jobs_id: На работа ID што овој рекорд е поврзана со
Третата и конечна табела се состои од резултатите маса, има ист сочинуваат како нашата база на податоци маса, и со додавање на некои колумни може да биде дел од евиденцијата табела:
- job_record_id: Линк резултатот на работа маса
- резултат: Резултат податоци
... И тоа е се што е потребно за работа контрола! (Иако на многу основно ниво) Во мојот случај јас сум посочи друга маса каде што моите податоци на процесот се наоѓа, но тоа може само така лесно е датотека, параметри да се кандидира симулација код, можете името на таа.
Изборот на работа
Како што е наведено претходно, работниците ќе се потрудиме работа за управување со за нас сега за сега, така што сите ние треба навистина да направите е да најдете работа што треба обработка и да добијат информации. Како ќе го направите ова? Па изберете нашата работа критериуми за селекција и да бараат работни места, во SQL го направив следново:
- Донесете ги сите работни места кои не се означени како заврши, но од нашиот работник и ресетирање на нив (замена __ME__ со идентификатор, најлесно ќе биде IP адреса):
Ажурирање `Вработувања` СЕТ `статусот` = 0 КАДЕ `статусот` = 1 И `started_by` = __ME__;
- Користење на нашата работа критериуми за селекција, изберете работа и да се каже дека системот за контрола на овој работник се занимава со тоа:
Ажурирање `Вработувања` СЕТ `статусот` = 1, `started_by` = __ME__, `started_at` = СЕГА () Кога `статусот` = 0 или
(`Статусот` = 1 И `started_at`> DATE_SUB (сега (), интервал Х час)) Подреди по `id` ASC;
Од грабање работни места кои не се вратија резултати во Х сума на време ние се осигура дека сите работни места се одвива во случај на работник паѓа или ќе awol.
- Следна дофати Вработувања детали проследено со евиденцијата се:
Select * from `Вработувања` КАДЕ `started_by` = __ME__ ГРАНИЧНИТЕ 1;
Select * from `job_records` КАДЕ `id` = __JOBID__;
По завршувањето на работа се внесува нашите резултат евиденција и марка на работа како завршена. Запомни како работни места може да го суспендира / продолжи во секое време им овозможи за некои стабилноста во вашата скрипта. Тоа може да биде дека задачата суспендира половина пат низ ажурирање на работа на системот за контрола, па проверка на бројот на записи во работа и бројот на резултати спаси назад на работа на системот за контрола ќе биде мудар потег.
Покрај тоа, додека Ова покажува колку работни места може да бидат избрани и успеа од SQL-пребарување рамка што навистина треба да се abstracting вашата работа контрола, така што, ако одлучат да се префрлат на користење на веб сервис, датотека базиран систем, XML , или било која друга број на системи тоа нема да влијае на кодот над неа.
Работа Конфигурација
Следниот аспект да се разгледа е работа големина и конфигурација. Играјќи со работа конфигурација може да се постигнат одличен баланс помеѓу брзината, процесот репликацијата, и сигурност. Земете неколку ОРД сценарија:
- Вработувања се 1 ден секој да се кандидира: Ова значи дека работниците треба 15 дена да го процесот на секое работно место (сетете се 10% од моќта за 2/3rds на време). Ова не е јасно мудар конфигурација, вашата работа големина е премногу голем! Тоа ќе бидат потребни најмалку двојно повеќе време да се добие работа обработени првичните работник треба да оди awol (време да ги собереш дека не се врати резултат плус преработка време). Во еден идеален ќе треба најмалку една цела работа лесно ослободен од крајот на секоја долго неактивен период, на тој начин да се задржи на работни места темпирана завршена и во најлош случај една работа би се два дена за процесот на прво треба да одат недостасува.
- Вработувања се 1 минута да се кандидира: Ова значи дека работниците да трае околу 15 минути за да ја стартувате секоја работа. Додека ова уште на почетокот може да се чини идеално, ќе добијат дополнителна работа обработка за време на ручек време, паузите за кафе, состаноци, итн ова сценарио става притисок врз други области на вашиот систем и да воведува свои проблеми. На пример, прво вашиот подесување / времето за обработка сооднос се случува да одам право надолу, па затоа губи ефикасноста на системот. Вашата мрежа ќе биде постојано стриминг работа информации на различни работници фрустрирачки вработените кои се Донг нивниот ден на ден работат. Ти си исто така ќе се стави повеќе вирус на вашата работа за обработка на серверот, како што има да ни ги подметне многу, многу мали парчиња на работа, на редовна основа. И на крај, во оваа ситуација ако вашата работа серверот оди надолу си оди за да се создаде огромен назад најавите на незавршени работи додека поголеми работни места може да продолжи на обработка блажено свесни дека работата на серверот се соочува со тешкотии.
Во реалноста ќе има никој идеален конфигурација за мрежа поставувањето, многу зависи од расположливите ресурси, видови на работа, работа пресврт време барања, мрежа способност, и така натаму. Сепак, некои насоки ќе бидат:
- Големина на работни места, така што секој работник може да се добие преку најмалку 3-4 работни места во рок од 15 часа (најдолго најверојатно неактивен период)
- Играј со работа големина, така што подесување време станува прилично незначителен во споредба со времето за обработка (имајќи го во предвид погоре точка).
- Ако работа не заврши во двоен износ на време (можеби помалку) што се очекува тоа да се заврши тоа се претпостави дека неговото помина awol и на проектот за обработка со друг работник. Ова значи дека можеби ќе треба да чекаат до три пати повеќе од нормална должина на работа за да заврши (можеби повеќе, ако после работа не). Вие може да сакате да се намали тоа време, но бидете внимателни да не го намали премногу како што може да почнат да повторување обработка на задачи на редовна основа.
- Вработувања треба да биде независна од надворешни услови колку што е можно. Работата сервер, на пример, само треба да се контактира на почетокот и на крајот на секое работно место.
- Не наситен вашата мрежа, ова ќе има два негативни ефекти, вашата дневна персонал ќе се најде со помош на мрежата фрустрирачки и проблеми може да се доживее со врски времето на проблем кој само ќе се влоши како ќе го зголемите вашиот мрежа.
- Обезбедување работни места може да работи на вашиот работници. Ако работни места да станат премногу меморија интензивна или простор на дискот интензивна работа ќе започне прекинувам и единственото нешто што ќе забележите е една капка во бројот на работни места обработуваат без вистинска причина зошто.
Доставување на резултатите од работа
При поднесување на резултатите од работа, важно е да се провери дека резултатите не се поднесени од страна на друг работник, посебно ако тековната работник е хибернација за некое време.
Кога резултатите се доставени да се обезбеди дека бројот на резултати се совпаѓа со бројот на записи во рамките на работа.
Како што е наведено претходно, а не може да биде над нагласи, се изгради грешка толеранција во работа на пронаоѓање и поднесување резултати. Работниците може да (и најверојатно ќе) оди во суспендира владата на повеќето неповолно на времето и тоа треба да се грижеа за. Исто така уште еднаш abstracting далеку вашите резултати поднесување ќе им помогне да се грижиме за идните промени на вашата работа на системот за контрола многу полесно да се справи со.
Резиме
Во овој section имаме погледна она што работа за контрола на серверот треба да направите и како да се добие многу основни систем воспоставен. Разговаравме како да се добие работа од контролниот систем и како најдобро да го конфигурирате работни места за да добиете најмногу нашите од вашата канцеларија мрежа систем. За да се заврши, став или две за доставување на резултатите назад на работа за контрола на серверот беше презентирана.
- А за работа за контрола на серверот управува работни места и гарантира дека сите работни единици се завршени
- Со abstracting вашата работа изберете / резултати поднесување можеме да го промениме технологијата на контрола на сервер без многу проблеми
- Конфигурирај вашиот работни места за да се осигура дека тие се работи брзо и ефикасно, без ставање премногу притисок врз вашата мрежна инфраструктура, и без повторување обработка на задачи на редовна основа.
- Осигурајте се дека ќе се изгради грешка толеранција и грешка checking во вашите секојдневни навики, работниците може да го суспендира и да продолжи и на повеќето неповолно пати. Не заборавајте да проверите дали резултати веќе се поднесени од страна на друг работник.
Следниот пат
Во Дел 3 ќе се создаде нашиот виртуелен машина за обработка и да се воспостави нашите прозорци машини да стане мрзлив работно време.