Катэгорыя: Grid Computing

Упраўленне Grid Computing выкарыстаннем віртуальных асяроддзяў - Частка 4

Па , у пятніцу 4 снежні 2009 года 11:59 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетная апрацоўка мільёны запісаў дадзеных кожны дзень, і я думаў нядаўна пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў, я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстанне виртуализированных асяроддзях.

У частцы 3 мы стварылі віртуальную машыну апрацоўкі і налады вокны машыны, каб стаць часу прастою работнікаў.

Запуск апошняй версіі кода

Непазбежна пасля стварэння працоўных бізнэс-логікі будзе мяняцца, памылкі будуць знойдзены, хутчэй больш эфектыўны код будзе выпускацца ў выніку чаго вашыя работнікі сядзелі апрацоўкі дадзеных, выкарыстоўваючы старыя смярдзючыя код . Як жа мы гарантуем, што мы заўсёды з выкарыстаннем найноўшая і самая лепшая версія нашага сцэнары апрацоўкі?

Ёсць некалькі вельмі лёгка простыя спосабы, якімі мы маглі б зрабіць гэта, трук, аднак, заключаецца ў зніжэнні магутнасці і сеткавы трафік у дасягненні гэтай мэты. Давайце пачнем з самых простых рашэнняў і палепшыць яе павольна, на працягу пары ітэрацый.

Першы метад будзе проста падлучыцца да нашай працы серверны элемент кіравання (праз Samba, FTP, або падобны) і апусціце апошнюю версію кода. Не вельмі эфектыўна, але ён будзе рабіць гэтую працу. Дазваляе палепшыць што-тое, а як наконт стварэння Rsync сцэнар і выкарыстанні, што кожны раз замест гэтага? Акрамя тое, што аб уводзе нашых апошніх апрацоўкі скрыпту ў падрыўной праверыць код спачатку, а потым проста абнаўляем нашу код пры кожным запуску ( запускалі )?

У рэшце рэшт мы маглі б скончыць з баш скрыпт (названы крон кожныя 10 хвілін), які выглядае, як проста, як гэта:

  #! / Бэн / ш
 пс, калі сякера | Grep-V GREP | GREP PHP > / Dev / нуль
 затым
     рэха "Праца ў цяперашні час апрацоўкі, выхад"
 яшчэ
     рэха "Праца не працуе, пачніце прама цяпер"
     кд / шлях / да / рабочай / копіі
     запускалі
     PHP yourJobProcessingScript.php
 Fi 

Цяпер мы можам быць упэўненыя, што з кожным запускам мы вызначана ўстаноўлена апошняя кода. Мы забеспячэння гэтага шляхам абнаўлення нашай базы кода кожны раз, калі мы выконваем запуску і зніжэння сеткавага трафіку толькі на перадачу файлаў адрозненні паміж нашай сеткі.

У маёй дэманстрацыі ўстаноўкі, я зрабіў менавіта так, як вышэй. Subversion быў усталяваны на маім серверы апрацоўкі працу, і я проста выцягнуў апошні код ад «працоўны» філіяла з дапамогай "запускалі". Я таксама дадаў тэгі нумар версіі маёй апрацоўкі скрыпту, які быў вернуты ў базу дадзеных як частка даў вынікі. Такім чынам, я мог бачыць, што мой код абнаўляецца кожны раз, калі я скапіяваў мой ствол у той аддзяленне работніка, што я пэўна ўстаноўлена апошняя апрацоўка сцэнара.

На падставе апошніх дадзеных

Калі ваша праца апрацоўкі выкарыстоўвае крыніцы дадзеных, то ў нейкі момант гэтыя будуць абноўлены. Калі вы называеце крыніц дадзеных на аснове вельмі рэдка вы збіраецеся паводкі сеткі з трафікам, як толькі вашыя работнікі пачнуць выконвацца чаго ўсё ў тупік. Для майго рашэнні, я вырашыў, што я хацеў бы перанесці крыніц дадзеных ва ўсім з майго віртуальных машын.

Трымайце вы коні там! Што рабіць, калі крыніцы дадзеных Велізарная? Ну гэта сапраўды выпадак, які аб'ём дадзеных можа ісці гаворка? Гэта можа быць больш эканамічна эфектыўным, каб усталяваць дадатковы ёмісты жорсткі дыск у кожную машыну, чым набыць дадатковы сервер апрацоўкі. Гэта пытанне аб бюджэце і складае да бізнесу, каб вырашыць. Гэта, можа быць, што ваш крыніцы дадзеных настолькі вялікі, што яго проста немагчымым захаваць гэты аб'ём дадзеных у вашых машын работніка. У такім выпадку, што б вы зрабілі? Ну, мы маглі глядзець на выклік лакальнага сервера дадзеных, але гэта можа выклікаць праблемы з сеткай. У гэтым выпадку сетка сістэмы, такія як гэта можа стаць нерэальным ўключыць у офіснай асяроддзі. Ён таксама можа быць тое, што вы можаце паглядзець у альтэрнатыўных стратэгій працы, напрыклад, толькі патэлефанаваўшы ў працоўныя паміж 8 вечара і 6 раніцы кожную ноч, і / або дросселирования крыніцы дадзеных запытаў.

Рухаемся далей скажам нашых дадзеных крыніц складзе 100 ГБ дадзеных. Ну так, гэта даволі шмат дадзеных для перамяшчэння па сетцы на абнаўленне. Як бы мы гарантуем, што ў нас ёсць апошняя копія дадзеных у гэтым выпадку? Rsync ёсць магчымасць, але асабіста я думаю, запусціўшы ваш апошні крыніца дадзеных на серверы апрацоўкі замовы і наладай як майстар у рэплікацыі (з добры доўгі часопіс бен), можа быць шлях:

рэплікацыі Пры ўсталёўцы кожнага з вашых работнікаў у якасці рабоў для кіравання заданнямі серверам абнаўленняў да крыніц дадзеных будзе працякаць ўніз прыемна, каб вашыя работнікі, не велізарны рост сеткавай актыўнасці (гэта значыць, калі вы выконваеце велізарную абнаўлення дадзеных, і ўсе вашы працоўныя ўдар у адразу). Гэта мае перавагі ў параўнанні з Rsync ў тым, што вы не атрымаеце доўгую паўзу перад кожнай рабоце; як абнаўлення баз дадзеных, MySQL дэмана на вашым працоўным будзем пастаянна абнаўляць свае дадзеныя, а апрацоўка працягваецца.

Гэта, як я стварыў мой дэманстрацыя сервера. Каб наладзіць рэплікацыю я рушыў услед за кіраўніцтва на сайце MySQL ( Налада рэплікацыі ) і на працягу 20 хвілін у мяне быў Пачатковае работніка тыражаванне кіравання заданнямі сервераў дадзеных. За кожны дадатковы працаўнік налады рэплікацыі і працэс працаваў кожны раз, калі В. М. быў скапіяваны.

Рэзюмэ

У гэтай частцы артыкула мы разгледзелі, як лёгка і бязбольна гэта захаваць ваш код апрацоўкі аж да цяперашняга часу using Rsync або subverion (SVN), каб зрабіць працу і зменшыць сеткавай трафік, у той жа time. Мы таксама абмеркавалі, як захаваць вашыя дадзеныя ў крыніцы інфармацыі апошнюю дату, што дазваляе яму працякаць ўніз да кожнай з вашых работнікаў. Такім чынам, мы вобласці забеспячэння таго, каб мы ў нагу з бізнес-логікай і інфармацыі ў нашай сістэме сеткі офіса. Там, відавочна, будзе незлічоныя альтэрнатывы выкананню гэтых задач, але тут былі два простых прыкладу, каб паказаць, наколькі лёгка рашэнне прыбыць.

Наступны раз

У заключнай частцы гэтай серыі, трапна назваў частка 5 , мы абмяркуем разгортванні гэтай сістэмы. Я буду рэзюмаваць, што было вывучана і тое, што мне ўдалося стварыць.

Упраўленне Grid Computing выкарыстаннем віртуальных асяроддзяў - Частка 1

Па , у пятніцу 4 снежні 2009 года 11:23 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетная апрацоўка мільёны запісаў дадзеных кожны дзень, і я думаў нядаўна пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў, я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстанне виртуализированных асяроддзях.

Як PHP- распрацоўнік я збіраюся выкарыстоўваць інструменты, якія я выкарыстоўваю кожны дзень, а менавіта, Linux, MySQL , PHP, VirtualBox і Subversion (SVN). Аднак я спадзяюся, што гэта кіраўніцтва будзе адаптавацца да іншых мовах і тэхналогіях гэтак жа добра.

Рашэнне, якое я падаеце, будзе збольшага заснаваны на тып апрацоўкі мы павінны былі б дасягнуць аднак гэта не можа быць праўдай праз усю артыкул, як я буду нешта змяніць, для прастаты, або для атрымання больш цікавых варыянтаў выкарыстання.

Гэтыя виртуализованных асяроддзях, будзе працаваць на вокны машыны, так як гэта тое, што большасць аддзяленняў перспектыве. Апрацоўкі, офіснай тэхнікі, не павінны перашкаджаць супрацоўнікам з дапамогай гэтых машын, павінны не патрабуюць абслугоўвання ў машыне, і быць лёгка адаптуецца да новых машынам, як яны становяцца даступнымі. Акрамя таго, новыя віртуальныя машыны не патрабуе ніякіх дадатковых налад, паколькі гэта значна зніжае маштабаванасць і прастата, пры якім сетка сістэма можа быць пашырана.

Чаму разгортванне сеткі Упраўлення вылічальнай?

Па-першае вы можаце падумаць, чаму б не выкарыстоўваць рэсурс хмарных вылічэнняў, такіх як платформы EC2 амазонкі ? Ну прычын можа быць некалькі, напрыклад:

  • Вы не будзеце даручаць пэўную дадзеных у асяроддзі хмарных вылічэнняў
  • Вы не можаце змясціць некаторыя дадзеныя ў асяроддзі хмарных вылічэнняў па юрыдычных прычынах (напрыклад, дадзеныя з краіны), патэнцыйна па юрыдычных прычынах, напрыклад, NHS запісаў.
  • Вы хочаце, каб ваша апаратура апрацоўкі цесныя і мець поўны кантроль над апаратнай занадта
  • У вас няма сродкаў праекта для запуску воблака выпадках
  • Ваш офіс не мае падключэнне да Інтэрнэту, і таму яе нельга выкарыстоўваць воблака рэсурсаў
  • Вам не падабаецца дождж, аблокі прапаную дождж, таму вы трымаеце далей

Я ўпэўнены, што спіс можна працягнуць, але я думаю, што гэта дастаткова.

Перавагі Grid Computing Упраўлення

Ну, давайце рабіць некаторыя матэматыкі (а ў праўдзівым стылі фізікі дазваляе зрабіць некаторыя радыкальныя здагадкі). Уявіце, у вас ёсць вялікі мускулісты сервер апрацоўкі працуе 100 рабочых месцаў у дзень. У офісе ў вас ёсць 50 машын, якія прастойваюць па 16 гадзін у дзень, кожная з гэтых машын складае 10%, як магутны, як ваш мускулісты разарваць апрацоўкі. (Усе вынікі тут акругляюцца да недаацэньваюць павелічэнне прадукцыйнасці).

Так, 1 машына * 10% магутнасці * 2 / 3 часу = 0,067 гэта значыць 1 настольны апрацоўкі ў рэжыме часу могуць апрацоўваць 6 поўны працоўны дзень.

Калі вы цяпер маштабы гэтага да яго займае 15 прастою рабочыя сталы для апрацоўкі, як шмат працоўных месцаў у дзень у якасці асноўнага сервера апрацоўкі робіць.

Такім чынам, у нашым офісе прэтэндуе 50 машын мы маглі б павялічыць нашу вылічальную магутнасць ад 1 сервер, які падтрымлівае да 4 поўных сервераў, якія апрацоўваюць, ці мы маглі б быць апрацоўкі 400 працоўных месцаў у дзень замест 100.

Звярніце ўвагу, для якіх-небудзь інвестыцый у новае абсталяванне Ваша кампанія толькі што павялічыў сваю пакетную апрацоўку магутнасцю 4 разы! Патэнцыйна вы збіраецеся павялічыць спажыванне энергіі, але ў большасці офісаў Я быў на машынах, як правіла, застаецца на ноч у любым выпадку, каб вы маглі бачыць гэта як зялёны ініцыятыву.

Іншыя перавагі таксама азначаць, што інвестыцыі ў новыя (або абноўленыя) апрацоўка сервераў можа быць адкладзенае, калі ваша машына офіса з'яўляюцца дастатковымі і што, як вам палепшыць магутнасць вашай машыны офіс офісе сетка становіцца больш магутным аўтаматычна.

Тэхналогіі

Што вам трэба? (Ці, дакладней тое, што я выкарыстаў):

  • Idle офіснае абсталяванне (у маім выпадку запасных старыя вокны XP ноўтбук)
  • VirtualBox (або іншага праграмнага забеспячэння віртуалізацыі кліента)
  • Віртуальную машыну з PHP, MySQL running працуе скараціць OS, я тэлефаную гэтыя мае LIMP сервераў:)
  • Вакансіі для запуску
  • Праца сервера (можа быць іншай віртуальнай машыны дзе-то)

Тыповыя Вакансіі

Тыпы рабочых месцаў, што гэтая сістэма прызначана для працы выглядае наступным чынам:

  • Сістэма атрымлівае спіс дадзеных, на якіх мы павінны сувымяраць і вяртаюць вынікі
  • Уключае ў сябе праверку адпаведнасці / пошуку некалькі (даволі статычная) крыніц дадзеных
  • Вынікі з крыніц дадзеных могуць запатрабаваць далейшай праверкі, зліваючыся, праверка дадатковых крыніц дадзеных у адказ на вынікі
  • Дадзеныя вяртаюцца з адпаведнымі запісамі, цалкам правераныя і апрацаваны
  • Кожная запіс у працягу працы не залежыць ад астатніх

Таму ў асноўным мы глядзім на запушчаных заданняў, якія патрабуюць сумесь пошук у базе дадзеных і некаторага ліку храбусценне, даволі тыповы сцэнар у бізнес-асяроддзі.

Сетка рашэння не толькі выгадна для апрацоўкі рабочых месцаў такога тыпу. У прынцыпе, любы працэс, які можа быць падзелена на незалежныя модулі могуць працаваць паралельна. Глядзіце гэты Вікіпедыі прыкладаў і дадатковай інфармацыі: Grid Computing , але пару вядомых прыкладаў SETI @ Home і BIONC . Ёсць рамкі для выканання вылічальных сетак, і яны таксама заслугоўвае вывучэння.

Што мы дасягнулі?

Да канца гэтых артыкулах я спадзяюся паказаць, што разгортванне офіса сеткі не павінны быць вельмі дарагім ці шмат часу. Я збіраюся абмеркаваць наступныя пытанні:

  • Налада сістэмы кіравання заданнямі, праца канфігурацыі
  • Стварэнне адпаведнай апрацоўкі віртуальнай машыны
  • Як наладзіць сістэму на вокны машыны
  • Забеспячэнне вы выкарыстоўваеце апошнюю версію кода і дадзеных
  • Разгортвання і тэсціравання
  • Забягаючы наперад

Я буду дома (добра, я пабудаваў, а затым напісаў гэта) прыклад прыкладанні для тэставання канцэпцый на лакальнай машыне праз Windows XP, і мой "GridMachine" віртуальнай машыны. Мая праца серверны элемент кіравання будзе маёй асноўнай машынай, якая працуе Fedora 11 .

Гэта зусім не азначала, каб прадэманстраваць цалкам працоўны надзейныя сістэмы, яе значыла больш, дэманстрацыі і абмеркавання паказваюць, што гэтыя рэчы могуць быць дасягнуты ў разумна кароткія тэрміны і з мінімальнымі выдаткамі. Калі ласка, не саромейцеся, дасылайце мне любыя каментары, выпраўлення або паляпшэння, і я зраблю ўсё магчымае, каб гэтая артыкул абноўленая да матчу.

Наступны раз

У частцы 2 я пачну, гледзячы на сістэмы кіравання працай, і вывучыць, як працоўныя месцы павінны быць настроены для дасягнення найбольшай аб'ём апрацоўкі ў той час як забеспячэнне таго, каб кожнае патрабаванне абслугоўваецца ў абавязковым парадку.

Упраўленне Grid Computing выкарыстаннем віртуальных асяроддзяў - Частка 2

Па , у пятніцу 4 снежні 2009 года 11:23 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетная апрацоўка мільёны запісаў дадзеных кожны дзень, і я думаў нядаўна пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў, я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстанне виртуализированных асяроддзях.

У частцы 1 я даў агляд сістэмы і тэхналогіі, я буду выкарыстоўваць, а таксама абмеркавалі некаторыя з патэнцыйных прычын, чаму вы хацелі б стварыць офіс сеткі.

Кіраванне заданнямі

Калі вы збіраецеся быць запушчаны працоўныя месцы, то вы будзеце мець патрэбу, якім-небудзь чынам кіраваць імі. Ваша задача сістэмы кіравання (на вашу працу сервера) павінен быць вельмі добра прадуманы, перш чым нават спрабаваць запусціць офіс сеткі. Так па-першае, якія задачы для сістэмы кіравання заданнямі:

  • Раздайце працоўных месцаў па патрабаванню рабочых
  • Скажыце рабочым, які тып запуску заданняў
  • Трэк працоўных месцаў
  • Пераканайцеся, што працоўныя месцы запускаць толькі адзін раз
  • Забяспечыць працу дадзеных работнікаў, ці хаця б сказаць ім, дзе яго атрымаць

Акрамя таго, сістэма павінна быць пашыраецца, які дзейнічае на дадзены момант у рамках аднаго справы можа быць прадоўжаны да запуску некалькіх тыпаў працоўных месцаў, як бізнес бачыць сябе ў сетцы рашэнне. Напрыклад, працоўныя месцы могуць атрымаць прыярытэты, больш чым адзін тып заданні могуць існаваць (гэта значыць некалькі баз код), у выніку вы можаце нават запусціць некалькі розных машын работніка, якія аптымізаваны для кожнага тыпу задання (хоць гэта ніяк адысці ад "агульнага работніка "ідэя). Заўсёды імкніцеся думаць пра будучыню, пры распрацоўцы сістэмы, кароткае бачанне тэрмін можа прывесці да доўгатэрміновай перспектыве расчаравання і павелічэнне часу развіцця.

Праца сервера

Мы збіраемся трэба дзе-то кантраляваць свае працоўныя месцы з, гэта павінна быць адзіная сістэма ў вашай сетцы, якая мае фіксаваную лакатар рэсурсу, будзь то IP-адрас, імя хаста, URL-адрас (з выкарыстаннем ўнутранага DNS) і г.д. Гэта адбываецца таму, што працоўныя павінны ведаць, дзе шукаць працу, работнікам неабходна знайсці сістэму кіравання заданнямі (не сістэма кіравання заданнямі знайсці работнікаў).

Працы самога сервера на самай справе не складаная задача (у базавай сістэме ці інакш), ён павінен захоўваць спіс заданняў, раздаваць працоўныя месцы, атрымліваць вынікі, а затым захоўваць іх для наступнага выкарыстання. Як гэтыя часткі (напрыклад, "раздаваць працоўныя месцы") вызначаюцца можа быць вельмі просты. Пазней мы можам пашырыць сістэмы ўключаюць адміністрацыйны інтэрфейс для дадання, рэдагавання, выдалення, прыпыніць працу, але гэта выходзіць за гэта практыкаванне.

Існуе ніякіх падстаў, тое, што ваша праца сервера не можа быць віртуальная машына працуе на працягу вашага асноўнага сервера апрацоўкі ўмове, што яна не злівае ваду занадта шмат рэсурсаў з яго. Працу сервера аднак мае патрэбу ў высокай даступнасці, калі ён ідзе ўніз, у пятніцу вечарам вы будзеце губляць усе выходныя апрацоўкі, патэнцыйна варта Вам пару тыдняў варта часу апрацоўкі (у параўнанні з вашай асноўнай сервер апрацоўкі ў адзіночку) . Вы можаце хацець разгледзець пытанне аб стварэнні вашай працы сервера з балансавання нагрузкі асяроддзя для забеспячэння высокай даступнасці.

Асноўныя налады

Базавыя наладкі для нашай працы сервера будзе складацца з таго, што я тэлефаную аднаму з маіх LIMP сервераў (гэта значыць Li ММК, м ySql, Р л.з.). Код, які выконваецца на работнікаў Тэа сапраўды будзе працаваць, якія работы ён можа працаваць, узаемадзейнічаючы з працай баз дадзеных сістэмы кіравання. Пазней мы маглі б стварыць вэб-сэрвіс і фактычна раздаваць працоўныя месцы замест таго, рабочыя робяць цяжкую працу самі, але цяпер мы будзем працягваць выкарыстоўваць KISS, прынцып (Keep It Simple, Stupid!).

Такім чынам, дазваляе стварыць тры MySQL табліц для вырашэння працоўных месцаў. Гэта будуць працоўныя месцы ``, `jobRecords` і `jobResults`.

працоўных месцаў табліцы Тут я выкарыстоўваю SQL Buddy вялікая невялікая альтэрнатыва PhpMyAdmin толькі таму, што яе лягчэй ўсталяваць на CentOS (для астатніх гл.: 10 Вялікія альтэрнатывы PhpMyAdmin )

Гэтая табліца складаецца з 5 простых палёў,

  • ID: Унікальна ідэнтыфікаваць працу
  • Назва: Не маглі б быць нумар кліента, або любую колькасць іншых ідэнтыфікатараў
  • Статус: Вы павінны ведаць, дзе праца на, напрыклад,
    • 0: Не пачалася
    • 1: Падабраў
    • 2: Завершаны
  • started_by: хто пачаў рабіць гэтую працу? Гэта не зусім патрабуецца, але добра было б мець. Я прапаную адсочвання рабочых па іх IP-адрас у сетцы
  • started_at: Калі працаўнік пачаць працу? Адсочваючы вакансіі, якія не завершаны на працягу X колькасць часу мы ведаем, што трэба падабраць працу яшчэ раз, і пачала перапрацоўкі іншым работнікам. Рабочыя маглі спыніць апрацоўку / пераходу ў аўтаномны рэжым для любога ліку прычын, збой харчавання, збой, страта сеткі і да т.п.

Лёгка, як гэтая табліца можа быць пашырана за кошт некалькіх дадатковых палёў, каб забяспечыць статыстыку сачэння, калонкі скончыць своечасова, каб убачыць, колькі часу працу ўзяў, лічыльнік каб даведацца, колькі працоўных ўзяў працу (відавочна, гэта павінна, як правіла, 1), прыярытэт заданні, спіс можна працягваць і працягваць. У больш складаных сцэнараў працы можна было б паказаць, колькі памяці работнік будзе мець доступ да (і, такім чынам, варта выкарыстоўваць адпаведныя працоўныя), або нават які тып работніка не спатрэбіцца.

Давайце дадамо некалькі працоўных месцаў прыклад:

Напрыклад працоўных месцаў

Наступная табліца зноў даволі просты для разумення, гэта нашы запісы працу. Яны звязаны з асноўнай табліцы працоўных месцаў да калонцы `jobs_id`. Складнікаў гэтай табліцы вельмі многае залежыць ад дадзеных, якія вы павінны даць, каб вашыя работнікі, дазваляе зрабіць вельмі просты прыклад, калі ў нас ёсць чатыры калонкі:

  • ID: ідэнтыфікатар запісу
  • імя: Імя ўладальніка
  • адрас: адрас Асобы
  • jobs_id: ідэнтыфікатар заданні, што гэты запіс звязана з

Трэцяя і апошняя табліца складаецца з табліцы вынікаў, ён гэтак жа, складаюць, як нашы запісу табліцы, а з даданнем некаторых слупкоў можа быць часткай табліцы запісаў:

  • job_record_id: Спасылка вынік працы табліцы
  • Вынік: дадзеныя выніку

... І гэта ўсё, што трэба для кіравання заданнямі! (Хоць і на самым базавым узроўні) У маім выпадку я паказаў на іншую табліцу, дзе мае дадзеныя на працэсе быў размешчаны, але гэта можа так жа лёгка было файла, параметры для запуску праграмнага кода, то імя яго.

Выбар работы

Як адзначалася раней, працоўныя будуць рабіць сваю працу кіравання для нас цяпер, так што ўсё, што трэба зрабіць, гэта знайсці працу, якая павінна апрацоўкі і атрымання інфармацыі. Як бы мы гэта зрабіць? Ну забраць нашы крытэрыі адбору і працу шукаць працу, у SQL я зрабіў наступнае:

  1. Вазьміце любую працу, якая не пазначаныя як поўная, але ад нашага работніка і скінуць іх (замяніць __ME__ з ідэнтыфікатарам, простым будзе IP-адрас):
      UPDATE `працы` SET `статус` = 0 WHERE `статус` = 1 AND `started_by` = __ME__; 
  2. Выкарыстоўваючы нашы крытэрыі працы выбару, выберыце працу і сказаць сістэме кіравання, што гэты работнік мае справу з ім:
      UPDATE `працы` SET `статус` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `статус` = 0 АБО
     (`Статус` = 1 AND `started_at`> DATE_SUB (NOW (), інтэрвал X ЧАС)) ORDER BY `ID` ASC; 

    Па захоп працоўных месцаў, якія не вярнуліся вынікаў у X колькасць часу мы гарантуем, што ўсе работы выконваюцца ў выпадку работніка або збой адбываецца ў самаволку.

  3. Наступная захапіць працоўныя месцы дэталі затым самі запісу:
      SELECT * FROM `працу` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `ID` = __JOBID__; 

Пасля завяршэння працы мы ўстаўляем нашы запісы выніку і знак працу ў якасці поўнай. Памятаеце, як праца можа прыпыніць / аднавіць у любы момант забяспечыць пэўную ўстойлівасць у ваш сцэнар. Цалкам верагодна, што задача прыпыняе палова шляху праз абнаўленне сістэмы кіравання заданнямі, таму праверка колькасці запісаў у працу, і колькасць вынікаў, захаваны ў сістэме кіравання працай б мудрым крокам.

Акрамя таго, у той час як гэта дэманструе, як працоўныя месцы могуць быць выбраны і кіруюцца з SQL-запыту кадр, які вы павінны быць сапраўды абстрагавання вашай працы кіравання, так што калі вы вырашыце перайсці на выкарыстанне вэб-сэрвісаў, файл сістэмы, заснаванай на XML , або любой іншай лік сістэм, гэта не паўплывае на код вышэй.

Праца канфігурацыі

Наступны аспект, каб разгледзець з'яўляецца памер працоўных месцаў і канфігурацыі. Гуляючы з працы канфігурацыі мы можам забастоўкі выдатны баланс паміж хуткасцю, працэс рэплікацыі, а таксама надзейнасці. Вазьміце пару сцэнарыяў аператара А:

  1. Вакансіі прымаць па 1 дзень кожны для запуску: Гэта азначае, што працаўнікам неабходна 15 дзён, каб апрацаваць кожнае заданне (памятаеце, 10% магутнасці для 2/3rds ад часу). Вядома, гэта не мудрая канфігурацыі, ваша праца памер занадта вялікі! Гэта зойме па крайняй меры ўдвая больш часу, каб атрымаць працу павінны апрацоўвацца пачатковай работніка ісці ў самаволку (час, каб забраць, што ён не вярнуў выніку плюс перапрацоўцы часе). У ідэале вы павінны па крайняй меры адзін поўны працоўны лёгка чысціцца ў канцы кожнага перыяду працяглага прастою, такім чынам вы захаваць працоўныя месцы ціканне больш, а ў горшым выпадку праца зойме два дні, каб працэс павінен спачатку пайсці прапаўшымі без вестак.
  2. Вакансіі прымаць па 1 хвіліна для запуску: Гэта азначае, што вашы працаўнікі зойме каля 15 хвілін для выканання кожнага задання. Хоць гэта можа спачатку здацца ідэальнай, вы атрымліваеце дадатковую апрацоўку працы падчас абеду, кава-брэйкі, нарад і г.д. дадзены сцэнар ставіць нагрузку на іншыя сферы вашай сістэмы і ўводзіць свае ўласныя праблемы. Напрыклад, па-першае вашы налады / апрацоўкі суадносіны часу будзе ісці прама, таму страты эфектыўнасці сістэмы. Ваша сетка будзе пастаянна струменевае працу інфармацыі розным рабочым хвалюе супрацоўнікаў, якія дон іх паўсядзённым працы. Вы таксама збіраецца надаваць больш нагрузка на сервер апрацоўкі працу, як гэта страва з шмат-шмат маленькіх кавалачкаў працу на рэгулярнай аснове. Нарэшце, у гэтай сітуацыі, калі ваша праца сервер недаступны вы збіраецеся стварыць велізарны зноў увайсці незавершаных работ у той час як больш працоўных месцаў могуць працягу апрацоўкі ў шчасным недасведчанасці, што праца сервера выпрабоўвае цяжкасці.

На самай справе не будзе адна ідэальная канфігурацыя для ўстаноўкі сеткі, шмат што залежыць ад наяўных рэсурсаў, відаў працы, працы час апрацоўкі патрабаванняў, магчымасць працы ў сеткі, і гэтак далей. Аднак некаторыя кіруючыя прынцыпы будуць:

  • Памер працоўныя месцы так, каб кожны работнік можа прайсці як мінімум 3-4 працоўных месцаў на працягу 15 гадзін (доўгая верагоднасць прастою перыяд часу)
  • Гуляйце з працай памеру, так што час ўстаноўкі становіцца даволі нязначная у параўнанні з апрацоўкай часу (з улікам вышэй кропкі).
  • Калі праца не завяршаецца ў два разы больш часу (можа быць менш), вы чакаеце, што для яе завяршэння меркаваць, што яго сышлі ў самаволку і пачаць яе апрацоўку з іншым работнікам. Гэта азначае, што вы, магчыма, прыйдзецца чакаць да трох разоў нармальная даўжыня працу для яго выканання (магчыма, і даўжэй, калі наступная праца не атрымоўваецца). Вы можаце хацець скараціць гэты час, але будзьце асцярожныя, каб не звесці яго занадта шмат, як вы можаце пачаць дубляванне апрацоўкі заданняў на рэгулярнай аснове.
  • Вакансіі павінны быць незалежныя ад знешніх патрабаванняў, наколькі гэта магчыма. Працу сервера, напрыклад, павінны быць толькі звязаліся ў пачатку і ў канцы кожнай працы.
  • Ці не насыціць вашай сеткі, гэта будзе мець два адмоўных эфектаў, ваш дзённай персанал будзе знайсці з дапамогай сеткі расчараванне і праблемы могуць узнікнуць з падключэннем час чакання праблема, якая будзе толькі пагаршацца, паколькі Вы маштабаваць сетку.
  • Забяспечыць працоўныя месцы могуць працаваць на вашых работнікаў. Калі рабочыя месцы становяцца занадта вялікі аб'ём памяці або дыскавай прасторы інтэнсіўнай працы пачнуцца перарываючы і не толькі, што вы заўважыце гэта кропля ў лік працоўных месцаў, апрацоўваюцца ніякай рэальнай прычыны, чаму.

Адпраўка вынікаў працы

Пры падачы вынікі працы, важна пераканацца, што вынікі не былі прадстаўлены на іншага работніка, асабліва, калі бягучы працоўны быў замарожаны на некаторы час.

Калі вынікі прадстаўленага забеспячэння таго, каб колькасць вынікаў супадае з колькасцю запісаў у працу.

Як паказвалася раней, і не можа быць старэйшыя за падкрэсліў, будаваць адмоваўстойлівасць на пошук працы і вынікі прадстаўлення. Работнікі могуць (і хутчэй за ўсё) пераходзяць у рэжым чакання ў самы непадыходны раз, і гэта павінна быць абслужаны. Таксама яшчэ раз абстрагуючыся ад вашых вынікаў прадстаўлення дапаможа задаволіць будучыя змены ў працу сістэмы кіравання значна прасцей мець справу.

Рэзюмэ

У гэтым section мы глядзелі на тое, што сервер кіравання заданнямі, трэба зрабіць і як яго атрымаць вельмі простыя сістэмы, створанай. Мы абмеркавалі, як атрымаць працу з сістэмай кіравання і як лепш наладзіць працоўныя месцы, каб атрымаць большасць нашых вашай сістэмы сеткі офіса. Каб скончыць, адзін-два абзаца аб прадстаўленні вынікаў на сервер кіравання заданнямі была прадстаўлена.

  • Сервер кіравання заданнямі кіруе заданнямі і гарантуе, што ўсе працы будуць завершаны адзінак
  • Па абстрагаванне ваша праца выбару / вынікі прадстаўлення мы можам змяніць тэхналогію кіравання серверам без асаблівых праблемы
  • Налада працоўных месцаў, каб яны выконваюцца хутка і эфектыўна, не падвяргаючы занадта шмат ціску на сеткавую інфраструктуру, і без дублявання задач апрацоўкі на рэгулярнай аснове.
  • Пераканайцеся, што вы будуеце адмоваўстойлівасць і памылак checking у вашы працэдуры, працаўнікі могуць прыпыніць і аднавіць, і ў самы непадыходны разоў. Не забудзьцеся праверыць, калі вынікі ўжо былі прадстаўлены іншым работнікам.

Наступны раз

У частцы 3 мы створым нашу віртуальную машыну апрацоўкі і стварылі нашы вокны машыны, каб стаць часу прастою работнікаў.

Упраўленне Grid Computing выкарыстаннем віртуальных асяроддзяў - Частка 5

Па , у пятніцу 4 снежні 2009 года 11:03 вечара

Увядзенне

Я працую ў кампаніі, дзе мы запускаем шмат працоўных месцаў, пакетная апрацоўка мільёны запісаў дадзеных кожны дзень, і я думаў нядаўна пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэтай серыі артыкулаў, я буду глядзець на патэнцыйныя выгоды ад выкарыстання офіса сеткі выкарыстанне виртуализированных асяроддзях.

У частцы 4 мы разглядалі з дапамогай інструментаў, каб гарантаваць, што мы бяжым апошняй версіі кода і дадзеных крыніц, з тым, што атрыманыя вынікі, заўсёды актуальныя, актуальны з апошнімі бізнес-інфармацыі і логіку.

Перад разгортваннем

Перад разгортваннем падвеснай сістэме, калі ёсць адна рэч, вы робіце, і адно толькі гэта тэст вашай цяперашняй сістэмы! Усё роўна, што вы расказаць калегам пра тое, колькі дадатковай працы вашай сістэмы будзе рабіць, калі ў вас ёсць нумара, каб падтрымаць гэта вашы гарантыі нічога. Такім чынам,

  • колькі запісаў вы можаце працэс у цяперашні час? У дзень? У гадзіну?
  • Колькі часу звычайна займае разгарнуцца працу?
  • Наколькі больш магчымасцяў у вас ёсць?

Там таксама дадатковыя пытанні:

  • Калі ваш сервер апрацоўкі (або адзін з вашых сервераў апрацоўкі) ідзе ўніз як гэта паўплывае на вашы магчымасці, ці будзеце вы калека?
  • Якія перавагі вы спадзеяцеся / чакаеце атрымаць ад падвеснай сістэмы?
  • Ці з'яўляюцца вашы офісныя машыны здольныя працаваць працоўныя месцы?
  • Вашы (ці вы можаце быць пераўтвораны працоўных месцаў) для працы ў гэтым стылі працуе?

Апошні буйны пункт павінен прыняць свой час на якіх-небудзь сур'ёзных змяненняў, як гэта. Абнаўленне апрацоўкі кода для працы з выкарыстаннем новай метадалогіі, тэст зноў. Магчыма наладзіць апрацоўку сервер для запуску віртуальнай машыны, у рэшце рэшт сервер апрацоўкі вашага будзе проста яшчэ адзін рабочы (толькі вельмі магутны адносна). Дазволіць новы працэс, каб асталявацца.

Разгортванне

Мая прапанова было б поп у офісе один ўік-энд выконваць усе ўстаноўкі і настройкі. Рабіце гэта як раз перад святам два тыдні і сысці, каб іншыя небарака мець справу з наступствамі ... можа і няма ...

Разгортванне сістэмы, як гэта павінна быць павольным. Нягледзячы на ​​гэта час адносна просты ва ўсталёўцы гэтай сістэмы паўплывае на ўсю інфраструктуру офіса (ну лічбавы). Па-першае, раскачаць да некалькіх машын адначасова, маніторынг сеткавага трафіку, як працаўнік хастоў выконваць на дзень за днём. Магчыма, вам прыйдзецца змяніць канфігурацыю вашай працы ў адказ на вашыя вынікі.

Пасля таго як сістэма пасяліўся з некалькіх машын (скажам 10% усіх офісных машын, то ёсць 5) весці маніторынг сеткавага трафіку і хост-машыне performance. Наступны тэст зноў, цяпер вы павінны апрацоўкі 33% больш працоўных месцаў, чым ваш першы тэстаў. Праверце гэта так, або што вы па крайняй меры ў гэтым футбольным полі. Калі няма, то даследаваць, што адбываецца перад пераходам. Паўтарыце гэты цыкл, пакуль вы шчасліва мець ўсіх офісных машын, якія працуюць без забойства індывідуальнай працы машыны або шліфавальных сеткі ў тупік.

Ва ўсе часы трымаць бенчмаркинг, нават пасля ўсіх разгортванняў зробленыя. Праверце, як новыя абнаўлення кода ўплывае на хуткасць вашай сістэмы, праверце ўсе работнікі справаздачнасці і апрацоўкі заданняў. Паступова (вельмі павольна) прырашчэнне вашай работы канфігурацыі, каб атрымаць лепшае з вашых работнікаў і сеткі.

Стоп!

Што рабіць, калі вы хочаце спыніць вашых работнікаў ад бегу на некаторы час? Яны ўсе там працуе, рэгенеруе, і з усіх сіл спрабуюць апрацоўваць дадзеныя, як галодныя казуркі. Адказ можа здацца відавочным, але яго варта дадаць, на ўсялякі выпадак яго ўвагі. Проста рэдагаваць свае апрацоўкі скрыпту з выхадам (0) або памерці () або іншыя заявы, каб забіць вашага заданні апрацоўкі. Важная прычына, чаму мы заўсёды імкнемся абнаўленне да апошняй апрацоўкі сцэнара да таго, бяжы!

Дэманстрацыя сістэмы

Для таго, каб напісаць гэта набор кароткіх артыкулаў, якія я стварыў вельмі маленькая сетка для дэманстрацыі тэхналогій і метадалогій. Я прачытаў шмат артыкулаў, навучальныя дапаможнікі і выкарыстоўваць розныя прылады для налады і маніторынгу, што адбываецца. Ні ў якім выпадку я выйшаў і насычаны цэлы офіс з трафікам і ні ў мяне быў доступ да рэгулярных супрацоўнікі PC каб убачыць, як гаспадар выкананне якіх паўплывалі.

Мой дэманстрацыі магчымасцяў сістэмы быў вельмі сціплы на самай справе. Я выкарыстаў свой звычайны працоўны стол настроены як сервер кіравання заданнямі. На гэтым я ўсталяваў MySQL сервер, усталяваны настроены як майстар у рэплікацыі, PHP , а, SVN звязаныя праз Apache (для доступу праз работніка VM).

Затым я стварыў машыну CentOS работніка на VirtualBox на 6-гадовы ноўтбук Windows XP. Я ўстаноўкі запланаваныя задачы, як паказана пасля капіявання VM на машыне і адпусціць яе.

Віртуальная машына была створана з PHP, падрыўную дзейнасць, і MySQL. Я праверыў філіял пад назвай «працоўны» ад маёй працы сховішча кантролю сервераў і праверыце, што ён можа быць абноўлены з дапамогай "запускалі". Затым я ўсталёўкі MySQL ў якасці раба і праверыць, што дадзеныя рэплікацыі ад MySQL на серверы кіравання працай да работніка VM. Пасля ўсяго гэтага мне ўсталяваць скрыпт баш і хранічны.

Мой апрацоўкі сцэнар у асноўным пайшлі па лініі гэтага (вельмі простыя рэчы):

  • Чытайце ў поле імя
  • Падлічыў колькасць падобных імёнаў у табліцу з крыніцы дадзеных адбылася У.М.
  • Падлічыў колькасць імёнаў і вышэй, але расшчапленне імя прабеламі (гэта значыць імя, сярэдняй, прозвішча)
  • Паўторныя гэты працэс у 1000 разоў

Кожнае заданне заняло прыкладна 20 хвілін, каб бегчы. У адзін момант я адкрыў некалькі копій работніка ВМ на наўтбук акна і глядзеў працоўных месцаў правяраецца з кожным з адрасоў IP работніка. На гэтым этапе я таксама пацвердзіў, што рэплікацыя аўтаматычна перазагружаны.

Пакінуўшы ноўтбук на халастым ходу ў выніку працаўнік пачынае працэс працы з серверам кіравання заданнямі. Пры аднаўленні выкарыстання ноўтбука была затрымка каля 30-60 секунд, гэта ладная колькасць часу і супрацоўнікі павінны быць дасведчаныя, што іх машына можа паўзу на працягу кароткага часу, калі вяртаўся да машыны. Новыя машыны не могуць мець паўзу так доўга. Балазе аб'ём апрацоўкі, якія выконваюцца гэтымі машынамі падчас прастою будзе больш, якія перавешваюць супрацоўнікаў чакаючы кароткі тэрмін (скажам, 1 хвіліну), прыбыўшы на сваіх машынах раніцай (я часта чакаць даўжэй, што гэта для Windows Defender абнаўленне пройдзе), калі яны былі пастаўленыя ў вядомасць аб гэтым (карысна час, каб захапіць ранішні кава!).

У цэлым, я ўпэўнены, што я паказаў тэхналогій, якія могуць быць выкарыстаны для стварэння такой сістэмы. Я паказаў, што такая сістэма працуе на (вельмі) малых маштабах і з яшчэ некалькі эксперыментаў можа быць пашыраны выкарыстоўваць рэсурсы машын офіса. Калі я не дойдзеце да кропкі, зрабіць гэта я быў бы вельмі цікава ведаць / бачыць, калі хто-то іншы.

Высновы / Ацэнка

Наступны відавочны крок павінен быў бы на самой справе атрымаць рэальны прыклад і пачаць разгортванне такой сістэмы, як гэта ў офісе і паглядзець, што адбываецца. Запытаная бізнесу ўзяць на сябе абавязацельства гэта без следу палаючы кампаніі, каб даказаць эфектыўнасць тэхналогіі і можа быць трохі цяжка. Сетка / Размеркаваныя вылічэнні вельмі папулярная некаторых колах і мае некаторыя вялікія прыкладанні (BIONC, SETI @ Home, Folding @ Home і г.д.). Я не стаў, аднак, знайсці ў меншых маштабах і простая сістэма, як гэта ў маіх пошуках, якія маглі б быць разгорнута ў офісе.

Я стварыў у асноўным свабодныя сістэмы, выкарыстоўваючы галоўным чынам з адкрытым зыходным кодам і інструменты, даступныя практычна ў любым офісе. Тэхналогіі ў асноўным былі прадэманстраваны і шоў для выканання і працаваць, як чакалася. Спадзяюся, у мяне ёсць паказаць, што з не так шмат працы і вельмі просты ўстаноўкі можна разгарнуць вылічальныя офіс падвеснай сістэме, гэта значыць магутны, танны, Â і маштабуюцца усё ў той жа час.

Як толькі сістэма ўстаноўлена і працуе амаль няма канца на суму налады і паляпшэнні, якія вы можаце зрабіць. Напрыклад статыстыка / тэставання могуць быць лёгка дададзеныя паказвае каштоўнасць такой сістэме кожны дзень. Новыя машыны могуць быць дададзеныя хутка і лёгка, як і калі яны прыходзяць з мадэрнізацыі існага абсталявання ўмацавання вашай вылічальнай магутнасці.

Я спадзяюся, вам спадабалася чытаць гэтую серыю артыкулаў і даў вам ежу для разважанняў аб запуску сістэмы офіса сеткі. Рашэнне, прадстаўленае тут, не абавязкова будуць працаваць ва ўсіх сітуацыях, але павінны быць адаптаваныя, каб дазволіць вам атрымаць ваш апрацоўкі дадзеных ажыццяўляецца з дапамогай уласнага рашэння.

Калі ласка, не саромейцеся, дасылайце мне любыя каментары, выпраўлення або паляпшэння, і я зраблю ўсё магчымае, каб гэтая артыкул абноўленая да матчу.













Панарама тэму, Themocracy

9 наведвальнікаў онлайн
7 гасцей, 2 ботаў, 0 карыстальнікаў
Максімум сёння: 19 у 12:46 раніцы UTC
У гэтым месяцы: 19 на 2011/08/19 06:09 раніцы UTC
У гэтым годзе: 130 у 2011/03/28 10:40 вечара UTC
За ўвесь час: 130 у 2011/03/28 10:40 вечара UTC