Увядзенне
Я працую ў кампаніі, дзе мы запускаем працу пакетнай апрацоўкі мільёнаў запісаў дадзеных кожны дзень, і я думаў нядаўна пра ўсіх машынах, якія сядзяць кожны дзень нічога не рабіць на працягу некалькіх гадзін. Не было б добра, калі мы маглі б выкарыстоўваць гэтыя машыны для ўмацавання вылічальнай магутнасці нашых сістэм? У гэты набор артыкулаў я буду глядзець на патэнцыйныя выгады ад выкарыстання офіса сеткі выкарыстаннем виртуализованных асяроддзях.
У частцы 1 я даў агляд сістэмы і тэхналогіі, я буду выкарыстоўваць, а таксама абмяркоўваліся некаторыя з патэнцыйных прычын, чаму вы хацелі б стварыць офіс сеткі.
Упраўленне заданнямі
Калі вы збіраецеся быць запушчаны працоўных месцаў, то вы будзеце мець патрэбу ў нейкі спосаб кіраваць імі. Ваша задача сістэмы кіравання (на вашу працу сервера) павінен быць вельмі добра прадуманы, перш чым нават спрабаваць запусціць офіс сеткі. Так па-першае, якія задачы для сістэмы кіравання заданнямі:
- Раздайце працоўных месцаў па просьбе работнікаў
- Скажыце, які тып працаўнікоў працоўных месцаў для запуску
- Трэк працоўных месцаў
- Пераканайцеся, што заданні выконваюцца толькі адзін раз
- Забяспечыць працу дадзеных для работнікаў, або па крайняй меры расказаць ім, дзе можна атрымаць яе
Сістэма таксама павінна быць пашыраецца, рашэнне, якое працуе цяпер у адным выпадку можа быць павялічана да запуску некалькіх відаў работ, як бізнес бачыць стаіць у сетцы рашэнне. Напрыклад, працоўныя месцы могуць атрымаць прыярытэты, больш чым адзін тып задання могуць існаваць (гэта ёсць некалькі баз код), у канчатковым выніку вы нават можаце запусціць некалькі розных машын работніка, якія аптымізаваныя для кожнага тыпу задання (хоць гэта ніяк адысці ад "агульнага работніка "ідэя). Заўсёды стараюся думаць аб будучыні пры распрацоўцы сістэмы, кароткі перспектыве можа прывесці да доўгатэрміновых расчараванні і павелічэнне часу развіцця.
Праца сервера
Мы збіраемся трэба дзесьці кантраляваць нашу працу з, гэта павінна быць адзінай сістэмай у сетку, якая мае фіксаваныя лакатар рэсурсу, у тым, што адрас IP, імя хосту, адрас (з выкарыстаннем ўнутранага DNS) і г.д. Гэта адбываецца таму, работнікі павінны ведаць, дзе шукаць працу, работнікам неабходна знайсці працу сістэмы кіравання (не сістэма кіравання заданнямі знайсці працаўнікоў).
Працу самога сервера ў рэчаіснасці не маюць складаную задачу (у асноўны ці інакш сістэма), ён павінен захоўваць спіс заданняў, раздаваць працоўныя месцы, атрымліваць вынікі, а затым захоўваць іх для наступнага выкарыстання. Як гэтыя часткі (напрыклад, "руку Джобса) вызначаныя можа быць вельмі просты. Пазней мы можам пашырыць сістэмы ўключаюць адміністрацыйны інтэрфейс для дадання, рэдагавання, выдалення, прыпыніць працу, але гэта выходзіць за гэтую працу.
Існуе ніякіх падстаў, тое, што ваша праца сервера не можа быць віртуальная машына працуе ў вашай асноўнай сервер апрацоўкі ўмове, што яна не зліваць ваду занадта шмат рэсурсаў з яго. Працу сервера аднак мае патрэбу ў высокай даступнасці, калі яна ідзе ўніз ў пятніцу вечарам вы будзеце губляць усе выходныя апрацоўкі, патэнцыйна каштаваць вам пару тыдняў варта часу апрацоўкі (у параўнанні з вашай асноўнай сервер апрацоўкі ў адзіночку) . Вы можаце разгледзець пытанне аб стварэнні працу сервера з Балансаваннем нагрузкі асяроддзя для забеспячэння высокай даступнасці.
Асноўная настройка
Асноўныя ўстаноўкі для нашай працы сервера будзе складацца з таго, што я тэлефаную аднаму з маіх сервераў LIMP (гэта значыць Li NUX, м ySql, Р л.с.). Код, які выконваецца на Thea работнікаў сапраўды будзе працаваць, якія работы ён можа працаваць, ўзаемадзейнічаем з працай баз даных сістэмы кіравання. Пазней мы маглі б стварыць вэб-сэрвіс і фактычна раздае працоўныя месцы замест таго, работнікі рабіць цяжкую працу самі, але цяпер мы будзем працягваць выкарыстоўваць прынцып 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 я зрабіў наступныя:
- Вазьміце любую працу, якія не пазначаныя як поўнае, але ад нашага работніка і скінуць іх (замяніць __ME__ з ідэнтыфікатарам, просты б IP-адрас):
UPDATE `працу` SET `статус` = 0, дзе `статус` = 1 і `started_by` = __ME__;
- Выкарыстоўваючы нашы крытэры выбару працы, выбраць працу і сказаць сістэме кіравання, што гэты работнік мае справу з ім:
UPDATE `працу` SET `статус` = 1, "started_by` = __ME__, `started_at` = NOW () WHERE `статус` = 0 або
(`Статус` = 1 і `started_at`> DATE_SUB (NOW (), інтэрвале х ЧАС)) ORDER BY `ID` ASC;
Па захопу працоўных месцаў, якія не вярнуліся вынікі ў X колькасць часу мы гарантуем, што ўсе работы выконваюцца ў выпадку збою або працаўнік будзе самаволку.
- Наступная захапіць працоўных месцаў падрабязнасці ідуць самі запісу:
SELECT * FROM `працу` WHERE `started_by` = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `ID` = __JOBID__;
Пасля завяршэння працы мы ўстаўляем наш вынік запісу і Марк працу ў якасці поўнай. Памятаеце, як праца можа прыпыніць / аднавіць у любы час забяспечыць пэўную ўстойлівасць у сцэнары. Цалкам верагодна, што задача прыпыняе на палове шляху абнаўлення сістэмы кіравання заданнямі, таму праверка колькасці запісаў у працу і лік вынікаў захаваны ў сістэме кіравання працай будзе мудрым крокам.
Акрамя таго, у той час як гэта паказана, як працоўныя месцы могуць быць выбраны і кіруецца з SQL-запыту кадр, які вы павінны сапраўды быць абстрагаванне вашай працы кіравання, так што калі вы вырашылі перайсці да выкарыстання вэб-сэрвісаў, файл на аснове сістэмы, XML , або любы іншы колькасць сістэм не паўплывае на код вышэй.
Праца канфігурацыі
Наступны аспект для разгляду з'яўляецца памер працоўных месцаў і канфігурацыі. Гуляючы з працы канфігурацыі мы можам стукнуць выдатны баланс паміж хуткасцю, працэс рэплікацыі, і надзейнасць. Вазьміце пару аператара А сцэнараў:
- Вакансіі прымаць па 1 дзень кожны для запуску: Гэта азначае, што працаўнікам неабходна 15 дзён для апрацоўкі кожнага задання (памятаеце 10% магутнасці для 2/3rds часе). Гэта, відавочна, не мудрым канфігурацыі, ваша праца памер занадта вялікі! Было б прыняць па крайняй меры удвая больш часу, каб атрымаць працу павінны апрацоўвацца пачатковай работніка пайсці самаволку (час, каб забраць, што ён не вярнуўся выніку перапрацоўкі плюс час). У ідэале трэба мець хаця б адзін поўны працоўны лёгка ачышчаюцца ад канца кожнага перыяду доўгага прастою, такім чынам вы захаваць працоўныя месцы ціканне больш, а ў горшым выпадку праца зойме два дні, каб працэс павінен спачатку пайсці прапаўшымі без вестак.
- Вакансіі прымаць ад 1 хвіліны да запуску: Гэта азначае, што вашыя работнікі зойме каля 15 хвілін для выканання кожнага задання. Хоць гэта можа спачатку падацца ідэальнай, вы атрымліваеце дадатковую апрацоўку працы ў часе абеду, кава-брэйкі, нарад і г.д. гэты сцэнар ставіць нагрузку на іншыя вобласці сістэмы і ўводзіць свае ўласныя праблемы. Напрыклад, у першую чаргу Наладзьце / час апрацоўкі суадносіны будзе ісці прама, таму страты эфектыўнасці сістэмы. Ваша сетка будзе пастаянна струменевай працы з інфармацыяй розных працоўных хвалюе супрацоўнікаў, якія дон сваёй паўсядзённай працы. Вы таксама збіраецца надаваць больш нагрузку на сервер апрацоўкі заданняў, як ён павінен страва з шмат-шмат маленькіх кавалачкаў працы на рэгулярнай аснове. Нарэшце, у гэтай сітуацыі, калі ваша праца сервер недаступны вы збіраецеся стварыць вялізны таму часопіс незавершаных работ у той час як больш працоўных месцаў можа працягу апрацоўкі ў блажэннай недасведчанасці, што праца сервера, якія выпрабоўваюць цяжкасці.
У рэчаіснасці не будзе аднаго ідэальнага канфігурацыя для ўстаноўкі сеткі, многае залежыць ад наяўных рэсурсаў, тыпу працы, працы час апрацоўкі патрабаванняў, магчымасць працы ў сеткі, і гэтак далей. Аднак некаторыя кіруючыя прынцыпы будуць:
- Памер працу так, каб кожны работнік можа атрымаць па крайняй меры праз 3-4 працоўных месцаў на працягу 15 гадзін (доўгая верагоднасць прастою перыяд часу)
- Гуляць з працай памер так, што час ўстаноўкі становіцца даволі нязначным у параўнанні з апрацоўкай час (маючы на ўвазе вышэй кропкі).
- Калі праца не завяршаецца ў два разы больш часу (можа быць менш) вы чакаеце, што для завяршэння яго лічыць, што яго сышлі самаволку і пачаць яго апрацоўку з іншым працаўніком. Гэта азначае, што вы, магчыма, прыйдзецца чакаць да трох раз нармальная даўжыня працу для завяршэння (магчыма, і даўжэй, калі наступная праца не атрымоўваецца). Вы можаце скараціць гэты час, але будзьце асцярожныя, каб не паменшыць яго занадта шмат, як вы можаце пачаць дубліравання задач апрацоўкі на рэгулярнай аснове.
- Вакансіі павінны быць незалежныя ад знешніх патрабаванняў як мага больш. Працу сервера, напрыклад, павінны быць толькі звязаліся ў пачатку і канцы кожнага задання.
- Не насыціць вашай сеткі, гэта будзе мець два адмоўных эфектаў, ваш дзённай персанал знайсці выкарыстаннем сеткі расчараванне і праблемы могуць узнікнуць з падключэннем па тайм-ауту, што праблема будзе толькі пагаршацца, як вы маштабавання сеткі.
- Забяспечыць працоўныя месцы могуць працаваць на вашых работнікаў. Калі работы занадта вялікі аб'ём памяці або дыскавай прасторы інтэнсіўнай работы пачнуцца перапынення і толькі, што вы заўважыце гэта кропля ў лік працоўных месцаў апрацаваныя без рэальных прычын.
Прадстаўленне вынікаў работы
Пры падачы вынікі працы важна, каб праверыць, што вынікі не былі прадстаўлены на іншага работніка, асабліва калі бягучы рабочы быў замарожаны на працягу некаторага часу.
Калі вынікі былі забяспечыць, каб колькасць вынікаў матчаў колькасць запісаў у працу.
Як згадвалася раней, і не можа быць больш падкрэсліў, будаваць адмоваўстойлівасці ў пошуку працы і вынікі прадстаўлення. Працаўнікі могуць (і хутчэй за ўсё) пераходзяць у рэжым чакання ў самы непрыдатны раз, і гэта павінна быць задавальняюцца за. Таксама яшчэ раз абстрагаванне ад вашых вынікаў прадстаўлення дапаможа задаволіць будучыя змены ў сістэме кіравання заданнямі значна лягчэй мець справу з.
Рэзюмэ
У гэтым section мы глядзелі на тое, што сервер кіравання заданнямі трэба зрабіць і як атрымаць вельмі просты усталяваннем сістэмы. Мы абмеркавалі, як атрымаць працу з сістэмай кіравання і як лепш наладзіць працу, каб атрымаць большасць нашых вашай сістэмы сеткі офіса. Каб скончыць, параграф ці два па адпраўцы вынікі назад на сервер кіравання заданнямі была прадстаўлена.
- Сервер кіравання працай кіруе працоўных месцаў і гарантуе, што ўсе працы будуць завершаны адзінак
- Па абстрагаванне вашай працы выберыце / вынікі прадстаўлення мы можам змяніць тэхналогію кіравання серверам без асаблівых праблемы
- Настройка працоўных месцаў для забеспячэння таго, каб яны працуюць хутка і эфектыўна, не падвяргаючы занадта шмат ціску на сеткавую інфраструктуру, і без дубліравання задач апрацоўкі на рэгулярнай аснове.
- Пераканайцеся, што вы будуеце адмоваўстойлівасці і памылкі checking ў вашай працэдуры, працаўнікі могуць прыпыніць і аднавіць і самы нязручны раз. Не забудзьцеся праверыць, калі вынікі ўжо былі прадстаўлены іншым працаўніком.
Наступны раз
У частцы 3 мы створым наш віртуальны машына для апрацоўкі і стварэння нашага акна машыны, каб стаць часу прастою работнікаў.