Вовед
Јас работам во компанија каде што трчаме многу серија работни места обработка милиони евиденциите на податоци секој ден и јас сум бил размислување неодамна за сите машини кои седат околу секој ден прават ништо за неколку часа. Зарем не би било добро доколку можеме да ги користат овие машини за да ја зајакне процесорска моќ на нашите системи? Во овој сет на статиите, ќе одам да се погледне на потенцијалните придобивки од вработувањето канцеларија решетка со користење виртуализирани средини.
Во Дел 1 дадов еден преглед на системот и технологии ќе биде со користење, како и разговараа некои од потенцијалните причини зошто сакаш да се создаде една канцеларија мрежа.
Контрола на работа
Ако си оди за да се извршува работни места, тогаш вие ќе треба на некој начин да управуваат со нив. Вашата работа системот за контрола (на Вашето работно место сервер) треба да биде навистина добро обмислен пред дури и се обидува да се кандидира канцеларија мрежа. Значи прво, она што се задачите за работа системот за контрола на:
- Рака, работни места, на барање од вработените
- Кажете работници каков вид на работни места за да се кандидира
- Следење на работни места
- Осигура дека работните места се извршуваат само еднаш
- Обезбеди работа податоци на работниците, или барем да им каже каде да го добие
Системот, исто така, треба да се растеглива, решение кое за сега работи во еден случај може да се продолжи да се кандидира на неколку видови на работни места, како на бизнис го гледа во вредност од мрежа решение. На пример, може да добијат работни места приоритети, повеќе од еден вид работа може да постои (т.е. неколку кодот основи), за на крајот дури и може да работи на неколку различни работник машини кои се оптимизирани за секој тип на работа (иако тоа не се движат подалеку од зборот "генерички работник "идеја). Секогаш се трудам да размислувам за иднината кога развој на системи, краткорочни визија може да доведе до долгорочни фрустрации и зголемениот развој време.
Работа на серверот
Ние ќе треба некаде да ги исконтролираме своите работни места од, ова треба да биде единствен систем во вашата мрежа, која има фиксна локатор, да биде дека некоја IP адреса, име, адреса (користејќи интерни DNS), итн Ова е затоа работниците треба да знаеш каде да бараат работа, работниците треба да се најде работа системот за контрола на (не на работа системот за контрола најде работници).
На работа серверот себе, всушност не е комплицирана задача (во основниот систем во секој случај), тоа треба да чува листа на нови работни места, од рака, работни места, да се примаат резултатите, а потоа и да ги чувате за подоцнежни читања. Како овие делови (како "од рака работни места") се дефинирани може да биде многу основни. Подоцна може да се прошири системот да го вклучите интерфејс за да додадете, уредувате, бришете, да го суспендира работни места, но ова е надвор од оваа вежба.
Нема причина она што тогаш вашата работа серверот не може да биде една виртуелна машина работи во рамките на вашата главна обработка на серверот доколку не на мозоци премногу ресурси од него. На работа на серверот сепак не треба висока достапност, ако тоа оди надолу на петок вечер си оди за да се изгуби целиот викенд, на обработка, потенцијално ќе ве чини неколку недели во вредност од времето на обработка (во споредба со вашата главна обработка на серверот сам) . Можете да размислите и за поставување на вашата работа на серверот на товар избалансиран средина за висока достапност.
Основни подесување
Основните поставки за нашата работа серверот ќе се состои од она што јас го повикувам еден од моите куцам серверите (дека е Ли nux, м ySql, П HP). Кодот се извршува на the работници, всушност, ќе се работи од она работни места тоа може да работи преку интеракција со работа со системот за контрола на бази на податоци. Подоцна би можеле да се создаде веб сервис, а всушност рака работни места наместо на работниците прават напорната работа и самите, но сега за сега ќе продолжиме со користење на принципот 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 адреса):
UPDATE "работни места" СЕТ "статус" = 0 КАДЕ `статус: = 1 И =" started_by `__ME__;
- Користење на нашата работа критериуми за селекција, изберете работа и да се каже дека овој систем за контрола на работникот се занимава со тоа:
UPDATE "работни места" СЕТ "статус" = 1, "started_by` = __ME__, "started_at` = СЕГА () КАДЕ `статус: = 0 или
("Статус" = 1 И `` started_at> DATE_SUB (СЕГА (), интервал Х ЧАС)) Подреди по: име "ASC; Со грабање работни места кои не се вратија резултати во Х сума на време, ние се осигура дека сите работни места, се работи во случај на работникот паѓаат или ќе AWOL.
- Следна зграби работни места детали проследено со евиденцијата се:
SELECT * FROM "работни места" КАДЕ "started_by` = __ME__ ГРАНИЧНИТЕ 1;
SELECT * FROM `job_records` КАДЕ `id` = __JOBID__;
По завршувањето на работа се внесува нашите резултат евиденција и одбележување на работа како завршена. Се сеќавам како работни места може да суспендирање / продолжување во секое време им овозможи за некои стабилноста во вашата скрипта. Тоа може да биде дека задачата ја прекина половина пат низ ажурирање на системот за контрола на работата, па со проверка на бројот на записи во една работа, а бројот на спасени резултати врати на работа за контрола на системот ќе биде мудар потег.
Покрај тоа, додека ова покажува колку работни места може да бидат избрани и раководен од пребарување SQL-рамката што навистина треба да се црпење на вашата работа контрола, така што, ако одлучат да се префрлат на користење на веб сервисите, датотечниот систем заснован, XML , или било која друга број на системи за тоа нема да влијае на кодот над неа.
Конфигурација работа
Следниот аспект е да се разгледа работата големина и конфигурација. Играјќи со работа конфигурацијата што може да штрајк одличен баланс помеѓу брзината, процесот на репликација и сигурност. Земете неколку ОРД сценарија:
- Работни места се 1 ден секој да тече: Ова значи дека вашиот работниците треба 15 дена да го процесот секоја работа (сетете се 10% од струјата за 2/3rds на време). Ова не е јасно како мудар конфигурација, вашата работа големина е премногу голем! Тоа ќе бидат потребни најмалку двојно време за да се добие работа обработени првичните работник треба да оди AWOL (време да собереш дека тоа не се враќа резултат плус преработка време). Во еден идеален сакате да има барем еден со полно работно лесно ослободен од крајот на секоја долг неактивен период, на тој начин да се задржи на работни места темпирана завршена и во најлош случај една работа ќе бидат потребни два дена за процесот треба на прво да одам водат за исчезнати.
- Работни места се 1 минута да тече: Ова значи дека вашиот работниците да трае околу 15 минути за да ја извршите секоја работа. Додека ова уште на почетокот може да се чини идеално, ќе се добие дополнителна работа за обработка за време на ручек време, паузи за кафе, состаноци, итн ова сценарио става притисок врз другите подрачја од вашиот систем и ги воведува свои проблеми. На пример, прво вашата инсталација / време за обработка на соодносот е нема да оди право надолу, затоа губи ефикасноста на системот. Вашата мрежа ќе биде постојано стриминг информации работа на различни работници фрустрирачки за вработените кои се донг нивната секојдневна работа. Ти си исто така ќе се стави повеќе вирус на Вашето работно место за обработка на серверот, како што има да ни ги подметне и многу многу мали парчиња на работа, на редовна основа. И на крај, во оваа ситуација ако вашата работа сервер оди надолу си оди за да се создаде огромен назад најавите на недовршени работи додека поголемите работни места може да продолжи на обработка блажено свесни дека работата на серверот беше тешкотии.
Во реалноста нема да има една идеална конфигурација за вашата мрежа поставувањето, многу зависи од расположливите ресурси, типови на работа, работа за време во исполнување барања, мрежна способност, и така натаму. Сепак некои упатства кои би биле:
- Големина на работни места, така што секој работник може да се добие преку најмалку 3-4 работни места во рок од 15 часа (најдолго најверојатно неактивен период)
- Играј со работа големина, така што подесување време станува прилично незначителен во споредба со времето на обработка (имајќи го во предвид погоре точка).
- Ако работа не заврши со двоен износ на време (можеби и помалку) ве очекуваме тоа да се заврши тоа се претпостави дека нејзиниот качил AWOL и на проектот за обработка со друг работник. Ова значи дека можеби ќе треба да чекаат до три пати повеќе од нормална должина на работа за да заврши (можеби и повеќе, ако после работа не). Можеби ќе сакате да го намали тоа време, но бидете внимателни да не го намали премногу како што може да започне удвојување обработка на задачите, на редовна основа.
- Работни места треба да биде независна од надворешни услови колку што е можно. На работа на серверот, на пример, само треба да се контактира на почетокот и на крајот на секое работно место.
- Не наситен вашата мрежа, ова ќе има два негативни ефекти, вашата дневна персонал ќе се најде со помош на мрежата фрустрирачки и проблемите може да биде искуство со врски тајмингот од еден проблем кој само ќе се влоши како што скала вашата мрежа.
- Обезбеди работни места може да работи на вашата работници. Ако работни места стануваат премногу интензивни меморија или диск простор интензивна работа ќе започне прекинувам и единственото нешто што ќе забележите е една капка во бројот на работни места, обработени со без вистинска причина зошто.
Доставување на резултатите од работа
При поднесување на резултатите од работа, важно е да се провери дека резултатите не беа предадени од страна на друг работник, посебно ако тековната работник е неактивна веќе некое време.
Кога резултатите се доставува осигура дека бројот на резултати се совпаѓа со бројот на записи во рамките на работа.
Како што е наведено претходно, и не може да биде над нагласи, се изгради грешка толеранција во работа пронаоѓање и поднесување резултати. На работниците може да (и најверојатно ќе) оди во суспендира владата на повеќето неповолно пати и тоа треба да се грижеа за. Исто така уште еднаш за црпење далеку вашите резултати поднесување ќе им помогне на се грижиме за идните промени на вашата работа системот за контрола на многу полесно да се справи со.
Резиме
Во овој section имаме погледна во тоа што е работа за контрола на серверот треба да направите и како да се добие многу основни воспостави систем. Исто така разговаравме како да се потсетите на работа од контролниот систем и како најдобро да го конфигурирате работни места за да добиете најмногу од вашиот нашата канцеларија мрежа систем. До крај, еден став или два за поднесување на резултати се врати на работа за контрола на серверот беше презентиран.
- А работа контрола сервер управува работни места и да гарантира дека сите работни единици се завршени
- Од црпење на вашата работа одберете / Резултати од поднесување можеме да го промениме технологијата на контрола на сервер без многу проблеми
- Конфигурирајте ја вашата работа за да се осигура дека тие се работи брзо и ефикасно, без ставање премногу притисок врз вашата мрежна инфраструктура, и без удвојување обработка на задачите, на редовна основа.
- Се осигура дека ќе се изгради грешка толеранција и грешки checking во вашиот рутини, работниците можат да го суспендира и да продолжи и на повеќето неповолно пати. Не заборавајте да проверите дали резултатите се веќе доставени од страна на друг работник.
Следниот пат
Во 3 дел ќе креираме нашата виртуелна машина за обработка и да се воспостави нашите прозорци машини да стане мрзлив работно време.