Увод
Ја радим у компанији у којој водимо много серија послове обраде милионе албума података сваког дана и ја сам недавно размишљање о свим машинама које седе око сваки дан не ради ништа по неколико сати. Зар не би било добро ако бисмо могли да користе те машине да ојача моћ обраде нашег система? У овом скуп чланака ћу погледати на потенцијалне користи од запошљавања канцеларије мрежу користећи виртуелизованим окружењима.
У 1. део сам дао преглед система и технологија ћу бити користећи и продискутовао неке од могућих разлога због којих бисте желели да створе мрежу канцеларије.
Посао контроле
Ако ћеш да ради посао онда ћете морати на неки начин њима управља. Вашом контролом посао система (на свом послу серверу) треба да буде стварно добро мислио пре него што чак и покушај да покрене мрежу канцеларија. Дакле прво, шта су задаци за систем посао контроле:
- Руку послове на захтев радника
- Реците шта радници врсте послова да ради
- Праћење послова
- Постарајте се да радна места су само једном покренути
- Обезбеди податке посао радницима, или бар им кажем где да га добијете
Систем такође треба да буде проширива, решење које ради за сада у једном случају може да се продужи да ради неколико типова послова, као пословне види вредност у мрежу решење. На пример, радна места могу стећи приоритета, више од једног посла типа може постојати (тј. више код базе), на крају можете чак могу да раде неколико различитих машина радника које су оптимизоване за сваку врсту посла (мада је не да се удаљава од "генеричке радник 'идеја). Увек се трудите да размишљамо о будућности када се развија систем, краткорочне визије може да доведе до дугорочне фрустрације и повећао развој времена.
Посао сервер
Идемо негде да треба да контролише наш посао од, ово би требало да буде једини систем у мрежи која има фиксни Ресоурце Лоцатор, бити да ИП адресу, име домаћина, УРЛ-а (коришћењем интерних ДНС-а), итд То је зато што радници треба да знају где да траже посао, радници морају да нађу посао систем контроле (не за посао систем контроле нађу раднике).
Посао Сервер себи не заиста компликован задатак (у основни систем свакако), потребно је да сачувате листу послова, руку послове, прима резултате, а касније да их сачувате за касније прегледавање. Како ови делови (као што су "руку послове ') су дефинисани може бити врло основни. Касније можемо проширити систем да укључи интерфејс администрације да додате, мењате, бришете, обуставити посао али ово је ван ове вежбе.
Нема разлога онда то сервер посао не може бити виртуелна машина ради у оквиру вашег главног обраду серверу под условом да не мозгова превише ресурса из њега. Посао Сервер, међутим не треба високу доступност, ако се иде на доле петак увече да ћеш изгубити цео викенд обраде, потенцијално вас то кошта неколико недеља вредности време обраде (у односу на ваш главни серверу обрада само) . Можда ћете желети да размотрите постављање посао сервера на терет уравнотежен окружење за високу доступност.
Основна подешавања
Основна подешавања за наш посао сервера ће се састојати од онога што зовем један од мојих Лимп сервера (то је Ли Нук, М иСкл, п кс). Код ради на Тхеа радници ће заправо раде шта послове може да води у интеракцији са са посла базама података система контроле. Касније смо могли створити веб сервис и заправо руку послове уместо да радници раде тежак посао сами, али за сада ћемо наставити да користимо КИСС принцип (Држите га једноставно, глупо!).
Дакле, хајде да створи три миСКЛ табеле да се баве пословима. Ово ће бити `посао`, `јобРецордс`, и `јобРесултс`.
Овде сам преко СКЛ пријатеља велики мало алтернатива пхпМиАдмин само зато што њено лакше да инсталирате на ЦентОС (за други виде: 10 Велики алтернатива пхпМиАдмин )
Ова табела се састоји од 5 једноставних поља,
- ИД: идентификује посао
- Име: Може бити клијент референца, или било који број других идентификатора
- Статус: Ви треба да знате где је посао у, на пример,
- 0: Није почело
- 1: покупили
- 2: Завршена
- стартед_би: Ко је започео ради посао? Ово није у потпуности потребне, али је лепо имати. Ја бих предложити праћење радника од стране њихових ИП адреса на мрежи
- стартед_ат: Када је радник почети посао? Праћењем послове који нису завршени у року Кс времена знамо да треба да покупи посао поново и почните да прераде од стране другог радника. Радници могао зауставити обраду / офлајн за било који број разлога, нестанка струје, пада система, мрежа губитак, итд
Лако је како би се ово сто се проширити са неколико додатних поља да би за статистику праћења, финиш време колона да бисте видели колико је посао, контра да виде колико радника покупио посао (оцигледно ово треба да теже да 1), посао приоритета, списак може ићи даље и даље. У више сложен посао сценарија би било могуће навести колико меморије радник је потребан приступ (и због тога користе само одговарајуце раднике), или чак који тип радника бити потребно.
Омогућава додавање неколико послова на пример:
Наредна табела поново је веома једноставан за разумевање, ово су наш посао евиденцију. Оне су у вези са главне табеле послове које колони `јобс_ид`. Марку до ове табеле много зависи од података који треба да снабдевање вашим радницима, омогућава да веома једноставан пример где имамо четири колоне:
- ИД: ИД записа
- Име: име особе
- адреса: Особа адреса
- јобс_ид: посао ИД који овај албум је повезан са
Трећи и последњи сто састоји се од стола резултата, колико има исту чине као наш сто евиденције, а уз додатак неких колона може да буде део табеле евиденције:
- јоб_рецорд_ид: Линк резултат посао сто
- Резултат: резултат подаци
... И то је све што је потребно за посао контролу! (Мада у врло основном нивоу) У мом случају ја сам указао на још један сто где се налазио мој података за обраду, али то може исто тако лако да се датотеке, параметре за покретање кода симулација, шта год пожелите.
Избор посао
Као што је наведено раније, да ли ће радници учинити наш менаџмент посао за нас, за сада, тако да све морамо да заиста урадите је да пронађете посао који захтева обраду и добију информације. Како бисмо то урадили? Па покупити наше критеријуме посао одабира и траже посао, у СКЛ сам урадио следеће:
- Узмите било који посао које нису означене као комплетна, али од нашег радника и ресет њих (замени __МЕ__ са идентификатор, најлакше би било ИП адреса):
УПДАТЕ `пословима` СЕТ `статусу` = 0 где је `статусу` = 1 и `стартед_би` = __МЕ__;
- Користећи наш посао критеријума за избор, изаберите посао и реците систем контроле да је овај радник који се тиме баве:
УПДАТЕ `пословима` СЕТ `статусу` = 1, `стартед_би` = __МЕ__, `стартед_ат` = НОВ () ВХЕРЕ `статус` = 0 или
(`Статус` = 1 и `стартед_ат`> ДАТЕ_СУБ (Нов (), интервал Кс сат)) ОРДЕР БИ `ид` АСЦ;
Би граббинг послова који се нису вратили резултате у Кс време ми се бринемо да се сви послови раде у случају пада радника или ће АВОЛ.
- Следећа зграби послове детаља следи сами евиденције:
СЕЛЕЦТ * ФРОМ `посао` ВХЕРЕ `стартед_би` = __МЕ__ ЛИМИТ 1;
СЕЛЕЦТ * ФРОМ `јоб_рецордс` ВХЕРЕ `ид` = __ЈОБИД__;
По завршетку посла смо убацили наше евиденције резултата и означити посао заврши. Запамтите као што се посао обуставити / наставе у било које време дозволи за неке робусности у вашем писму. Може бити да је задатак суспендује на пола пута кроз ажурирање посао контролни систем, тако да провере броја записа у посао и број резултата сачуван назад на посао систем контроле ће бити мудар потез.
Поред тога, док ово показује како се посао бира и управља са СКЛ упит оквир заиста би требало да буде апстраховања посао контроле, тако да ако одлучите да пређете на коришћење веб сервиса, фајл систем заснован, КСМЛ , или било који други број система неће утицати код изнад њега.
Конфигурација посао
Следећи аспект размотрити је посао величине и конфигурације. Играјући се са посла конфигурације можемо да удари одличан баланс између брзине, процес репликације, и поузданост. Узмите неколико сценарија ОФА:
- Послови узети 1 дан сваког да ради: То значи да је ваш радници морају 15 дана да обрадимо сваки посао (сетимо 10% енергије за 2/3рдс времена). Ово очигледно није мудар конфигурацију, величину посао је сувише велика! Било би потребно најмање двоструко времена да се посао обрађених треба иницијални радника иде АВОЛ (време да се покупи да није вратио резултат, плус прераде време). У идеалном бисте имати бар једну пуну посла лако брише на крају сваког дугог мировања периода, на тај начин да задржите посао откуцава над ау најгорем слуцају посао би два дана да процес треба да прво иде недостаје.
- Послови узети 1 минут да ради: То значи да је ваш радници траје око 15 минута да ради сваки посао. Иако је ово у почетку могу изгледати идеални, добијате додатни рад током прераде време ручка, кафе паузе, састанци, итд овакав сценарио ставља притисак на друге области вашег система и уводи своје проблеме. На пример, прво своју инсталацију / време обраде однос ће ићи десно доле, дакле губи ефикасност система. Ваша мрежа ће бити стално стриминг посао информације различитих радника фрустрирајуће особље које Донг на њихов свакодневни рад. Такође ћеш још више притисак на вашем серверу посао обраде као што је да се јело из много, много малих делова рада на редовној основи. На крају, у овој ситуацији уколико ваш сервер посао иде доле ћете створити огроман поново пријавите недовршеног посла, док већи посао могли даље од обраде блазено несвестан да је посао сервер је потешкоћа.
У стварности неће бити једна идеална конфигурација за мрежу подешавање, много тога зависи од расположивих средстава, врсте посла, захтевима посла потребног времена, мрежне могућности, и тако даље. Међутим неке смернице ће бити:
- Величина послове тако да сваки радник може да добије кроз најмање 3-4 послове у року од 15 сати (најдуже вероватно мировања временском периоду)
- Играј се са посла величине, тако да подешавање време постаје прилично безначајно у односу на време обраде (имајући у виду горе тачке).
- Ако посао не заврши у двокреветним време (можда мање) како очекујете од њега потпуно је претпоставити да је отишао АВОЛ и почетак прераде га са другим радник. То значи да ћете можда морати да сачека до три пута нормалне дужине посао за то да заврши (вероватно дуже ако касније посао не успе). Можда ћете желети да смањи овај пут, али будите опрезни да не смање превише јер може да почнете умножавање обраду задатке на редовној основи.
- Послови треба да буде независно од услова у највећој могућој мери. Посао серверу, на пример, треба само бити контактиран на почетку и крају сваког посла.
- Не заситити вашој мрежи, то ће имати два негативне ефекте, ваше дневне особље ће наћи преко мреже фрустрирајуће и проблеми се могу јавити са прикључцима тајминг се проблем који ће само погоршати као што скали ваше мреже.
- Обезбедити посао може да ради на свом радника. Ако послови постали превише интензиван меморије или простора на диску интензиван посао ће почети Прекидам и једина ствар коју ћете приметити је пад у броју радних места обрађених без правог разлога зашто.
Подношење Резултати посао
Приликом подношења резултате посао важно је да проверите да резултати нису поднет од стране другог радника, поготово ако садашњи радник је мировао неко време.
Када су резултати достављају обезбеди да број резултата утакмица број записа у посао.
Као што је наведено раније, и не може се више истакао, изградња толеранције грешке у посао проналажења и резултате подношење. Радници могу (и највероватније ће) ићи у суспенд мода највише незгодно времена и то треба да буде цатеред за. Такође, још једном апстраховања твоје резултате поднесак ће помоћи задовољава будуће промене на систему контроле посао много лакше да се баве.
Резиме
У овом сецтионА смо посматрали шта посао контроле сервера треба да уради и како да се врло основни систем подешен. Разговарали смо о томе како да бисте преузели посао из система контроле и како најбоље да подесите посао да се већина наших вашег система канцеларије мрежу. До краја, пасус или два о достављању резултата назад серверу посао контроле је представљена.
- Посао контролу сервера управља пословима и осигурава да се заврше сви радне јединице
- Би апстраховања ваш посао изабрали / резултата подношење можемо да променимо технологију контроле сервера без много проблема
- Конфигуришите своје послове како би се осигурало да су воде брзо и ефикасно без стављања превише притисак на инфраструктуру мреже, а без умножавање обраду задатке на редовној основи.
- Проверите да ли изградити грешке толеранције и грешке цхецкингА у своје рутине, радници могу суспендовати и наставити и већина незгодно пута. Не заборавите да проверите да ли резултати су већ поднети од стране другог радника.
Следећи пут
У 3. део ћемо створити наш виртуелни машина за прераду и поставили наши прозори машине да постане мировања времена радника.