Додај странице динамички да Зенд_Навигатион контејнер у рунтиме-

По Стивен Лојд Ваткин , четвртак 7. јануар 2010 10:50 ПМ

У наставку на мој последњи пост о Зенд_Навигатион, захтеви за руте ситемап.кмл обичај да контролер / акција , овај пост је о димнамицалли додавање странице Зенд_Навигатион контејнер на Рунтиме / Скрипта.

Њена све добро и добро навести ваше странице у ини или кмл фајл, али у неком тренутку ћете имати мењају странице на вашем сајту које желите као део менија, Ситемап, или да буду укључени у траг путањом. Дакле оно што треба да урадите је да додате странице наше Зенд_Навигатион контејнер у рунтиме. Примери за то би се у додавању вијести, блогу, или страница коментаре, итд

Наставити читање 'Динамички Додај странице Зенд_Навигатион контејнер у рунтиме' »

Захтеви за руте ситемап.кмл обичај да контролер / акција

По Стивен Лојд Ваткин , Среда, 6. јануар 2010 12:13 пм

У циљу директног захтева за / ситемап.кмл у прилагођени контролер и акцију у Зенд Фрамеворк пријаву једноставно додајте следеце у васу апплицатион.ини или алтернативни конфигурациони фајл (нпр. ја користим навигатион.ини):

 ресоурцес.роутер.роутес.ситемап.роуте = "ситемап.кмл"
 ресоурцес.роутер.роутес.ситемап.дефаултс.цонтроллер = индекс
 ресоурцес.роутер.роутес.ситемап.дефаултс.ацтион = Ситемап

Пример кода за добијање могу се видети стварањем акција у одговарајућим контролер (нпр. Ситемап лежи у индексу контролер, Ситемап акција):

 < ПХП
 класа ИндекЦонтроллер
     проширује Зенд_Цонтроллер_Ацтион
 {
     / **
      * Пружа Ситемап основу Зенд_Навигатион подешавања
      * /
     јавну функцију ситемапАцтион ()
     {
    	 ецхо $ тхис-> Виев-> Навигација () -> Ситемап ();
    	 $ Тхис-> Виев-> Лаиоут () -> дисаблеЛаиоут ();
    	 $ Тхис-> _хелпер-> виевРендерер-> сетНоРендер (истина);
     }
 }

Ситемап-ови могу да брзо и лако може генерисати коришћењем Зенд_Навигатион , велики брзи туторијал (и, уопште, веома користан за Зенд Фрамеворк Туториалс) је Зенд Улоге - Динамичко креирање менија Ситемап и презле .

Зенд Фрамеворк по модул садржи подешавања заснована

По Стивен Лојд Ваткин , петак 1. Јануар 2010 10:40 ПМ

Направио сам следити на овај пост који захтева мање конфигурацију, погледајте модул базиран Распоред - Зенд Фрамеворк .

Када користите Зенд Фрамеворк са модулима, својим очигледно да ако користите разне (под-) сајтова ван исте апликације коју не желите исти распоред скрипте за сваки део. Одлучио сам да идем са следећим структуру сајта:

  / Примена
     / Контролери
         ...
     / Модели
     / Модула
         / Дефаулт
             / Контролери
             / Распоред
                 / Скрипте
             / Погледа
                 / Скрипте
         / АнотхерМодуле
             ...
     / Скрипте

Проблем је постављање скрипти на распоред по модулу основи. Одговор је дошао преко преко Акција помагач. Подешавање распореда на по модулу основи обухвата три корака:

  1. Апплицатион.ини (или сличне конфигурације подешавање):
      админ.ресоурцес.лаиоут.лаиоутПатх = АППЛИЦАТИОН_ПАТХ "/ модулес / Админ / распоредима / скрипте"
     дефаулт.ресоурцес.лаиоут.лаиоутПатх = АППЛИЦАТИОН_ПАТХ "/ модулес / дефаулт / распоредима / скрипте"
     мембер.ресоурцес.лаиоут.лаиоутПатх = АППЛИЦАТИОН_ПАТХ "/ модулес / члан / распоредима / скрипте"
     аффилиате.ресоурцес.лаиоут.лаиоутПатх = АППЛИЦАТИОН_ПАТХ "/ модулес / партнер / распоредима / скрипте" 
  2. Креирајте своју радњу помоћник:
      <Пхп?
     / **
      * Поставља распоред на пут по основу модула
      *
      * @ Аутор Лојд Ваткин <ллоид@евилпрофессор.цо.ук>
      * @ 2010-01-01 од
      * /
     класа Про_Цонтроллер_Ацтион_Хелпер_СетЛаиоутПатх
         проширује Зенд_Цонтроллер_Ацтион_Хелпер_Абстрацт
     {
         / **
          * Поставља распоред стаза на основу модула
          * /
         јавну функцију преДиспатцх ()
         {
        	 $ Модул = $ тхис-> гетРекуест () -> гетМодулеНаме ();
    
    	     иф ($ боотстрап = $ тхис-> гетАцтионЦонтроллер ()
    	                        -> ГетИнвокеАрг ("дизања")) {
    
    	         $ = $ Цонфиг боотстрап-> гетОптионс ();
    
    	         иф (иссет ($ цонфиг ['лаиоутПатх'] [$ модул] ['ресурса'] ['распоред'])) {
    	             $ = ЛаиоутПатх
    	                  $ Цонфиг [$ модул] ['лаиоутПатх'] ['ресурса'] ['распоред'];
    	             $ Тхис-> гетАцтионЦонтроллер ()
    	                  -> ГетХелпер ('распоред')
    	                  -> СетЛаиоутПатх ($ лаиоутПатх);
    	         }
        	 }
         }
     } 
  3. И на крају боострап акције помагач:
      ...
         / **
          * Подешава изглед скрипте по модулу основи
          * /
         заштићен функцијом _инитЛаиоутХелпер ()
    	 {
    	     $ Тхис-> дизања ('фронтЦонтроллер');
    	     $ Распоред = Зенд_Цонтроллер_Ацтион_ХелперБрокер:: аддХелпер (
    	         нови Про_Цонтроллер_Ацтион_Хелпер_СетЛаиоутПатх ());
    	 }
     ... 

Доктрина: ДАТЕТИМЕ подразумевани САДА ()

По Стивен Лојд Ваткин , среда 30. децембар 2009 6:30 по подне

Ја сам се борила са подешавањем шеме базе података за нови Зенд Фрамеворк пројекат. Ја сам помоћу покушава да искористи доктрина ОРМ за моје базе модела. Морам да подесите шему тако да ми дозволили да подесите подразумевани датум и време на `датетиме колону", на пример, када додате нову поруку добијем тренутни тиместамп. После много тражења и експериментисања сам пронашао решење, тако сам га деле.

У вашем шеме ИАМЛ датотека једноставно урадите следеће:

 Порука:
   Ацтас:
     Тиместампабле:
       Написано:
         Име: цреатед_ат
         Тип: тиместамп
         Формат: Имд Х: И: с
       Упдатед:
         Име: ласт_упдатед
         Тип: тиместамп
         Формат: Имд Х: И: с
   колоне:
     ИД:
       Тип: интегер
       Примари: истина
       АУТОИНЦРЕМЕНТ: истина
     Име: стринг (255)
     Е-маил: стринг (300)
     Порука: стринг (2000)

Ако са друге стране, не желите `упдатед_ат` колону можете да користите следеће:

 Порука:
   Ацтас:
     Тиместампабле:
       Написано:
         Име: цреатед_ат
         Тип: тиместамп
         Формат: Имд Х: И: с
       Упдатед:
         особе са инвалидитетом: истина
   колоне:
     ИД:
       Тип: интегер
       Примари: истина
       АУТОИНЦРЕМЕНТ: истина
     Име: стринг (255)
     Е-маил: стринг (300)
     Порука: стринг (2000)

ПХП-Десигн Паттернс - Посматрач узорка

По Стивен Лојд Ваткин , уторак 29. децембар 2009 10:02 ПМ

Ја сам читао Хеад Фирст Десигн Паттернс недавно су одлучили да напише неке од образаца као ПХП примера за моју личну корист. Први који сам одлучио да се код је Обсервер паттерн . Формална дефиниција посматрача узорка је:

Посматрач образац (подскуп асинхроног објављивање / претплатити образац ) је софтверски дизајн образац у којем објекат , који се зове предмет, одржава списак својих породица, позвао посматраче, и обавештава их аутоматски било које државе промена, обично позивом један од њихових метода . Углавном се користи за имплементацију дистрибуираних система догађај руковање.

Као системи постају све лабаво удружена и уверите се да када се догађај деси све системе који захтевају знање ове исправке су информисани. На пример, блогу, након чувања порука можда ћемо морати да ажурирате претраживач (нпр. Луцене), ажурирамо нашу Ситемап, ознаке, е-маил претплаћени корисници, итд посматрач модел омогућава програмерима да додате додатне слушаоцима без измена њиховог посматрати објекат . Убризгавањем посматрача (тј. претраживач посматрача мотор упдате Ситемап Генератор, итд) у теми (тј. уређивања блога систем порука) можемо дозволити да обављају све неопходне измене без икаквих промена.

Наставити читање 'ПХП-Десигн Паттернс - Посматрач узорка' »

Канцеларија Грид помоћу виртуелних окружења - Део 4

По Стивен Лојд Ваткин , петак, 4. децембар 2009 11:59 ПМ

Увод

Ја радим у фирми где смо покренули многе серије послове обраде милионе записа података сваки дан и био сам недавно размишљање о свим машинама које седе око сваки дан не раде ништа за неколико сати. Зар не би било добро ако бисмо могли да користе те машине да ојача процесорску снагу нашег система? У овом скуп чланака ћу да погледате потенцијалне користи од запошљавања канцеларије мрежу користите виртуалисед окружења.

У делу 3 креирали смо наше виртуелне машине за прераду и подесити Виндовс машине да постане мировања радног времена радника.

Покретање најновији број

Неизбежно након што направите свој бизнис логику радници ће се променити, грешке ће се наћи, бржи ефикаснији код ће бити произведена тиме остављајући своје раднике седели обраду података користећи стари смрдљиви кода . Како онда ми бисмо били сигурни да увек користите најновије и највеће верзија нашег прераде скрипте?

Постоји неколико једноставних начина веома лако смо могли бисте то урадили, трик је, међутим, да се смањи процесорску снагу и мрежни саобраћај у остваривању овог. Почнимо са најједноставнијим решења и побољшање полако преко неколико итерација.

Први метод би био да једноставно повежете са нашим сервером посао контроле (преко Самба, ФТП или слично) и повуците на доле најновију верзију кода. Није врло ефикасан, али ће урадити посао. Омогућава да донекле побољша, како о креирању и коришћењу рсинц скрипту да се сваки пут уместо тога? Или шта је стављање наше најновије обраде скрипту у субверзије проверу из кода у почетку и онда само ажурирање нашег кода на сваку Рун ( СВН упдате )?

На крају смо могли завршити са басх скрипту (зову црон сваких 10 минута) који изгледа као једноставан као овај:

  # / Бин / сх!
 ПС ако је АКС | греп-в греп | греп ПХП > / дев / нулл
 онда
     ецхо "Посао је тренутно обрађује, Екит"
 друго
     ецхо "посао није покренут, покрените сада"
     ЦД / путања / до / радне / копију
     СВН упдате
     ПХП иоурЈобПроцессингСцрипт.пхп
 Фи 

Сада можемо бити сигурни да са сваком покренути смо дефинитивно користите најновије кода. Ми смо обезбеди ово ажурирање наших основни код сваког и сваки пут вршимо покренути и смањење мрежног саобраћаја за само пребацивање датотека разлике у нашу мрежу.

У мом демонстрације за подешавање, нисам тачно као горе. Субверзија је инсталиран на мом серверу посао обраде и једноставно сам извукао последњи кода са гране "радник" користите 'СВН ажурирај ". Такође сам додао број верзије ознаке на моје обраде скрипту који је вратио у базу података као део резултате. На овај начин сам могао да видим да је мој код је ажурирају сваки пут када сам копира моје трупа у грани, односно радника да сам дефинитивно био покренут најновије прераде сценарио.

Користећи најновије податке

Ако ваш посао обраде користи извора података затим у неком тренутку ови ће бити превише ажуриран. Осим ако позовете извора података на основу веома ретко ћете поплава своју мрежу са саобраћај чим покренете радници раде све да доносе застоја. За мој решење сам одлучила да желим да преместите Моји извори података около са мојим виртуелним машинама.

Држите си коње тамо ОГРОМНО! Шта ако моји извори података су? Па ово је заиста случај података колико ми говоримо? То може бити више исплативо да инсталирате додатни већи хард диск у сваку машину него купи додатних сервера обраду. То је питање буџета и до бизниса да одлучи. То је можда да је ваш извори података су толико велики да је само неизводљиво да тај износ података у вашем радника машине. У том случају оно што би ти урадио? Па могли бисмо да погледамо позивање локалних података сервера, али ово може изазвати проблеме са мрежом. У овом случају мреже система као што је ова може постати нереално да укључите у Ваш канцеларијском окружењу. То такође може бити да можете да погледате на алтернативне стратегије ради, на пример, само Позивање радника између 8 увече и 6ам сваке вечери и / или захтева пригушења извор података.

Прелазак на рецимо наши извори података износи 100Гб података. Па да то је сасвим мало података за кретање по мрежи на ажурирање. Како бисмо били сигурни да имате најновију копију података у овом случају? Рсинц је могућност, али лично мислим да покренете најновије извор података на вашем серверу посао обраде и подесити као мастер репликације (са дугом леп Бин дневник) може бити начин да се иде:

репликација Постављањем сваки од ваших радника се као роб посла исправке за контролу сервера на ваш извора података ће се прелити лепо на свој радника без огроман пораст у мрежи активност (која је осим ако не изврши велики ажурирање података и све своје раднике ударац у одједном). То је у предности у односу на рсинц да не би добили дужа пауза пре сваког посла, као ажурирање базе података, МиСКЛ демон на ваш радник стално ажурира своје податке, а обрада се наставља.

Ово је како да подесим мој демонстрацију сервера. Да бисте поставили репликацију пратио сам упутство на сајту миСКЛ ( Успостављање репликације ), а у року од 20 минута имао сам инитал радник реплицира посао серверима контролу датасет. За сваку додатну радника репликације подешавања и процеса радили сваки пут када је ВМ је копиран.

Резиме

У овом делу чланка смо посматрали како је лако и безболно је да ваш код за обраду до датума усингА рсинц или субверион (СВН) да раде посао и смањити саобраћајне мреже у исто тиме.А Такође смо разговарали о томе како да ваше податке извора информација до-до датума дозвољавајући да прелити на сваку од ваших радника. Тако смо површина осигура да држе корак са пословним логику и информације у нашем систему Оффице мрежу. очигледно ће бити безброј алтернатива за обављање ових послова, али овде су два једноставна примера да покаже како је лако решење је да долазе.

Следећи пут

У завршном делу ове серије, пригодно назван Део 5 , ми ћемо разговарати о примени овог система за. Ја ћу укратко шта је научио и оно што сам успео да створи.

Канцеларија Грид помоћу виртуелних окружења - Део 3

По Стивен Лојд Ваткин , петак, 4. децембар 2009 11:37 ПМ

Увод

Ја радим у фирми где смо покренули многе серије послове обраде милионе записа података сваки дан и био сам недавно размишљање о свим машинама које седе око сваки дан не раде ништа за неколико сати. Зар не би било добро ако бисмо могли да користе те машине да ојача процесорску снагу нашег система? У овом скуп чланака ћу да погледате потенцијалне користи од запошљавања канцеларије мрежу користите виртуалисед окружења.

У делу 2 смо гледали на посао сервера ће се покренути, и како посао треба да буде конфигурисан како би се постигла највећи износ од обраде истовремено обезбеђујући да сваки посао се обрађује без успети.

Подешавање радник - Лимп или сервера

Следећи корак у процесу је да подесите ваш виртуелни радника. За ово ћу користити инсталација ЦентОС коришћења ВиртуалБок. Идем да инсталирате МиСКЛ и ПХП на серверу, такође познат као опуштен (литијум Нук, М иСКЛ П КС) сервера (Можда сам направио тим именом горе).

  • Инсталирајте ВиртуалБок на Виндовс машини (пратите линк)
  • Преузмите и инсталирајте ЦентОС (тренутна верзија 5,3) у оквиру створио виртуелну машину

Нема смисла мене ће ово вероватно постоји 1.000 с велике туторијала тамо (у реду, ево једног: Прављење и МанагингА ЦентОС виртуалне машине под ВиртуалБок ). Важно имати на уму Претпостављам да сам позвао моју виртуелну машину ГридМацхине.

Што се тиче мог избора за виртуелизацију клијента и оперативног система идем тамо постоји велики разлог за сваки избор. ВиртуалБок је нешто што ја користим на мојој кући машину и подржан је од стране три главна оперативна система. ЦентОС изабрао сам као своју добру стабилан оперативни систем и да га користим на својој веб сервера. Ја сам велики верник у правом алате за посао (иако сам примене 'користи најбржи и најлакши за вас менталитет овде), тако да ако оперативни систем Кс покреће свој код брже и ефикасније користе да уместо:)

Важно Уверите се да ваш ВМ користи ДХЦП, у супротном, за сваки нови виртуелни машина би требало да буде посебно конфигурисан што је нешто што не користите ДХЦП вант.Би не морамо да конфигуришете подешавања мреже појединачно за радника машине, ДХЦП це руке ИП се за вас. Због тога можете да разделите ваше виртуелне машине за канцеларију без бриге о подешавању свака на горе (она побољшава и смањује скалабилност радника управе).

Процес би требало да имају за циљ да се постигне био би да добије нову физичку машину, инсталирати ВиртуалБок, а затим прилично примене виртуелне слике без много друго. Можда би било мудро да подесите све своје раднике на различитим подмрежи, тако да можете да бар видите како су многе машине раде. Такође ћете морати да подесите свој машина на лизинг или неограничено дуго закуп ДХЦП.

Како покренути посао на радника

Ово је интересантно подручје и постоји неколико валидних метода за обраду послова на радника. Ево ја ћу разговарати о две најочигледније:

  • Непрестано ради скрипта: скрипт, било да је схелл скрипта, или ПХП скрипта се извршава на једном раднику и ради као део бесконачне петље. Ја сам дисконтованих овај метод као један крах скрипте и потенцијално вашим радницима ће престати да ради без неке врсте интервенције.
  • Црон основу Скрипта: сваких к минута црон демона почиње позив на скрипту да се ствари дешава. Без неке провере то би могло да доведе до много много копије својих радника раде скрипте.

Моја одлука је била да идем преко Црон који почиње схелл скрипт сваких 10 минутес.А Мој схелл скрипт извршава следеће задатке:

  1. Набавите листу процеса и Греп ово за 'ПХП'. Ако није пронађен онда наставите.
  2. Позовите свог кода посао, у мом случају то ће бити нешто ПХП базиран
  3. Радник скрипта оконча свој Рун
  4. Спремни да се поново иде на следећи одговарајуци позив

Моја скрипта Басх изгледа нешто као следеће:

  # / Бин / сх!
 ПС ако је АКС | греп-в греп | греп ПХП> / дев / нулл
 онда
     ецхо "Посао је тренутно обрађује, Екит"
 друго
     ецхо "посао није покренут, покрените сада"
     ПХП иоурЈобПроцессингСцрипт.пхп
 Фи 

Напомена: ехо су скоро потпуно бесмислено, али може помоћи следећу особу која долази заједно покушали да измените их.

То закључује постављање радника виртуелних машина, брза, једноставна и лака за копирање, на сваки нови комад хардвера који се прима. Тхе 'вештина' за Грид систем заиста није у визуелно оперативног система, свим својим везе са кодом створена за обраду радних места, посао конфигурацију, и да се уверите да је посао ради када је то потребно (тј. када је домаћин у стању мировања .)

Подешавање Виндовса да иницијализујете радника

Први задатак је да се разради Потребна команда за покретање виртуелну машину са Виндовс командне линије. Ако сте инсталирали ВиртуалБок у подразумеваној локацији и да сте своје име радника ГридМацхине затим команду потребно да се учита ваш радник:

  Ц: \ Програм Филес \ Нед \ ВиртуалБокс \ ВБокМанаге.еке "стартвм ГридМацхине 

Међутим, да покренете скрипту на "обезглављен" држава треба да користите:

  Ц: \ Програм Филес \ Нед \ ВиртуалБокс \ ВБокХеадлесс.еке "-стартвм ГридМацхине - врдп = искључено 

Ово ће покренути виртуелну машину без ГУИ-и пустите га да сачува државу љупко. Други аргумент искључује РДП тако да не конфликт са Виндовс РДП, или да Вам поруку о слуша на порту 3389 осетљиви. Виртуелна машина име је случај!

Даље, ми ћемо морати да подесите Виндовс до почетак наше СМ радник када Машина је у стању мировања. Да бисте то урадили (на Виндовс КСП), мораћете да идете на Старт -> Алл Програмс -> Аццессориес -> Систем Тоолс -> Сцхедулед Таскс као што следи:

Сцхедулед Таскс

Следећи кликните на "Адд Сцхедулед Таск 'затим Бровсе да додате прилагођене програма. Идите на свој ВБокМанаге скрипту и кликните на дугме У реду. Распоред свој задатак за било коју од опција (ћемо променити у минуту) и наставити. Након прескакање следећи екран Виндовс ће вас питати који желите да покренете овај задатак, ја бих предложити било 'администратора' или креирате нови привилеговани корисник. Запамтите да не желимо да се мешају са стандардним особљем налог на машини у било ком тренутку. Кликните на дугме Даље и проверите Прикажи напредне опције за овај задатак.

За крај Рун поље Адд 'стартвм ГридМацхине' Стринг наше и да обезбеди да тече само када се Пријављено левој унтицкед. Посетите следећи распоред задатак и промените распоред спустите доле на опцију "када мировања", изабрати колико времена желите да машина буде у стању мировања пре него што пређете на следећу картицу.

Коначно унтицк опцију која држава зауставити задатак ако је покренут Кс времена, али не потврдите опцију да се заустави задатак, ако машина није више у стању мировања.

распоред

То је онда за прозоре домаћин подешавање!

Резиме

У овом делу смо поставили виртуелна машина да се понашају као радник, као и начин на који позива и извршавање скрипте наш посао обраду (за себе ПХП скрипт). Одавде можемо да погледамо како да подесите наше копије оперативног система Виндовс да бисте покренули виртуелне машине у режиму без главе када је рачунар у стању мировања постаје, и да сачувате своју дрзаву, када корисник настави коришћење машине. Надам се да у овом тренутку видите како је једноставно поставити такав систем и свраб да би добили неке експерименте себе иде!

Следећи пут

У Део 4 ћемо се гледајући у коришћењу алата како би се осигурало да ли користите најновију верзију кода и извора података тако да се добијени резултати су увек уп-то-дате са најновије пословне информације и логике.

Канцеларија Грид помоћу виртуелних окружења - Део 1

По Стивен Лојд Ваткин , петак, 4. децембар 2009 11:23 ПМ

Увод

Ја радим у фирми где смо покренули многе серије послове обраде милионе записа података сваки дан и био сам недавно размишљање о свим машинама које седе око сваки дан не раде ништа за неколико сати. Зар не би било добро ако бисмо могли да користе те машине да ојача процесорску снагу нашег система? У овом скуп чланака ћу да погледате потенцијалне користи од запошљавања канцеларије мрежу користите виртуалисед окружења.

Као ПХП програмер ћу користити алатке које ја користим и то сваког дана, Линукс, миСКЛ , ПХП, ВиртуалБок и субверзија (СВН). Међутим, надам се да овај водич ће се прилагодити другим језицима и технологијама као добро.

Решење дајем ће бити врло лабаво на основу типа обраде нам треба да би се ово постигло, међутим не може бити истина кроз цео чланак и ја ћу променити ствари за једноставност, или да се произведе више занимљивих сценарија употребе.

Ови виртуалисед окружења ће радити на Виндовс машинама, јер то је оно што већина канцеларија покренути. Обраде који канцеларијских машина не треба да се мешају са особљем коришћењем тих машина, треба да захтевају никакво одржавање у машину и да се лако размјестиве нове машине чим постану доступни. Такође, нове виртуелне машине, није потребно никакво додатно конфигурисање, јер то значајно смањује скалабилност и лакоћа којом Грид систем се може продужити.

Зашто Примените Канцеларија за рачунарске решетке?

Прво можете да размишља, зашто не користимо само рачунарских ресурса као што је облак ЕЦ2 платформу Амазон ? Па разлога може бити неколико, на пример:

  • Нећете поверити одређене податке окружења цлоуд цомпутинг
  • Не можете да се неке податке у средину цлоуд рачунарства за правних разлога (нпр. подаци одласка у иностранство), потенцијално и за правних разлога, нпр НХС-записа.
  • Ви желите да задржите вашу пословних јединица у близини и имају пуну контролу над хардвер превише
  • Немате средства за покретање пројекта инстанце облак
  • Ваша канцеларија нема везу са Интернетом и стога то није могуће користити ресурс облак
  • Не као киша, облаци сугеришу киша, тако да задржите и даље

Сигуран сам да списак може наставити, али мислим да је довољно за сада.

Предности ГРИД рачунарство канцеларије

Па, хајде да неке математике (и у праву физике стилу омогућава направити неке претпоставке чишћење). Замислите да имају велике јак за обраду Сервер 100 радних места дневно. У вашем канцеларији имате 50 машина које су у стању мировања 16 сати дневно, сваки од ових машина је 10% тако моћан као јак за обраду раскину. (Сви резултати су заокружени на ту потценити повећања перформанси).

Дакле, 1 машина * 10% сила * 2 / 3 времена = 0,067, односно 1 Десктоп прераду у време мировања могли да обрадимо 6 пуно посла дневно.

Ако сада плану ово се узима 15 мировања десктоп да обрадимо што више радних места по дану као свој главни сервер не обраде.

Дакле, у нашој канцеларији претварати од 50 машина можемо да повећамо нашу процесорске снаге од 1 до 4 сервера пуном сервера обраду, или смо могли да обраде 400 радних места по дану уместо 100.

Обавештење, без улагања у нови хардвер ваша компанија има управо повећала свој капацитет прераде серије 4 пута! Потенцијално ћете повећати коришћење енергије, али из већине канцеларијска окружења сам био машине су углавном преко ноћи остало ионако, па могли сте да видите то као зелене иницијативе.

Друге предности значити да је улагање у нову (или ажурирано) обрада сервери могу бити одложена ако је ваша канцеларија машине су довољни и да је као да побољшате снагу својих канцеларијских машина ваше мреже Оффице постаје моћнији аутоматски.

Технологије

Шта вам је потребно? (Или тачније шта ја користим):

  • Идле Канцеларијске машине (у мом случају резервни стари Уиндоус КСП лаптопа)
  • ВиртуалБок (или неки други клијент софтвер за виртуелизацију)
  • Виртуелни машина са ПХП, МиСКЛ руннингА ради смањити оперативни систем, зовем ове моје Лимп сервера:)
  • Послови за покретање
  • Посао сервера (може бити још једна виртуелна машина негде)

Типични послови

Врсте послова које је овај систем пројектован да ради је следећи:

  • Систем прима листу података на основу којих треба да одговарају и резултате
  • Упаривања подразумева проверу / потрази неколико (прилично статичан) извора података
  • Резултати из извора података може захтевати додатно валидацију, спајање, провера додатних извора података као одговор на резултате
  • Подаци се вратио са одговарајућим записима, у потпуности потврђене и обради
  • Сваки запис у посао независно од остатка

Тако да у суштини ми тражимо у трчању пословима који захтевају мешавину базе података лоокуп и одређени број крцкање, прилично типичан сценарио у пословном окружењу.

Мрежа решења нису само корисне за обраду послове овог типа. У суштини, било који процес који се може поделити у независне јединице могу се изводити паралелно. Погледајте овај Википедиа за примере и додатне информације: Грид , али је неколико познатих примера СЕТИ @ хоме и БИОНЦ . Постоје оквири за покретање рачунарских решетки, а то је добро вреди гледа у.

Оно што ћемо постићи?

До краја ових чланака се надам да ћу показати да распоређивање канцеларија мреже не морају бити веома скупо или времена. Идем да размотре:

  • Подешавање система контроле посао, посао конфигурације
  • Креирање одговарајуће виртуелне машине за обраду
  • Како подесити систем на Виндовс машини
  • Обезбеђивање користите најновије кода и података
  • Распоређивање и бенчмаркинг
  • Поглед у будућност

Ја ћу бити зграде (ОК сам саградио, а затим је написао овај) примеру апликације за тестирање концепата на локалном рачунару користите Виндовс КСП и виртуалне машине мој 'ГридМацхине ". Мој посао контроле сервер ће бити моја главна машина која покреће Федора-11 .

То је ни на који начин треба да покаже потпуно радно робустан систем, његове значила више демонстрације и дискусије показују да се ове ствари могу постићи у разумно кратком временском року и уз мале трошкове. Молимо Вас да ми пошаљете било какве коментаре, исправке, побољшања или а ја ћу све од себе да овај чланак ажуриран на мечу.

Следећи пут

У делу 2 ја ћу почети гледајући на систем контроле посао, и погледајте на који начин треба да буде конфигурисан послове како би се постигла највећи износ од обраде истовремено обезбеђујући да сваки посао се обрађује без успети.

Канцеларија Грид помоћу виртуелних окружења - Део 2

По Стивен Лојд Ваткин , петак, 4. децембар 2009 11:23 ПМ

Увод

Ја радим у фирми где смо покренули многе серије послове обраде милионе записа података сваки дан и био сам недавно размишљање о свим машинама које седе око сваки дан не раде ништа за неколико сати. Зар не би било добро ако бисмо могли да користе те машине да ојача процесорску снагу нашег система? У овом скуп чланака ћу да погледате потенцијалне користи од запошљавања канцеларије мрежу користите виртуалисед окружења.

У Део 1 сам дао преглед система и технологија ћу користити као и разговарали неке од могућих разлога због којих бисте желели да креирате мрежу канцеларије.

Контрола посао

Ако идете да радите посао онда ћете морати на неки начин да њима управљају. Ваш посао контроле система (на свом послу серверу) треба да буде заиста добро промишљена пре него да покуша да покрене мрежу канцеларија. Па прво, шта су задаци за посао система контроле:

  • Послови руку на захтев радника
  • Реците радници који тип радних места за покретање
  • Пратите послове
  • Ensure that jobs are only run once
  • Provide job data to workers, or at least tell them where to get it

The system also needs to be extensible, a solution that works for now in a single case may be extended to run several types of jobs as the business sees the worth in a grid solution. For example, jobs may gain priorities, more than one job type may exist (ie several code bases), eventually you may even run several different worker machines that are optimised for each type of job (although that does move away from the 'generic worker' idea). Always try to think about the future when developing systems, a short term vision can lead to longer term frustration and increased development time.

Job Server

We're going to need somewhere to control our jobs from, this should be the only system in your grid that has a fixed resource locator, be that an IP address, host name, URL (using internal DNS), etc. This is because the workers need to know where to look for jobs, workers need to find the job control system (not the job control system find the workers).

The job server itself doesn't really have a complicated task (in a basic system anyhow), it needs to store a list of jobs, hand out jobs, receive results, and subsequently store them for later retrieval. How these parts (such as 'hand out jobs') are defined can be very basic. Later on we can extend the system to include an administration interface to add, edit, delete, suspend jobs but this is beyond this exercise.

There is no reason whatsoever then that your job server could not be a virtual machine running within your main processing server provided it doesn't drain too many resources from it. The job server however does need high availability, if it goes down on a Friday evening you're going to lose a whole weekend of processing, potentially costing you a couple of weeks worth of processing time (when compared to your main processing server alone). You may want to consider putting your job server on a load balanced environment for high availability.

Basic Setup

The basic setup for our job server will consist of what I'm calling one of my LiMP servers (that is Li nux, m ySql, P HP). The code running on the workers will actually work out what jobs it can run by interacting with with job control system databases. Later on we could create a web service and actually hand out jobs rather than having the workers do the hard work themselves, but for now we'll continue using the KISS principle (Keep it Simple, Stupid!).

So, lets create three mySQL tables to deal with jobs. These will be `jobs`, `jobRecords`, and `jobResults`.

jobs table Here I'm using SQL Buddy a great little alternative to phpMyAdmin just because its easier to install on centOS (for others see: 10 Great alternatives to phpMyAdmin )

This table consists of 5 simple fields,

  • id: Uniquely identify the job
  • name: Could be a client reference, or any number of other identifiers
  • Status: You need to know where the job is at, eg
    • 0: Not started
    • 1: Picked up
    • 2: Completed
  • started_by: Who's started doing the job? This isn't entirely required but is a nice to have. I'd suggest tracking workers by their IP address on your network
  • started_at: When did the worker start the job? By tracking jobs that have not completed within X amount of time we know we need to pick up the job once again and start processing by another worker. Workers could stop processing/go offline for any number of reasons, power failure, crash, network loss, etc.

It is easy how this table could be extended with a few additional fields to allow for statistics tracking, a finish time column to see how long the job took, a counter to see how many workers picked up the job (obviously this needs to tend to 1), job priority, the list can go on and on. In more complex job scenarios it would be possible to specify how much memory the worker would need access to (and therefore only use suitable workers), or even what type of worker would be required.

Lets add a few example jobs:

example jobs

The next table again is quite simple to understand, these are our job records. They are linked to the main jobs table by a column `jobs_id`. The make up of this table very much depends on the data that you need to supply to your workers, lets make a very simple example where we have four columns:

  • id: ID of the record
  • name: Person's name
  • address: Person's address
  • jobs_id: The job ID that this record is linked to

The third and final table consists of a results table, it has much the same make up as our records table, and with the addition of some columns could be part of the records table:

  • job_record_id: Link the result to the job table
  • result: The result data

…and that's all you need for job control! (albeit at a very basic level) In my case I'm pointed to another table where my data to process was located, but this could just as easily been a file, parameters to run simulation code, you name it.

Selecting a job

As stated previously, the workers will do our job management for us for now, so all we need to really do is find a job that needs processing and get the information. How would we do this? Well pick our job selection criteria and look for jobs, in SQL I did the following:

  1. Take any jobs that are not marked as complete but from our worker and reset them (substitute __ME__ with an identifier, easiest would be IP address):
     UPDATE `jobs` SET `status` = 0 WHERE `status` = 1 AND `started_by` = __ME__; 
  2. Using our job selection criteria, select a job and tell the control system that this worker is dealing with it:
     UPDATE `jobs` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW() WHERE `status` = 0 OR
    (`status` = 1 AND `started_at` > DATE_SUB(NOW(), INTERVAL X HOUR)) ORDER BY `id` ASC; 

    By grabbing jobs that haven't returned results in X amount of time we ensure that all jobs are run in the event of a worker crashing or going AWOL.

  3. Next grab the jobs details followed by the records themselves:
     SELECT * FROM `jobs` WHERE `started_by` = __ME__ LIMIT 1;
    SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Upon completion of the job we insert our result records and mark the job as complete. Remember as jobs can suspend/resume at any time allow for some robustness in your script. It might be that the task suspends half way through updating the job control system, so checking the number of records in a job and the number of results saved back to the job control system would be a wise move.

In addition, whilst this demonstrates how jobs can be selected and managed from an SQL-query frame you should really be abstracting your job control so that if you decide to switch to using a web service, a file based system, XML , or any other number of systems it will not affect the code above it.

Job Configuration

The next aspect to consider is job size and configuration. By playing with job configuration we can strike an excellent balance between speed, process replication, and reliability. Take a couple of scenarios:

  1. Jobs take 1 day each to run: This means that your workers need 15 days to process each job (remember 10% of the power for 2/3rds of the time). This is clearly not a wise configuration, your job size is way too big! It would take at least double the time to get a job processed should the initial worker go AWOL (time to pick up that it hasn't returned a result plus reprocessing time). In an ideal you'd have at least one full job easily cleared by the end of each long idle period, that way you keep the jobs ticking over and at worst case a job would take two days to process should the first go missing.
  2. Jobs take 1 minute to run: This means that your workers take about 15 minutes to run each job. Whilst this may initially seem ideal, you gain additional work processing during lunch time, coffee breaks, meetings, etc this scenario puts strain on other areas of your system and introduces its own problems. For example, firstly your setup/processing time ratio is going to go right down, therefore losing system efficiency. Your network is going to be constantly streaming job information to the various workers frustrating staff who are dong their day to day work. You're also going to put more strain on your job processing server as it has to dish out lots and lots of small pieces of work on a regular basis. Lastly, in this situation if your job server goes down you're going to create a huge back log of uncompleted work whereas bigger jobs could of continued processing blissfully unaware that the job server was experiencing difficulties.

In reality there will be no one ideal configuration for your grid setup, much depends on the available resources, types of job, job turnaround time requirements, network capability, and so on. However some guidelines would be:

  • Size jobs so that each worker can get through at least 3-4 jobs in a period of 15 hours (the longest likely idle time period)
  • Play with the job size so that setup time becomes fairly insignificant compared to the processing time (bearing in mind the above point).
  • If a job doesn't complete in double the amount of time (maybe less) you expect it to complete it assume that its gone AWOL and start processing it with another worker. This means you may have to wait up to three times the normal length of a job for it to complete (possibly longer if the subsequent job fails). You may want to reduce this time, but be careful not to reduce it too much as you may start duplicating processing tasks on a regular basis.
  • Jobs should be independent of outside requirements as much as possible. The job server, for example, should only be contacted at the start and end of every job.
  • Don't saturate your network, this will have two negative effects, your daytime staff will find using the network frustrating and problems may be experienced with connections timing out a problem that will only get worse as you scale your grid.
  • Ensure jobs can run on your workers. If jobs become too memory intensive or disk space intensive jobs will start aborting and the only thing you'll notice is a drop in number of jobs processed with no real reason why.

Submitting Results of a Job

When submitting the results of a job it is important to check that results have not been submitted by another worker, especially if the current worker has been dormant for some time.

When results are submitted ensure that the number of results matches the number of records within the job.

As stated previously, and can not be over emphasised, build fault tolerance into job retrieval and results submission. The workers can (and most likely will) go into suspend mode at the most inconvenient of times and this needs to be catered for. Also once again abstracting away your results submission will help cater for future changes to your job control system much easier to deal with.

Резиме

In this section we have looked at what a job control server needs to do and how to get a very basic system set up. We discussed how to retrieve a job from the control system and how best to configure jobs to get the most our of your office grid system. To finish, a paragraph or two on submitting results back to the job control server was presented.

  • A job control server manages jobs and ensures that all work units are completed
  • By abstracting your job select/results submission we can change the technology of the control server without much problems
  • Configure your jobs to ensure that they are run quickly and efficiently without putting too much pressure on your network infrastructure, and without duplicating processing tasks on a regular basis.
  • Ensure that you build fault tolerance and error checking into your routines, workers can suspend and resume and the most inconvenient of times. Remember to check if results have already been submitted by another worker.

Следећи пут

In part 3 we'll create our virtual processing machine and set up our windows machines to become idle-time workers.

Канцеларија Грид помоћу виртуелних окружења - Део 5

By Steven Lloyd Watkin , Friday 4th December 2009 11:03 pm

Увод

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. Дакле,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Deployment

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Стоп!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.













Панорама Тхеме Тхемоцраци

7 посетилаца онлине сада
4 guests, 3 bots, 0 members
Максимална данас Посетиоци: 12 у 06:16 пм УТЦ
Овог месеца: 22 у 08-06-2011 12:30 пм УТЦ
Ове године: 130 у 28-03-2011 10:40 ам УТЦ
Све време: 28-03-2011 у 10:40 130 ам УТЦ