Службата грид-технологията използва Виртуалните среди - част 2

С Стивън Лойд Watkin , петък 4-ти Декември 2009 23:23

Въведение

Аз работя в компания, в която ще свършим много работни места за обработка на партидите милиони копия на данните, всеки ден и аз си мисля напоследък за всички машини, които седят около всеки ден правиш нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини да се засили процесорна мощ на нашите системи? В тази поредица от статии, аз ще разгледаме потенциалните ползи от наемането на офис мрежа използване виртуализирани среди.

В част 1, аз се прави преглед на системата и технологии ще се използват, както и обсъдени някои от възможните причини, поради които бихте искали да се създаде мрежа офис.

Работа контрол

Ако ще да се работи работни места след това започваш да имат нужда от някакъв начин да ги управляват. Вашата система контрол на работата (в работата си сървър) трябва да бъдат много добре обмислени, преди дори се опитват да стартирате мрежата офис. Така че, от една страна, какви са задачите за работа система за управление:

  • Раздайте работни места по искане на работниците
  • Кажете какъв тип работници на работните места да тече
  • Проследяване на работни места
  • Уверете се, че работните места се провеждат само веднъж
  • Осигуряване на работа данни за работниците, или поне да им кажа къде да го получите

Системата също така трябва да бъде разширяема, решение, което работи за сега в един случай може да бъде удължен да тече няколко вида на работните места, тъй като бизнес вижда стойност в мрежата решение. Например, работни места могат да получат приоритет, повече от един вид работа могат да съществуват (т.е. няколко бази код), в крайна сметка може дори да тичам няколко различни машини работник, които са оптимизирани за всеки вид работа (въпреки, че се движи далеч от "родово работник "идеята). Винаги се старайте да мислим за бъдещето, когато разработват системи, краткосрочна визия може да доведе до по-дългосрочен план разочарование и увеличаване на времето за развитие.

Работа Server

Ние ще трябва някъде да контролираме работни места от това следва да бъде единствената система в мрежа, която има постоянен указател на ресурс, се че един интернет адрес, име на хост, URL (като се използва вътрешен DNS) и т.н. Това е така, защото работниците трябва да знаят къде да търсят работа, работниците трябва да се намери работа на системата за контрол (не е работа система за контрол намерите работници).

Сървърът работа по себе си не са наистина сложна задача (в основен или иначе системата), той трябва да се съхранява списък с работни места, раздават работни места, да получи резултати, и след това да ги съхранява за по-късно възстановяване. Как тези части ("ръка" работни места, като например) са определени да бъдат най-основните. По-късно може да разшири системата за включване на дадено приложение интерфейс за добавяне, редактиране, изтриване, спиране на работни места, но това е извън тази дейност.

Няма причина, каквато и след това, че сървърът ви работа не може да бъде виртуална машина тичане в основната си преработка сървър при условие че не се източва твърде много средства от нея. Работата сървър обаче се нуждае от висока надеждност, ако тя отива надолу върху петък вечер вие ще загуби целия уикенд на обработка, потенциално ви струва няколко седмици стойност на времето за обработка (в сравнение с основните си обработка на сървър само) . Вие може да искате да разгледа пускането си работа сървъра на натоварване балансирана среда за висока надеждност.

Basic Setup

Основната настройка за нашата работа сървър ще се състои от онова, което наричам един от моите сървъри Limp (това е Li Nux, ySql м, P HP). Кодът работи на Теа работници ще работи в действителност какви работни места може да работи, като взаимодейства с работата с бази данни, системата за контрол. По-късно може да създаде уеб услуги и действително ръка работни места, а не като на работници свърши тежката работа сами, но за сега ще продължи да използва принципа KISS (Съхранявайте го просто, тъпако!).

Така че, нека направим три MySQL таблици, за да се справят с работни места. Те ще бъдат "работни места", "jobRecords", и "jobResults".

работни места таблица Тук съм с SQL Бъди много малко алтернатива на PHPMyAdmin , само защото си по-лесно да се инсталира на CentOS (за другите виж: 10 Големите алтернативи на PHPMyAdmin )

В тази таблица се състои от 5 прости полета,

  • номер: уникална идентификация на работа
  • име: Може да е клиент справка, или произволен брой други идентификатори
  • Състояние: Трябва да знаете, когато работата е на, например
    • 0: Не е стартирала
    • 1: Качват
    • 2: Завършен
  • started_by: Кой е започнах да правя на работа? Това не е напълно задължително, но е хубаво да има. Бих предполагат, проследяване на работниците чрез IP адреса си в мрежата
  • started_at: Кога работникът започне работа? Чрез проследяване на работни места, които не са завършени в рамките на сумата Х от време, ние знаем, че трябва да се вземат на работа отново и да започне преработката им от друго лице. Работниците могат да спрат обработката / да се публикуват за всеки ред причини прекъсване на електрозахранването, катастрофа, загуба на мрежова връзка и т.н.

Лесно е как тази таблица може да бъде разширен с няколко допълнителни полета, за да позволи статистическите данни за проследяване, колона край време, за да видите колко време работата взе, брояч, за да видите колко работници качват на работа (явно това трябва да са склонни да 1), работа приоритет, списъкът може да продължи и нататък. В по-сложни сценарии на работа би било възможно да се определи колко памет на работника ще се нуждаят от достъп до (и следователно да използват само подходящи работници), или дори какъв тип работник ще се изисква.

Да се ​​добавят няколко работни места например:

Например работни места

В следващата таблица отново е доста лесен за разбиране, това са нашите работни записи. Те са свързани с основната маса работни места от една колона "jobs_id". В съставът на тази таблица, в голяма степен зависи от данните, които трябва да предоставят на работниците си, нека се направи много прост пример, когато имаме четири колони:

  • номер: ID на записа
  • име: Име на човек
  • адрес: адрес на човек
  • jobs_id: Работата ID, че този запис е свързано с

Третата и финална маса се състои от таблицата с резултати, то е почти същото като да се нашите данни таблица, както и с добавянето на някои колони може да бъде част от записите таблица:

  • job_record_id: Връзка на резултата в таблицата за задания
  • Резултатът: В резултат на данните

... И това е всичко необходимо за контрол на работата! (Макар и на много базово ниво) В моя случай аз съм посочи друга таблица, където е бил данните си за обработка, но това също така могат да са на файл, параметри да тече код симулация, ти име.

Избор на работа

Както вече бе посочено, работниците ще направим всичко за управление на работа за нас, за сега, така че всички ние трябва наистина да направите, е да си намерят работа, която трябва обработка и да получите информация. Как ще го направим? Ами вземете нашите критерии за подбор на работни места и търсят работа, в SQL направих следното:

  1. Вземете всички работни места, които не са маркирани като завършени от нашите работници и нулиране тях (заместител __ME__ с идентификатор, най-лесно ще бъде IP адрес):
      UPDATE "работни места" SET "статут" = 0, когато "статут" = 1 и "started_by" = __ME__; 
  2. С помощта на нашите критерии за работа за избор, изберете работа и да каже на система за контрол, че този работник се занимава с него:
      UPDATE "работни места" SET "статут" = 1, "started_by" = __ME__, "started_at" = NOW () КОГАТО "статут" = 0 или
     ("Статут" = 1 и "started_at"> DATE_SUB (NOW (), период за X час)) ORDER BY "номер" ASC; 

    Като вземат работните места, които не са се завърнали резултати в размер X от време ние гарантираме, че всички работни места се провеждат в случай на работник от срив или ще несигурен.

  3. Следваща вземете работни места Подробности, следвани от самите записи:
      SELECT * FROM `работни места", когато "started_by" = __ME__ LIMIT 1;
     SELECT * FROM `job_records", когато "номер" = __JOBID__; 

След приключване на работа ние посочете ни резултат записа и маркирайте работа за пълно. Не забравяйте, тъй като работните места може да спре / възобнови по всяко време да позволи за някои стабилността в скрипта. Тя може да бъде, че задачата, спира по средата на актуализиране на системата за контрол на работата, така че проверка на броя на записите в работа и броя на резултатите, записани обратно към системата за управление на задачите би било мъдър ход.

В допълнение, като това показва, колко работни места могат да бъдат избрани и управлявани от SQL-заявка кадри, които трябва наистина да бъде абстрахиране работата си контрол, така че ако решите да преминете към използване на уеб услуги, файл, базирана система, XML или друг съвкупност от системи, това няма да повлияе на кода над него.

Работа за конфигурация

Следващият аспект е да се помисли работа размери и конфигурация. С играе с работа конфигурация може да удари отличен баланс между скорост, репликация процес, и надеждност. Вземете няколко OFA сценария:

  1. Работата отнема 1 ден всяка да текат: Това означава, че работниците трябва да 15 дни за обработка на всяко едно работно място (не забравяйте 10% от мощността за 2/3rds на време). Това очевидно не е мъдър конфигурация, вашата работа размер е твърде голям! Това ще отнеме поне два пъти повече време, за да си намеря работа преработени следва първоначалната работник отиде несигурен (време, за да вземем, че не се е върнал в резултат плюс преработка време). В един идеален ще трябва най-малко един пълен работен лесно премахнати до края на всеки продължителен период на престой, по този начин да поддържате работни места тиктака отново и в най-лошия случай, че работата ще отнеме два дни, за процеса, ако първият изчезнали.
  2. Работа по 1 минута, за да текат: Това означава, че работниците отнеме около 15 минути, за да тичам всяка работа. Въпреки че това може първоначално изглежда идеално, получавате допълнителна обработка работа по време на обяд, кафе паузи, срещи и т.н. този сценарий поставя натиск върху други области на вашата система и въвежда собствените си проблеми. Например, от една страна настройките съотношение между времето за обработка ще отиде чак, поради загуба на ефективността на системата. Вашата мрежа ще бъде непрекъснато стрийминг работа информация за различните работници разочароващ служители, които са оспорвани ден им работен ден. Вие също така ще положи повече натоварване на сървъра си работа на преработка, трябва да ястие на много и много малки части от работа на регулярна основа. На последно място, в тази ситуация, ако си работа сървър слиза ти започваш да се създаде огромен обратно регистър на недовършена работа има предвид, че по-големи работни места може да продължи обработката на блажено неведение, че работата сървър е в затруднено положение.

В действителност няма да има една идеална конфигурация за вашата мрежа настройка, много зависи от наличните средства, видовете работа, работа изисквания време за изпълнение, мрежови възможности, и така нататък. Все пак някои насоки ще бъдат:

  • Размер на работни места, така че всеки работник може да получи чрез поне 3-4 работни места в срок от 15 часа (най-дългия период на престой вероятно време)
  • Играйте с работа размер, така че време за настройка става доста незначителни в сравнение с времето на преработка (като се има предвид по-горе точка).
  • Ако работата не завърши в двоен размер от време (може би по-малко), които се очаква то да приключи тя предположи, че го няма несигурен и да започнат да ги обработват с друг работник. Това означава, че се наложи да чака до три пъти повече от нормалната продължителност на работа, за да пълни (може би повече, ако последващата работа не успява). Вие може да искате да се намали този път, но внимавайте да не се намали прекалено много, колкото може да започне да дублират задачите за обработка на регулярна основа.
  • Работата трябва да бъде независима от външни изисквания, доколкото е възможно. Работата сървър, например, трябва да се свържат в началото и в края на всяка работа.
  • Да не се насити вашата мрежа, това ще има два негативни ефекта, Вашите служители през деня ще намерите използват мрежата разочароващо и проблеми могат да бъдат изпитани с времето връзките на проблем, който само ще се влоши, докато мащаба си мрежа.
  • Осигуряване на работни места може да работи с вашите работници. Ако работните места да стане прекалено интензивно памет или дисково пространство интензивни работни места ще започне прекъсване и единственото нещо, което ще забележите, е намаляване на броя на работните места обработват без реална причина.

Подаване на резултати от работата

При представянето на резултатите от работата е важно да се провери дали резултатите не са били представени от друг работник, особено ако настоящият работникът е бил латентен за известно време.

Когато резултатите са предоставени гарантира, че броят на резултати, съответстват на броя на записите в тази работа.

Както бе посочено по-горе, и не може да бъде над подчерта, изграждане на устойчивост на откази в работата извличане и резултатите представяне. Работниците могат (и най-вероятно ще), отидете в режим за спиране на най-неудобно време и на това трябва да бъде взети под внимание. Също така за пореден път абстрахиране далеч резултатите си представяне ще се погрижат за бъдещи промени в системата за контрол върху работата много по-лесно да се справим.

Обобщение

В този section сме разглеждали какво е сървър контрол на работата трябва да се направи и как да се получи един много основен система, създадена. Ние обсъдихме как да извлечете от работата на системата за контрол и най-добрия начин за конфигуриране на работни места, за да получите най-ни на вашата система офис мрежа. За да се завърши, една или две точки при подаването на резултатите обратно на сървъра контрол върху работата беше представен.

  • Сървърът контрол върху работата управлява работни места и гарантира, че цялата работа, единици са завършени
  • Чрез абстрахиране работата си изберете / подаване резултати можем да променим технологията на сървъра за управление, без много проблеми
  • Конфигуриране на работни места за да се гарантира, че те се провеждат бързо и ефективно, без въвеждането на твърде много натиск върху инфраструктурата на мрежата, и без да дублират задачите за обработка на регулярна основа.
  • Уверете се, че изграждането на отказоустойчивост и checking грешка в съчетанието си, работниците могат да спре и да се започне и най-неудобен пъти. Не забравяйте да проверите дали резултатите са били представени от друг работник.

Следващия път

В част 3 ще създадем виртуална машина за обработка и създаване на прозорците ни машини да стане празен работно време.

Един Отговор към "грид-технологията използва Office Виртуалните среди - Част 2"

  1. Heya! Добра идея, но това наистина може да свърши тази работа?

Вашият коментар













Панорама Тема от Themocracy

5 посетители онлайн
4 човека, 1 ботове, 0 потребители
Макс посетители днес: 17 в 20:54 UTC
Този месец: 26 на 07.05.2011 12:35 ч. UTC
Тази година: 130 на 28-03-2011 22:40 UTC
През цялото време: 130 на 28-03-2011 22:40 UTC