Dynamicznie dodawać strony do pojemnika Zend_Navigation w czasie wykonywania

Przez , w czwartek 07 styczeń 2010 10:50 pm

W kontynuacji na moim ostatnim postem o Zend_Navigation i żądań dla sitemap.xml do niestandardowego kontrolera / akcji , ten post jest o dymnamically dodawania stron do pojemnika Zend_Navigation w czasie wykonywania / script wykonania.

To wszystko dobre i określając swoje strony w ini lub xml pliku, ale w pewnym momencie będziesz już zmianie stron witryny, które mają jako część menu, Mapa strony, lub które zostaną włączone w Twojej breadcrumb szlaku. Co więc musimy zrobić, to dodać strony do naszego pojemnika Zend_Navigation w czasie rzeczywistym. Przykłady byłoby to w punktach dodawania aktualności, blogach i komentarze stronie itd.

Czytaj dalej "Dynamicznie dodawać strony do pojemnika Zend_Navigation w czasie wykonywania" »

Żądań do sitemap.xml do niestandardowego kontrolera / akcji

Przez , środa 6 stycznia 2010 12:13 am

W celu kierowania wniosków o / sitemap.xml do niestandardowego kontrolera i akcji w Twoim Zend Framework aplikacji wystarczy dodać następujące w swoim application.ini lub alternatywnego pliku konfiguracyjnego (np. używam navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = indeks
 resources.router.routes.sitemap.defaults.action = mapa

Przykładowy kod do wyświetlania mogą być postrzegane przez stworzenie działania w odpowiednim sterownikiem (np. Mój mapa leży w kontrolerze index, działania mapa):

 < php
 Klasa IndexController
     rozszerza Zend_Controller_Action
 {
     / **
      * Renderuje sitemap na podstawie konfiguracji Zend_Navigation
      * /
     publicznych sitemapAction function ()
     {
    	 echo $ this-> view-> nawigacji () -> Mapa strony ();
    	 $ This-> view-> layout () - disableLayout> ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps mogą szybko i łatwo być generowane przy użyciu Zend_Navigation , wielki szybkie samouczek (i ogólnie bardzo przydatne dla Zend Framework samouczki) to odlewnictwa Zend - Dynamiczne tworzenie menu mapy witryny i bułka tarta .

Zend Framework Per-Moduł oparte ustawienia

Przez , w piątek 01 stycznia 2010 10:40 pm

Utworzyłem na to stanowisko, które wymaga mniej konfiguracji, patrz Moduł Based układ - Zend Framework .

Podczas korzystania z Zend Framework z modułów, jego oczywiste, że jeśli używasz różnych (pod) strony od samej aplikacji nie koniecznie chcą te same skrypty układu dla każdej części. Postanowiłem iść z następującej struktury serwisu:

  / Application
     Wizyjnej
         ...
     / Modele
     / Modules
         / Default
             Wizyjnej
             / Układ
                 / Skrypty
             / Views
                 / Skrypty
         / AnotherModule
             ...
     / Skrypty

Problem tworzenia skryptów układu na podstawie per-modułu. Odpowiedź przyszła za pomocą Helper działania. Konfigurowanie układów na podstawie za moduł obejmuje trzy etapy:

  1. Application.ini (lub podobny setup konfiguracji):
     admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouts / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouts / scripts "affiliate.resources.layout.layoutPath = APPLICATION_PATH" / modules / partnerskie / layouty / scripts " 
  2. Stwórz swój Helper działania:
      <? Php
     / **
      * Ustawia ścieżkę układu na podstawie za moduł
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Od 2010-01-01
      * /
     klasa Pro_Controller_Action_Helper_SetLayoutPath
         rozszerza Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Układ Zestawy ścieżka oparta na module
          * /
         publicznych preDispatch function ()
         {
        	 $ Module = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ("bootstrap")) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ module] ['Zasoby'] ['układ'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ module] ['Zasoby'] ['układ'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ("układ")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. I wreszcie boostrap pomocnika działania:
      ...
         / **
          * Ustawia skrypty układu na podstawie za moduł
          * /
         chronione funkcja _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ("FrontController ');
    	     $ Layout = Zend_Controller_Action_HelperBroker :: addHelper (
    	         nowy Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doktryna: default DATETIME NOW ()

Przez , środę +30-ty grudnia 2009 18:30

Byłem zmaga się z utworzenia schematu bazy danych na nowy Zend Framework projektu. Jestem za pomocą próbuje używać Doctrine ORM dla moich modeli baz danych. Muszę ustawić schemat tak, że pozwoliła mi ustalić datę domyślną i czas, czy po `datetime pliku` kolumnie, np. po dodaniu nowej wiadomości otrzymuję aktualny znacznik czasu. Po długich poszukiwań i eksperymentów znalazłem rozwiązanie, więc jestem dzielenie się nim.

W schemacie YAML pliku po prostu wykonaj następujące czynności:

 Wiadomość:
   actAs ceny:
     Timestampable:
       utworzony:
         Nazwa: created_at
         rodzaj: timestamp
         format: Ymd H: i: s
       aktualizacja:
         Nazwa: last_updated
         rodzaj: timestamp
         format: Ymd H: i: s
   kolumny:
     ID:
       typ: integer
       Podstawowym: true
       autoincrement: true
     nazwa: string (255)
     email: string (300)
     message: String (2000)

Jeśli natomiast nie chcesz plik `updated_at ograniczników` kolumny można użyć następujących czynności:

 Wiadomość:
   actAs ceny:
     Timestampable:
       utworzony:
         Nazwa: created_at
         rodzaj: timestamp
         format: Ymd H: i: s
       aktualizacja:
         osób niepełnosprawnych: prawda
   kolumny:
     ID:
       typ: integer
       Podstawowym: true
       autoincrement: true
     nazwa: string (255)
     email: string (300)
     message: String (2000)

Wzorce projektowe PHP - Wzór Observer

Przez , Wtorek 29 grudnia 2009 22:02

Czytałem Head First wzorców projektowych niedawno i postanowiłem napisać kilka wzorów jak PHP przykłady mojej własnej korzyści. Pierwszy z nich, że zdecydowałem się kodu w górę jest Wzorzec Obserwator . Formalna definicja wzorca Observer jest:

Wzorzec obserwator (podzbiór asynchronicznego Publish / Subscribe wzór ) jest oprogramowanie wzorzec projektowy , w którym obiekt , zwany przedmiot, utrzymuje listę jego utrzymaniu, zwanych obserwatorów, i powiadamia je automatycznie o wszelkich zmianach stanu, najczęściej poprzez wywołanie jedna z ich metod . Stosowany jest głównie do realizacji rozproszonych systemów obsługi zdarzeń.

Ponieważ systemy stają się bardziej luźno upewniając się, że gdy zdarzenie wszystkie systemy, które wymagają wiedzy na temat tych aktualizacji są informowani. Na przykład, blogu, po zapisaniu Post może trzeba zaktualizować wyszukiwarki (np. Lucene), aktualizować nasze sitemap, tagi, e-mail Zapisanych użytkowników itp. wzorzec obserwator pozwala programistom na dodatkowe słuchaczy bez edycji ich zaobserwowania obiektu . Poprzez wstrzyknięcie obserwatorów (czyli search engine aktualizacja obserwator, generator sitemap, itp.) do przedmiotu (Blog czyli po edycji systemu) możemy pozwolić mu wykonać wszystkie niezbędne aktualizacje bez zmian.

Kontynuuj czytanie "Wzorce projektowe PHP - Wzór Observer" »

Grid Computing Biuro pomocą wirtualnych środowisk - Część 4

Przez , w piątek 4 grudnia 2009 23:59

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadania wsadowe przetwarzanie milionów rekordów danych każdego dnia i myślałam ostatnio o tych wszystkich maszyn, które usiąść każdy dzień nic nie robić przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn, aby wzmocnić moc obliczeniową naszych systemów? W tym zbiorze artykułów będę patrzeć na potencjalnych korzyści płynących z zatrudniania Office siatkę używając zwirtualizowanych środowiskach.

W części 3 stworzyliśmy naszą maszynę wirtualną przetwarzania i skonfigurować system Windows maszyn stać bezczynnie wymiarze godzin.

Uruchomienie najnowszy kod

Nieuchronnie po utworzeniu biznesowe pracowników logiki zmieni, błędy będzie można znaleźć, szybszy bardziej wydajny kod będzie produkowany pozostawiając Twoi pracownicy siedzieli wokół przetwarzania danych przy użyciu starego śmierdzący kod . Jak więc możemy zapewnić, że jesteśmy zawsze z wykorzystaniem najnowszych i najlepszych wersji naszych skryptów przetwarzania?

Istnieje kilka bardzo prostych prostych sposobów możemy to zrobić, sztuczka jest jednak to, aby zmniejszyć moc obliczeniową i ruchu sieciowego w osiąganiu tego celu. Zacznijmy od najprostszych rozwiązań i zwiększyć ją powoli w ciągu kilku iteracji.

Pierwsza metoda byłoby po prostu połączyć się z naszym serwerem kontroli pracy (poprzez samba, FTP lub podobnego) i pociągnąć w dół najnowszą wersję kodu. Nie bardzo wydajny, ale będzie to załatwić sprawę. Pozwala poprawić że trochę, jak o stworzenie rsync skrypt i za pomocą tego za każdym razem w zamian? Ewentualnie co o wprowadzenie na nasz ostatni skrypt przetwarzania w subversion sprawdzić kod na początku a potem po prostu aktualizacji naszego kodu na każdym biegu ust svn update )?

W końcu mogliśmy skończyć z skryptu bash (nazywane przez cron co 10 minut), który wygląda tak proste, jak to:

  #! / Bin / sh
 jeśli ps ax | grep-v grep | grep php > / dev / null
 następnie
     echo "Praca jest aktualnie przetwarzaniu, zjazd"
 więcej
     echo "Praca nie jest uruchomiony, uruchom teraz"
     cd / ścieżka / do / pracy / kopię
     svn update
     php yourJobProcessingScript.php
 fi 

Teraz możemy być pewni, że z każdej serii jesteśmy zdecydowanie zainstalowany najnowszy kod. Mamy zapewnienie, to poprzez aktualizację naszej bazie kodu co i za każdym razem wykonujemy bieg i zmniejszenia ruchu w sieci tylko przez przeniesienie różnice plików w naszej sieci.

W mojej instalacji demonstracyjnej, zrobiłem dokładnie tak jak powyżej. Subversion został zainstalowany na moim serwerze realizacja zadań i po prostu wyciągnął najnowszy kod z pracownikiem oddziału przy 'svn update'. Dodałem też znacznik numer wersji do mojego skryptu przetwórczego, który został zwrócony do bazy danych jako części zamian wyników. W ten sposób mogłem zobaczyć, że mój kod był aktualizowane są co raz skopiowany mój bagażnik do oddziału, tj. pracowników, że byłem zdecydowanie działa najnowsza skrypt przetwarzania.

Korzystając z najnowszych danych

Jeśli realizacja zadań korzysta z źródeł danych to w pewnym momencie te będą uaktualniane też. Chyba zadzwonić do źródła danych na bardzo rzadkie podstawie masz zamiar zalać sieć z ruchu tak szybko, jak Twoi pracownicy zaczną przynosząc wszystko w martwym punkcie. Dla mojego rozwiązania zdecydowałem, że chciałbym przenieść moje źródła danych wokół z moich maszyn wirtualnych.

Trzymaj jesteś konie tam! Co jeśli moje źródła danych są ogromne? Cóż to jest naprawdę sprawa ile dane mówimy? To może być bardziej opłacalne zainstalować dodatkowy większy dysk twardy do każdej maszyny niż na zakup dodatkowego serwera przetwarzania. To jest kwestia budżetu i do biznesu do podejmowania decyzji. To może, że Twoje źródła danych są tak duże, że jej po prostu niemożliwe, aby utrzymać tę ilość danych w swoich maszynach roboczych. W takim przypadku co byś zrobił? Cóż możemy spojrzeć na wywołanie lokalnego serwera danych, ale może to powodować problemy z siecią. W tym przypadku system sieci, takich jak ten może stać się nierealny umieścić w swoim środowisku biurowym. Może też być, że można zajrzeć do alternatywnych strategii eksploatacji, na przykład tylko nazywając swoich pracowników pomiędzy 8pm i 6 rano każdej nocy i / lub stłumienie żądania danych źródłowych.

Idąc dalej powiedzmy, że nasze dane ilość źródeł do 100GB danych. No tak to jest całkiem sporo danych do poruszania się w sieci na aktualizacji. W jaki sposób możemy zapewnić, że mamy najnowszą kopię danych w tym przypadku? Rsync jest możliwość, ale osobiście uważam, uruchamiając ostatni źródło danych na serwerze realizacja zadań i konfigurowania tej funkcji jako mistrza w replikacji (z ładnym dzienniku długi bin) może być droga:

replikacji Poprzez ustawienie każdego z pracowników się jako niewolnik do aktualizacji kontroli pracy serwera do źródeł danych będzie ładnie spływa do Twoich pracowników bez znacznego wzrostu aktywności sieciowej (to jest chyba wykonać duże uaktualnienie danych i wszystkich pracowników w kick na raz). To ma przewagę nad rsync w, że nie dostanie długą pauzę przed każdym zadaniem, jako aktualizacji baz danych, mysql demon na pracownika będzie stale aktualizować swoje dane podczas przetwarzania trwa.

W ten sposób mogę skonfigurować mojego serwera demonstracyjnego. Aby skonfigurować replikację I przestrzegać instrukcji na stronie MySQL ( Konfigurowanie replikacji ) oraz w ciągu 20 minut miałem inital pracownika replikować serwerów pracy sterowania zestawu danych. Dla każdego dodatkowego pracownika ustawienia replikacji i proces pracował za każdym razem kiedy VM został skopiowany.

Streszczenie

W tej części artykułu przyjrzeliśmy się, jak łatwo i bezboleśnie to, aby utrzymać swój kod przetwarzania na bieżąco przez using rsync lub subverion (SVN) do pracy i zmniejszyć ruch w sieci w tym samym time. Dyskutowaliśmy również jak zachować źródła danych informacji up-to-date, pozwalając mu spływa do każdego z pracowników. Tak więc obszar zapewnienie, że możemy nadążyć z logiki biznesowej i informacji w naszym systemie sieci biurowej. Nie będzie oczywiście niezliczone alternatywy do wykonywania tych zadań, ale tu były dwa proste przykłady pokazują, jak proste rozwiązanie jest do zdobycia.

Następnym razem

W końcowej części tej serii, trafnie nazwany Część 5 , omówimy wdrażania tego systemu. Ja podsumować to, czego się nauczyliśmy i co udało mi się stworzyć.

Grid Computing Biuro pomocą wirtualnych środowisk - część 3

Przez , w piątek 04 grudnia 2009 11:37 pm

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadania wsadowe przetwarzanie milionów rekordów danych każdego dnia i myślałam ostatnio o tych wszystkich maszyn, które usiąść każdy dzień nic nie robić przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn, aby wzmocnić moc obliczeniową naszych systemów? W tym zbiorze artykułów będę patrzeć na potencjalnych korzyści płynących z zatrudniania Office siatkę używając zwirtualizowanych środowiskach.

W części 2 przyjrzeliśmy się pracy serwera będą działać i jak prace powinny być skonfigurowane w celu osiągnięcia największą ilość przetwarzania przy jednoczesnym zapewnieniu, że każde zadanie jest przetwarzane bez przerwy.

Konfigurowanie pracownika - czy Limp serwer

Kolejnym krokiem w procesie jest utworzenie wirtualnych pracowników. Do tego mam zamiar korzystać z instalacji CentOS przy VirtualBox. Mam zamiar zainstalować mySQL i PHP na serwerze, znany również jako Limp ust Nux Li, m ySQL, P KM) Servera ust może zrobiłem, że nazwa góry).

  • Zainstaluj VirtualBox na komputerze Windows (wykonaj link)
  • Pobierz i zainstaluj CentOS (aktualna wersja 5.3) w ramach utworzonej maszyny wirtualnej

Nie ma sensu mnie będzie to tam prawdopodobnie 1000 's wielkich tutoriali tam (ok, tu jest jedna: Tworzenie i Managing CentOS maszyny wirtualnej pod VirtualBox ). Ważną kwestią zasługującą na uwagę jest to, że sądzę Nazwałem mój maszyna wirtualna GridMachine.

Jeśli chodzi o moje wybory klienta wirtualizacji i systemu operacyjnego tam ma duży istotnych powodów, dla każdego wyboru. VirtualBox jest coś używam na moim domowym komputerze i jest wspierany przez trzech głównych systemach operacyjnych. Wybrałem CentOS jak jego dobry OS stabilnej i używam go na własnym serwerze WWW. Jestem wielkim zwolennikiem odpowiednich narzędzi do pracy (chociaż jestem stosowania "używać najszybszy i najprostszy dla Ciebie" mentalności tutaj), więc jeśli system operacyjny X działa kod szybciej i bardziej efektywnie używać, że zamiast :)

Co ważne upewnić się, że VM wykorzystuje DHCP, inaczej dla każdej nowej maszynie wirtualnej musiałaby być konfigurowane oddzielnie, która jest coś, czego nie want.By przy użyciu DHCP nie musimy skonfigurować ustawienia sieciowe indywidualnie dla maszyn roboczych, DHCP przekaże na IP dla Ciebie. Dlatego można skopiować maszynę wirtualną o biurze nie martwiąc się o ustawienia każdego z nich do góry (to poprawia skalowalność i redukuje administrację pracowników).

Proces należy dążyć do osiągnięcia byłoby uzyskać nowy fizyczną maszynę, zainstalować VirtualBox, a następnie dość dużo wdrożyć wirtualny obraz bez wielu innych rzeczy. To może być mądry, aby ustawić wszystkich pracowników w innej podsieci, tak aby można przynajmniej zobaczyć ile maszyny są uruchomione. Będziesz także musiał ustawić swoje maszyny na długiej dzierżawy lub nieograniczonego dzierżawy DHCP.

Jak uruchomić zadania na pracownika

Jest to ciekawy obszar i istnieje kilka ważnych metod przetwarzania zadania na pracownika. Tu po prostu przedyskutować dwie najbardziej oczywiste:

  • Wiecznie działa skrypt: Skrypt, czy to skrypt powłoki lub skryptu PHP jest wykonywany raz na pracownika i działa w ramach nieskończonej pętli. Mam dyskontuje tę metodę jako jedną katastrofie skryptu i potencjalnie Twoi pracownicy przestaną działać bez jakiejś interwencji.
  • Cron bazie wykonanie skryptu: co X minut demon Cron rozpoczyna wywołanie skryptu, aby uzyskać rzeczy się dzieje. Bez pewnej kontroli może to prowadzić do wielu, wielu egzemplarzy swojego biegu skryptu pracowników.

Moja decyzja była iść z crona który rozpoczyna skrypt powłoki co 10 minutes. Mój skrypt wykonuje następujące zadania:

  1. Pobierz listę procesów i grep to dla 'php'. Jeśli nie znaleziono potem kontynuować.
  2. Zadzwoń do kodu nowych miejsc pracy, w moim przypadku byłoby to coś na PHP
  3. Skrypt pracownik kończy swój bieg
  4. Gotowy do pracy ponownie na następnej rozmowy odpowiednim

Mój skrypt bash wygląda mniej więcej tak:

  #! / Bin / sh
 jeśli ps ax | grep-v grep | grep php> / dev / null
 następnie
     echo "Praca jest aktualnie przetwarzaniu, zjazd"
 więcej
     echo "Praca nie jest uruchomiony, uruchom teraz"
     php yourJobProcessingScript.php
 fi 

Uwaga: echo-tych są niemal zupełnie bezcelowe, ale może pomóc kolejna osoba, która przychodzi wraz spróbować i edytować je.

Że kończy zestaw do pracownika maszynie wirtualnej, szybkie, proste i łatwe do kopiowania do każdego nowego kawałka sprzętu, który jest odbierany. "Inteligencji" systemu sieci naprawdę nie jest w wizualizowanym OS, to wszystko zrobić za pomocą kodu stworzonego do pracy procesu, konfiguracja pracy oraz w upewnieniu się, że praca przebiega w razie potrzeby (np. gdy komputer jest bezczynny ).

Konfigurowanie systemu Windows do zainicjowania Pracowników

Pierwszym zadaniem jest wypracowanie polecenia wymaganego do uruchomienia wirtualnej maszyny z poziomu wiersza poleceń systemu Windows. Jeśli zainstalowałeś VirtualBox w domyślnej lokalizacji i masz nazwę swojego pracownika GridMachine następnie polecenie musi doładować pracownika jest:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Jednak, aby uruchomić skrypt w 'bezgłowego' stanie musimy użyć:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - vrdp = off 

Spowoduje to uruchomienie maszyny wirtualnej bez GUI i pozwolić, aby zapisać stan wdziękiem. Drugi argument wyłącza RDP więc nie jest to sprzeczne z Windows RDP, albo daje komunikat o nasłuchuje na porcie 3389. Nazwa wirtualna maszyna jest wielkość liter!

Następnie musimy ustawić okna do inauguracją naszej VM pracownikiem, gdy maszyna była w stanie bezczynności. Aby to zrobić (na systemie Windows XP) musisz iść Start -> Wszystkie Programy -> Akcesoria -> Narzędzia systemowe -> Zaplanowane zadania jak poniżej:

zaplanowane zadania

Następnie kliknij na 'Dodaj zaplanowane zadanie ", a następnie przejdź do dodać własny program. Przejdź do skryptu VBoxManage i kliknij OK. Zaplanuj zadanie dla którejkolwiek z opcji (my to zmienić w ciągu minuty) i kontynuować. Po pominięciem następnego ekranu Windows zapyta Cię, który chcesz uruchomić to zadanie, którą proponujemy opcję 'administrator' lub utworzenie nowego uprzywilejowanego użytkownika. Pamiętaj, że nie chcemy ingerować w standardowej uwagę personelu na komputerze w dowolnym momencie. Kliknij przycisk Dalej i zaznacz opcję Pokaż zaawansowane opcje do tego zadania.

Do końca polu tekstowym uruchomić Dodaj nasz tekst 'startvm GridMachine' i zapewnić, że bieg po zalogowaniu na konto pozostaje odznaczylem. Odwiedź zadanie harmonogramu następny i zmieniać harmonogram spadać w dół do opcji 'gdy bezczynny ", wybrać ilość czasu, który chcesz, aby komputer był bezczynny przed przejściem do następnej karty.

W końcu odznacz opcję, która stwierdza zatrzymać zadanie, jeżeli została uruchomiona kwota X czasu, ale nie zaznaczyć opcję Zatrzymaj zadanie jeśli maszyna nie jest bezczynny.

harmonogram

To on następnie do instalacji systemu Windows gospodarza!

Streszczenie

W tej części mamy stworzyć maszynę wirtualną do działania jako pracownik, a także sposób, w jaki nazywamy i wykonywać nasze skrypty przetwarzanie zadań (dla siebie skrypt PHP). Stamtąd patrzymy jak skonfigurować nasze kopie systemu Windows, aby uruchomić maszynę wirtualną w trybie bez głowy, gdy komputer staje się bezczynnie i zapisać swój stan, gdy użytkownik wznawia korzystanie z maszyny. Mam nadzieję, że w tym momencie widzisz jak łatwo jest założyć taki system i rwą się pewne eksperymenty dzieje się!

Następnym razem

W części 4 zajmiemy się korzystać z narzędzi, aby zapewnić, że korzystasz z najnowszej wersji kodu i danych źródeł tak, aby uzyskane wyniki są zawsze na bieżąco z najnowszych informacji biznesowych i logiki.

Grid Computing Biuro pomocą wirtualnych środowisk - Część 1

Przez , w piątek 04 grudnia 2009 11:23 pm

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadania wsadowe przetwarzanie milionów rekordów danych każdego dnia i myślałam ostatnio o tych wszystkich maszyn, które usiąść każdy dzień nic nie robić przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn, aby wzmocnić moc obliczeniową naszych systemów? W tym zbiorze artykułów będę patrzeć na potencjalnych korzyści płynących z zatrudniania Office siatkę używając zwirtualizowanych środowiskach.

W PHP programista mam zamiar wykorzystać narzędzia, które używam codziennie a mianowicie, Linux, MySQL , PHP, VirtualBox i Subversion (SVN). Jednak mam nadzieję, że ta książka będzie dostosować się do innych języków i technologii równie dobrze.

Rozwiązanie I dostarczyć będzie bardzo luźno oparty na typie przetwarzania musielibyśmy osiągnąć jednak może to nie być prawdą cały artykuł jak będę zmieniać rzeczy dla uproszczenia, lub do produkcji bardziej interesujące scenariusze użycia.

Te zwirtualizowane środowisko będzie działać na komputerach z systemem Windows, ponieważ jest to co większość biur uruchomić. Przetwarzanie, że maszyny biurowe nie powinny kolidować z pracownikami za pomocą tych urządzeń, należy nie wymagają konserwacji na maszynie, i być łatwo rozmieszczenia nowych urządzeń stają się one dostępne. Ponadto, nowe maszyny wirtualne nie wymaga żadnej dodatkowej konfiguracji, ponieważ znacznie zmniejsza skalowalność i łatwość w którym system sieci może zostać przedłużona.

Dlaczego Wdrażanie Grid Computing Office?

Po pierwsze można myśleć, dlaczego nie wystarczy użyć zasobu cloud computing, takie jak platformy Amazon EC2 ? Otóż ​​powodów może być kilka, na przykład:

  • Nie będzie powierzać pewnych danych do środowiska cloud computing
  • Nie można umieścić pewne dane w środowisku cloud computing z powodów prawnych (np. dane opuszczania kraju), potencjalnie ze względów prawnych, np. ewidencji NHS.
  • Chcesz zachować swoje jednostki przetwarzania zamknąć i mieć pełną kontrolę nad sprzętem za
  • Nie masz funduszy projektu w celu uruchamiania wystąpień chmur
  • Twoje biuro nie ma połączenia z internetem i dlatego jej nie można skorzystać z zasobu cloud
  • Nie lubisz deszcz, chmury sugerują deszcz, więc można trzymać z dala

Jestem pewien, że lista może być kontynuowany, ale myślę, że wystarczy na teraz.

Korzyści z Grid Computing Urzędu

Dobrze, zróbmy kilka matematyki (w prawdziwym stylu fizyki pozwala wprowadzić kilka radykalnych założeń). Wyobraź sobie, że duży Beefy serwer przetwarzania działa 100 miejsc pracy dziennie. W biurze masz 50 maszyny, które są bezczynne 16 godziny na dobę, każdy z tych maszyn wynosi 10% tak potężny jako Beefy sever przetwarzania. (Wszystkie wyniki są tu zaokrąglona do niedoceniania wzrost wydajności).

Tak więc 1 maszyna * 10% mocy * 2/3 = czas 0,067 tj. 1 przetwarzanie pulpit w bezczynności może przetwarzać 6 pełnych zadań na dzień.

Jeśli teraz skalować ten fakt trwa 15 bezczynnych komputerów do przetwarzania, jak wiele miejsc pracy dziennie jako główny serwer przetwarzania robi.

Tak więc w naszym biurze udawać 50 maszyn możemy zwiększyć naszą moc obliczeniową od 1 serwer do 4 pełnych serwerach przetwarzania, lub moglibyśmy przetwarzać 400 miejsc pracy dziennie zamiast 100.

Zauważmy, że bez inwestycji w nowy sprzęt Twoja firma tylko zwiększył swoją zdolność przetwarzania wsadowego 4 razy! Potencjalnie masz zamiar zwiększyć swoje zużycie energii, ale z większości środowisk biurowych byłem do maszyn są zazwyczaj pozostawiony na noc, tak więc można było zobaczyć to jako zielone inicjatywy.

Inne zalety również oznaczać, że inwestycje w nowych (lub aktualizacji) serwery przetwarzania może zostać opóźnione w przypadku maszyny biurowe są wystarczające i że jak poprawić moc swoich maszyn biurowych twoja siatka biuro staje się potężniejsza automatycznie.

Technologie

Co jest potrzebne? (Lub bardziej poprawnie, co nie używam):

  • Idle maszyny biurowe (w moim przypadku zapasowe starych okien laptop XP)
  • VirtualBox (lub innego oprogramowania klienckiego wirtualizacja)
  • Maszyna wirtualna z PHP, MySQL running prowadzenie wyciąć OS, dzwonię tych moich Limp serwerom :)
  • Praca do uruchomienia
  • Serwer Job (może być inna maszyna wirtualna gdzieś)

Typowe Praca

Rodzaje prac, które ten system jest przeznaczony do uruchamiania jest następująca:

  • System otrzymuje dane w postaci listy, na której musimy dopasować i zwracania wyników
  • Dopasowanie polega na sprawdzeniu / przeszukiwanie kilka (dość statyczny) źródeł danych
  • Wyniki źródeł danych mogą wymagać dalszej oceny, scalanie, sprawdzenie dodatkowych źródeł danych, w odpowiedzi na wyniki
  • Dane są zwracane z rekordów pasujących, w pełni potwierdzone i przetwarzane
  • Każdy rekord w pracy jest niezależny od pozostałych

Więc w zasadzie patrzymy uruchomionych zadań, które wymagają mieszankę podglądy baz danych, a niektóre rozgryzanie numer, dość typowy scenariusz w środowisku biznesowym.

Rozwiązania siatki są nie tylko korzystne przetwarzanie zadań tego typu. Zasadniczo, każdy proces, który może być podzielony na niezależne jednostki mogą być prowadzone równolegle. Zobacz ten Wikipedię przykłady i więcej informacji: Grid Computing , ale kilka znanych przykładów są Seti @ Home i BIONC . Istnieją ramy dla prowadzenia siatek obliczeniowych, a to dobrze warto przyjrzeć się.

Co chcemy osiągnąć?

Pod koniec tych artykułów mam nadzieję pokazać, że rozmieszczania sieci biurowej nie musi być niezwykle kosztowne lub czasochłonne. Mam zamiar omówić:

  • Utworzenie systemu kontroli pracy, konfiguracja pracy
  • Tworzenie odpowiedniego przetwarzania wirtualnej maszyny
  • Jak skonfigurować system na komputerze z systemem Windows
  • Zapewnienie używasz najnowszy kod i dane
  • Wdrożenie i benchmarking
  • Patrząc w przyszłość

Będę budynku (ok I zbudował, a potem to napisałem) przykładowa aplikacja do testowania koncepcji na lokalnym komputerze z systemem Windows XP i moje "GridMachine wirtualna maszyna. Mój serwer kontrola zadaniem będzie moim głównym maszyna, która biegnie Fedory 11 .

To jest w żaden sposób nie ma na celu wykazać w pełni funkcjonalny solidnego systemu, jego myśli bardziej demonstracji i dyskusji pokazuje, że te rzeczy mogą być osiągnięte w rozsądnie krótkim czasie i niewielkim kosztem. Prosimy o przesłanie mi jakieś komentarze, poprawki lub ulepszeń, a ja staram się zachować ten artykuł zaktualizowane do dopasowania.

Następnym razem

W części 2 Zacznę od spojrzenia na system kontroli pracy, i zbadać, jak prace powinny być skonfigurowane w celu osiągnięcia największą ilość przetwarzania przy jednoczesnym zapewnieniu, że każde zadanie jest przetwarzane bez przerwy.

Grid Computing Biuro pomocą wirtualnych środowisk - Część 2

Przez , w piątek 04 grudnia 2009 11:23 pm

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadania wsadowe przetwarzanie milionów rekordów danych każdego dnia i myślałam ostatnio o tych wszystkich maszyn, które usiąść każdy dzień nic nie robić przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn, aby wzmocnić moc obliczeniową naszych systemów? W tym zbiorze artykułów będę patrzeć na potencjalnych korzyści płynących z zatrudniania Office siatkę używając zwirtualizowanych środowiskach.

W części 1 Dałem przegląd systemu i technologii będę używał, a także omówiono niektóre z potencjalnych przyczyn dlaczego chcesz stworzyć siatkę biurowej.

Kontrola pracy

Jeśli masz zamiar być uruchomione zadania wtedy będziemy potrzebować jakiś sposób nimi zarządzać. System kontroli zadań (na serwerze w pracy) musi być bardzo dobrze przemyślany jeszcze przed przystąpieniem do uruchomienia sieci biurowej. Więc po pierwsze, jakie są zadania dla systemu sterowania pracy:

  • Rozdać zadania na wniosek pracowników
  • Powiedz pracownikom, jaki rodzaj pracy, aby uruchomić
  • Śledzenie pracy
  • Upewnij się, że zadania są uruchamiane tylko raz
  • Dostarczenie danych do pracy pracowników, a przynajmniej im powiedzieć gdzie je zdobyć

System również musi być rozszerzalny, rozwiązanie, które działa na razie w jednym przypadku może być przedłużony, aby uruchomić kilka typów zadań, jak biznesu widzi wartość w roztworze siatki. Na przykład, praca może zyskać priorytety, więcej niż jeden rodzaj pracy może istnieć (tzn. kilka baz kodu), w końcu możesz nawet uruchomić kilka różnych maszyn roboczych, które są zoptymalizowane dla każdego rodzaju pracy (mimo że ma odejść od "pracownik ogólnej "pomysł). Zawsze staram się myśleć o przyszłości przy opracowywaniu systemów, krótki wzrok termin może prowadzić do długoterminowej frustracji i wydłużenia czasu rozwoju.

Serwer Job

Będziemy potrzebować gdzieś kontrolować nasze zadania z, powinno to być jedynym systemem w sieci, że ma stałą Resource Locator, czy to adres IP, nazwa hosta, URL (z wykorzystaniem wewnętrznych DNS), itd. To dlatego, że pracownicy muszą wiedzieć, gdzie szukać pracy, pracownicy powinni znaleźć system kontroli pracy (a nie system kontroli pracy znaleźć pracowników).

Serwer praca sam tak naprawdę nie ma skomplikowanego zadania (w systemie podstawowym przeczą), musi przechowywać listę zadań, rozdać pracy, otrzymać wyniki, a następnie zapisać je do późniejszego wykorzystania. Jak te elementy (takie jak "rozdawać pracy") są definiowane mogą być bardzo prosty. Później możemy rozszerzyć system zawiera interfejs administracyjny, aby dodać, edytować, usunąć, zawiesić pracę, ale jest to poza tym ćwiczeniu.

Nie ma żadnego powodu, następnie, że twój serwer praca nie może być maszyna wirtualna działa w swoim głównym serwerze przetwarzania pod warunkiem, że nie spływa zbyt wiele zasobów z niego. Serwer praca jednak nie potrzebuje wysokiej dostępności, jeśli spadnie na piątkowy wieczór, który zamierzasz stracić cały weekend przetwarzania, potencjalnie kosztującej kilka tygodni warto czasu przetwarzania (w porównaniu do głównego serwera przetwarzania Alone) . Może warto rozważyć wprowadzenie serwer pracy na obciążenia środowiska zrównoważony w zakresie wysokiej dostępności.

Konfiguracja podstawowa

Podstawowe ustawienia dla naszego serwera miejsc pracy będzie składać się z co Wołam jednego z moich Limp serwerów (czyli Nux Li, m ySql, P KM). Kod działa na pracowników Thea będzie rzeczywiście wypracowanie praca, można go uruchomić poprzez interakcję z bazami danych kontroli pracy systemu. Później moglibyśmy stworzyć serwis internetowy i faktycznie rękę pracy zamiast pracowników do ciężkiej pracy sami, ale teraz będziemy kontynuować korzystanie z zasady KISS (Keep it simple, stupid!).

Tak więc, pozwala utworzyć trzy MySQL tabele do czynienia z pracy. Będą to `prace`, `jobRecords` i `jobResults`.

Praca stół Tutaj używam SQL Buddy bardzo mały alternatywę dla phpMyAdmina tylko dlatego, że jej łatwiej zainstalować na CentOS (za inni widzą: 10 świetne alternatywy dla phpMyAdmin )

Tabela ta składa się z 5 prostych pól,

  • ID: jednoznacznej identyfikacji pracę
  • imię: Może być referencyjny klienta, lub dowolną liczbę innych identyfikatorów
  • Status: Musisz wiedzieć, gdzie praca jest, np.
    • 0: Nie rozpoczął
    • 1: Zabierani
    • 2: Completed
  • started_by: Kto zaczął robić tę pracę? To nie jest zupełnie potrzebne, ale miło mieć. Sugerowałbym pracowników śledzenia na podstawie adresów IP w sieci
  • started_at: Kiedy pracownik rozpocząć pracę? Poprzez śledzenie pracy, które nie zostały zrealizowane w kwocie X czasu wiemy, że trzeba odebrać pracę ponownie i rozpocząć przetwarzanie przez innego pracownika. Pracownicy mogą zatrzymać przetwarzanie / go niedostępny dla wielu powodów, awarii zasilania, crash, strat sieciowych itp.

Jest łatwy w jaki sposób ta tabela może zostać rozszerzona za pomocą kilku pól dodatkowych dla pozwalają na śledzenie statystyk, kolumny czas wykończenie, aby zobaczyć, jak długo praca miała, licznik, aby zobaczyć ile pracownicy podniósł pracę (oczywiście musi to mają tendencję do 1) pierwszeństwo pracy, lista może się ciągnąć w nieskończoność. W bardziej złożonych scenariuszy pracy byłoby możliwe, aby określić, ile pamięci pracownik powinien mieć dostęp do (a więc używać tylko odpowiednich pracowników), a nawet jaki typ pracownika byłaby konieczna.

Dodajmy kilka przykładowych zadań:

Praca przykład

Kolejna tabela znowu jest dość proste do zrozumienia, to nasze rekordy pracy. Są one związane z głównej tabeli praca przez kolumnę `` jobs_id. Tworzą z tej tabeli, bardzo dużo zależy od danych, które trzeba dostarczyć do swoich pracowników, pozwala zrobić bardzo prosty przykład, gdzie mamy cztery kolumny:

  • id: id rekordu
  • imię: nazwisko osoby
  • Adres: Osoba adres
  • jobs_id: ID zadania, że ten rekord jest powiązany

Trzecia i ostatnia tabela składa się z tabeli wyników, ma tak samo tworzą jako naszej tabeli rekordów, oraz z dodatkiem niektórych kolumn może być częścią tabeli rekordów:

  • job_record_id: Link wynik do tabeli zadań
  • Wynik: Dane wynik

... I to wszystko, czego potrzebujesz do kontroli pracy! (Choć na bardzo podstawowym poziomie) W moim przypadku jestem zwrócił się do innego stolika, gdzie moje dane do procesu znajdowała, ale może to równie dobrze być plik, parametry do uruchomienia kodu symulacji, you name it.

Wybór pracy

Jak stwierdzono wcześniej, pracownicy zrobią nasze zarządzanie zadaniami dla nas teraz, więc wszyscy musimy naprawdę jest znaleźć pracę, która wymaga przetwarzania i uzyskać informacje. W jaki sposób możemy to zrobić? Cóż odebrać nasze kryteria wyboru pracy i szukać pracy, w SQL Zrobiłem, co następuje:

  1. Podjąć wszelkie zadania, które nie są oznaczone jako kompletne, ale z naszego pracownika i przywrócić je (zastąpić ME__ __ z identyfikatorem, najłatwiej byłoby adres IP):
      Update `prace` SET `status` = 0 WHERE `status` = 1 AND `started_by` = __ ME__; 
  2. Korzystanie z naszych kryteriów wyboru pracy, wybrać zadanie i powiedzieć systemowi sterowania, który to pracownik ma do czynienia z nim:
      Update `prace` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () WHERE `status` = 0 OR
     (`Status` = 1 AND `started_at`> DATE_SUB (NOW (), INTERVAL HOUR X)) ORDER BY `id` ASC; 

    Chwytając pracy, które nie zostały zwrócone wyniki w kwocie X czasu mamy pewność, że wszystkie zadania są uruchamiane w przypadku pracownika upaść lub będzie zagubiony.

  3. Następnie chwycić zadania szczegóły stosowane przez samych rejestrów:
      SELECT * FROM `pracy` WHERE `started_by` = __ ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __ JOBID__; 

Po zakończeniu pracy możemy włożyć nasze rekordy wynikowe i oznaczyć zadanie jako zakończone. Pamiętam, jak praca może wstrzymać / wznowić w dowolnym czasie umożliwić pewną wytrzymałość w skrypcie. Być może zadanie zawiesza w połowie aktualizacji systemu kontroli pracy, więc sprawdzenie liczby rekordów w pracy i liczby zapisanych wyników z powrotem do systemu sterowania pracy byłoby mądre posunięcie.

Ponadto, choć to pokazuje, jak zadania mogą być wybierane i zarządzane z SQL-ramkę zapytania powinno się naprawdę prenumerujących swoją kontrolę zadań tak, że jeśli zdecydujesz się przejść do korzystania z usługi internetowej, plik based system, XML lub dowolny inny Wiele systemów nie wpłynie to kod znajdujący się powyżej niej.

Konfiguracja pracy

Kolejny aspekt do rozważenia jest to wielkość pracy i konfiguracji. Grając z konfiguracją pracy możemy uderzać doskonałą równowagę pomiędzy szybkością i procesu replikacji i niezawodności. Poświęć scenariusze ofa parę:

  1. Praca wziąć jeden dzień każdy uruchomić: Oznacza to, że Twoi pracownicy potrzebują 15 dni na przetwarzanie każde zadanie (pamiętaj 10% mocy na 2/3rds w czasie). Nie jest to oczywiście mądry konfiguracja, rozmiar praca jest zbyt duży! Zajmie to co najmniej dwukrotnie czas, aby dostać pracę przetwarzane powinny początkowy pracownik iść AWOL (czas podnieść, że nie wrócił wynik plus czas powtórnego przetworzenia). W idealnym chcesz mieć co najmniej jeden pełny pracę łatwo wyczyszczone do końca każdego długim okresie bezczynności, w ten sposób zachować miejsca pracy ponad dolną, aw najgorszym przypadku praca zajmie dwa dni do procesu powinien najpierw przejść brakuje.
  2. Praca trwa od 1 minuty do uruchomienia: Oznacza to, że Twoi pracownicy zająć około 15 minut, aby uruchomić każdą pracę. O ile może to początkowo wydawać idealne, można uzyskać dodatkowe przetwarzanie pracę w porze lunchu, przerwy kawowe, spotkania, itp. ten scenariusz obciąża innych obszarów systemu i wprowadza swoje własne problemy. Na przykład, po pierwsze twoje ustawienia / przetwarzanie stosunek czasu jest zamiar iść w prawo w dół, więc utraty wydajności systemu. Twoja sieć będzie stale strumieniowe informacje praca na różnych pracowników frustrujące pracowników, którzy są dong ich codziennej pracy. Ty również zamiar położyć większy wysiłek na serwerze przetwarzania pracy, ponieważ musi rozdać wiele, wiele małych kawałków pracy na bieżąco. Wreszcie, w tej sytuacji, jeśli twój serwer praca idzie w dół masz zamiar stworzyć ogromne dziennik powrotnym niedokończoną pracę podczas większych zadań można ciągłego przetwarzania błogiej nieświadomości, że serwer praca doświadczał trudności.

W rzeczywistości nie będzie jedna idealna konfiguracja do konfiguracji sieci, wiele zależy od dostępnych środków, rodzajów pracy, wymagań postoju etat, zdolności sieci, i tak dalej. Jednakże pewne wytyczne to:

  • Praca rozmiar tak, aby każdy pracownik może przejść przez co najmniej 3-4 miejsc pracy w okresie 15 godzin (najdłuższy prawdopodobnie bezczynny okres)
  • Zagraj z wielkością zatrudnienia, tak aby czas instalacji staje się dość nieznaczny w porównaniu do czasu przetwarzania (biorąc pod uwagę punkt powyżej).
  • Jeśli praca nie została zakończona w podwójnej ilości czasu (może mniej) można oczekiwać, że aby zakończyć to zakładamy, że jego zniknął i rozpocząć przetwarzanie go innym pracownikiem. Oznacza to, że być może trzeba będzie poczekać aż do trzykrotnej normalnej długości pracy na jego zakończenie (ewentualnie dłużej, jeśli kolejne zadanie nie powiedzie). Możesz skrócić ten czas, ale uważaj, aby nie zmniejszyć go zbyt dużo, jak możesz zacząć powielać zadań przetwarzania na bieżąco.
  • Praca powinna być niezależna od zewnętrznych wymagań jak najwięcej. Serwer praca, na przykład, powinien się skontaktować na początku i na końcu każdego zadania.
  • Nie nasycić sieć, to będzie miał dwa negatywne skutki, twój dzień pracownicy znajdą pomocą sieci frustrujące i problemy mogą być doświadczane z połączenia limit czasu problem, który będzie jeszcze gorzej jak skalowanie siatkę.
  • Zapewnienie miejsc pracy można uruchamiać na swoich pracowników. Jeśli prace stają się zbyt intensywne pamięci lub miejsca na dysku intensywnie zacznie przerywać i jedyną rzeczą, można zauważyć, jest spadek liczby miejsc pracy przetworzonych bez rzeczywistego powodu.

Składanie wyniki Hioba

Składając wyniki pracy ważne jest, aby sprawdzić, czy wyniki nie zostały przedstawione przez innego pracownika, zwłaszcza jeśli aktualny pracownik został uśpiony na jakiś czas.

Kiedy wyniki są przekazywane zapewnić, że liczba wyników odpowiada liczbie rekordów w pracy.

Jak stwierdzono wcześniej, i nie można przecenić, budować tolerancję błędu do wyszukiwania miejsc pracy i przedłożenia wyników. Pracownicy mogą (i najprawdopodobniej będzie) przejść do trybu wstrzymania w najbardziej niewygodne razy i to musi być coś dla siebie. Również po raz kolejny abstrahując od Twoje zgłoszenie wyniki pomoże zaspokoić przyszłe zmiany w systemie sterowania praca jest łatwiejsza do czynienia.

Streszczenie

W tym section przyjrzeliśmy się co serwer sterujący praca musi zrobić i jak się bardzo prosty system ustanowiony. Rozmawialiśmy jak pobrać zadania z systemem sterowania i jak najlepiej skonfigurować zadania, aby uzyskać większość naszych Twojego systemu sieci biurowej. Aby zakończyć, akapit lub dwa na złożenie wyniki z powrotem do serwera kontroli pracy został przedstawiony.

  • Serwer sterujący praca zarządza miejsc pracy i zapewnia, że ​​wszystkie jednostki organizacyjne zostały zakończone
  • Przez abstrahowanie pracę wybór / Wyniki złożenie możemy zmienić technologię na serwerze kontrolnym bez większych problemów
  • Skonfiguruj pracy, aby zapewnić, że są one uruchomić szybko i sprawnie bez zbytniego nacisku na infrastrukturę sieci i bez powielania zadań przetwarzania na bieżąco.
  • Upewnij się, że budować odporność na uszkodzenia i checking błędzie do swoich procedur, pracownicy mogą zawiesić i wznowić i najbardziej niewygodne razy. Pamiętaj, aby sprawdzić, czy wyniki zostały już przedstawione przez innego pracownika.

Następnym razem

W części 3 stworzymy naszą maszynę wirtualną przetwarzania i skonfigurować nasze komputery Windows będą stać bezczynnie wymiarze godzin.

Grid Computing Biuro pomocą wirtualnych środowisk - Część 5

Przez , w piątek 04 grudnia 2009 11:03 pm

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadania wsadowe przetwarzanie milionów rekordów danych każdego dnia i myślałam ostatnio o tych wszystkich maszyn, które usiąść każdy dzień nic nie robić przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn, aby wzmocnić moc obliczeniową naszych systemów? W tym zbiorze artykułów będę patrzeć na potencjalnych korzyści płynących z zatrudniania Office siatkę używając zwirtualizowanych środowiskach.

W części 4 przyjrzeliśmy się przy użyciu narzędzi, aby zapewnić, że korzystasz z najnowszej wersji kodu i danych źródeł tak, aby uzyskane wyniki są zawsze na bieżąco z najnowszych informacji biznesowych i logiki.

Pre-Deployment

Przed wdrożeniem systemu do sieci, czy jest jedna rzecz, którą robisz i jedno tylko jest to punkt odniesienia aktualnego systemu! Nie ważne co mówisz kolegom o tym, jak wiele dodatkowej pracy twój system nie zrobi, chyba że masz numery do tyłu to zapasowe gwarancji nie są niczym. Tak więc,

  • ile rekordów można przetwarzać obecnie? Dziennie? Za Godzinę?
  • Jak długo zazwyczaj trwa zawrócić pracę?
  • Ile więcej możliwości masz?

Jest też dodatkowe pytania:

  • Jeśli serwer przetwarzania (lub jeden z serwerów przetwarzania) idzie w dół jak to wpłynie swoich możliwości, będziesz kaleką?
  • Jakie zalety ma Pan nadzieję / spodziewać się z systemu siatki?
  • Czy twoje maszyny biurowe zdolne do pracy z pracy?
  • Czy twój (można Praca konwersji) do wrok w tym stylu działa?

Ostatnim ważnym punktem jest wziąć swój czas na większych zmian jak ten. Zaktualizuj swój kod przetwarzania do pracy przy użyciu nowej metodologii, wzorzec ponownie. Być może skonfigurować serwer przetwarzania do uruchomienia wirtualnej maszyny, po wszystkich serwerze przetwarzania będzie tylko inny pracownik (tylko bardzo silny jeden stosunkowo). Pozwól nowy proces na osiedlenie się.

Wdrożenie

Moja sugestia będzie pop do biura jednego weekendu wykonać wszystkie instalacje i konfiguracji. Czy to tuż przed dwóch tygodni na wakacje i zostawić tak inny biedny facet do czynienia z konsekwencjami ... Może nie ...

Wdrażania systemu, jak to musi być wolny. Mimo to jest stosunkowo prosta do skonfigurowania tego systemu wpłynie na całą infrastrukturę biurową (dobrze cyfrowy jeden). Po pierwsze, rozwałkować na kilku komputerach jednocześnie, ruchu sieciowego monitora, jak gospodarze pracownika wykonywania na dzień-to-day podstawie. Może trzeba zmienić konfigurację miejsc pracy w odpowiedzi na swoich obserwacjach.

Gdy system osiadł z kilkoma komputerami (pozwala powiedzieć 10% wszystkich maszyn biurowych, tj. 5) utrzymanie ruchu sieciowego monitoringu i maszyny hosta performance. Następna benchmarku ponownie, powinieneś teraz być przetwarzania 33% więcej miejsc pracy niż pierwszych benchmarków. Sprawdź tak jest, lub że jesteś przynajmniej w tym ballpark. Jeśli nie, badać, co dzieje się przed przejściem. Powtarzaj ten cykl aż szczęśliwie nie wszystkie maszyny biurowe działa bez zabijania indywidualną wydajność maszyny lub szlifowanie sieci w martwym punkcie.

Przez cały czas trzymać benchmarking, nawet po wszystkich wdrożeń są wykonane. Sprawdź jak nowe aktualizacje kodu wpływa szybkość systemu, sprawdź wszyscy pracownicy donoszą i przetwarzanie zadań. Powoli (bardzo powoli) zwiększyć swoją konfigurację pracy, aby uzyskać najlepszą z twoich pracowników i sieć.

Stop!

Co zrobić, jeśli chcesz zatrzymać swoich pracowników od pracy na jakiś czas? Wszyscy są tam pracuje, regeneracji, i stara się jak najlepiej przetwarzać dane jak wygłodniałych owadów. Odpowiedź może wydawać oczywiste, ale warto dodać tylko w przypadku jej przeoczyć. Wystarczy wyedytować skrypt przetwarzania ze zjazdu (0) or die () lub inne oświadczenie zabić swoją pracę przetwarzania. Ważnym powodem, dla którego zawsze staramy się aktualizować do najnowszej skryptu przetwarzania przed każdym biegu!

Demonstracja systemu

W celu napisania tego zestawu krótkich artykułów stworzyłem bardzo małą siatkę do zademonstrowania technologii i metodologii. Czytałem wiele artykułów, tutoriali, i wykorzystywane różne narzędzia do konfiguracji i monitorowania co się dzieje. W żadnym wypadku ja wyszedł i nasycony cały biura z ruchu i ani nie miałem dostępu do zwykłego PC członków personelu, aby zobaczyć, jak wydajność gospodarz został dotknięty.

Mój system pokaz był bardzo skromny rzeczywiście. Kiedyś mój regularny pulpit skonfigurować jako serwer kontroli pracy. Na to miałem zainstalowane mySQL zainstalowanym serwerem ustawiona jako mistrza w replikacji, PHP , A i SVN połączone poprzez apache (aby uzyskać dostęp za pośrednictwem VM pracowników).

Potem stworzył maszynę pracowników CentOS na VirtualBox na 6 lat laptopie starego Windows XP. I ustawić zaplanowane zadania określone po skopiowaniu VM na komputerze i pozwolić jej odejść.

Maszyna wirtualna została powołana z PHP, Subversion i MySQL. Sprawdziłem na oddział o nazwie "pracownika" z moich serwerów pracy kontrolnej repozytorium i zadbali może być aktualizowane przy użyciu 'svn update'. Nastepnie konfiguracja mySQL jako niewolnik i sprawdzeniu, że dane były replikowane z MySQL na serwerze kontrolnym pracy aż do VM pracowników. Po tym wszystkim mam ustawić skrypt basha i crona.

Mój skrypt przetwarzania zasadzie poszedł wzdłuż linii o tym (bardzo proste rzeczy):

  • Czytaj w polu nazwy
  • Liczył podobnych nazwach w tabeli od źródła danych przechowywanych w VM
  • Liczył nazwami jak wyżej, ale podział nazwy odstępami (tj. imię, środkowy, nazwisko)
  • Powtarzające się ten proces 1000 razy

Każde zadanie trwało około 20 minut, aby uruchomić. W pewnym momencie otworzył kilka kopii VM pracowników na laptopie Windows i oglądałem miejsca pracy być zaznaczone przez każdego z adresów IP roboczych. W tym momencie ja również potwierdził, że replikacja automatycznie uruchomiony ponownie.

Pozostawienie laptopa na biegu jałowym zaowocowało pracownika wyjścia do przetwarzania zadań z serwera kontroli pracy. Po wznowieniu użytkowania laptopa nie było opóźnienie ok. 30-60 sekund, to sporo czasu i pracowników musiałaby być świadomi, że ich urządzenie może wstrzymać na chwilę, po powrocie do komputera. Nowsze maszyny nie mogą mieć przerwę tak długo. Przywilej ilości przetwarzania danych przeprowadzanych przez tych maszyn czasie przerw będzie bardziej że przeważają pracownikom konieczności oczekiwania krótkim okresie czasu (powiedzmy 1 minutę) po przybyciu na swoich maszynach o poranku (I często dłużej czekać, że to dla programu Windows Defender aktualizuje się odbyć) pod warunkiem, że zostały wykonane sobie z tego sprawę (przydatne czas złapać poranną kawę!).

Ogólnie czuję się przekonany, że wykazali się technologie, które mogłyby być użyte do stworzenia takiego systemu. Pokazałem, że taki system działa na (bardzo) małą skalę i jeszcze trochę eksperymentować mogą być skalowane do korzystania z zasobów danej Urzędu maszyn. Jeśli nie dostać się do punktu robi to byłbym bardzo zainteresowany, aby wiedzieć / widzieć czy ktoś inny.

Wnioski / oceny

Następnym oczywistym krokiem byłoby rzeczywiście dostać realne przykładem świata i zacząć wdrażać system taki jak ten w środowisku biurowym i zobaczyć co się dzieje. Zadawanie biznesu do zaangażowania się w to bez szlaku firmy płonącego udowodnić technologia i skuteczność może być trochę trudne. Siatka / rozproszone jest bardzo popularny jest pewne kręgi i ma kilka dużych aplikacji w BIONC, SETI @ home, Folding @ Home, itp.). Nie miałem jednak znaleźć mniejszą skalę i prosty system jak to w swoich poszukiwaniach, które mogą być wdrażany w środowisku biurowym.

I stworzył zasadzie wolnego systemu, używając głównie z oprogramowania open source oraz narzędzia dostępne w prawie każdym biurze. Technologie były w zasadzie wykazać i pokazać, aby wykonać i działa zgodnie z oczekiwaniami. Mam nadzieję, że muszę pokazać, że z pracą nie dużo i z bardzo prostej konfiguracji można wdrożyć do sieci biurowej system komputerowy, który jest mocny, tani, A i skalowalne w tym samym czasie.

Gdy system jest gotowy do pracy praktycznie nie ma końca do kwoty dostosowania i ulepszenia można dokonać. Dla statystyk np. / benchmarking może być łatwo dodana pokazujący wartość takiego systemu na co dzień. Nowe maszyny mogą być dodawane szybko i łatwo, jak i kiedy przyjechać z uaktualnieniami do istniejącego sprzętu wzmacniając swoją moc obliczeniową.

Mam nadzieję, że cieszył się czytanie tej serii artykułów i jej dał ci do myślenia na temat uruchamiania systemu siatki biurowej. Rozwiązanie przedstawione tutaj nie będzie działać w każdej sytuacji, ale powinno być elastyczne, aby umożliwić, aby uzyskać przetwarzanie danych zrobić za pomocą własnego rozwiązania.

Prosimy o przesłanie mi jakieś komentarze, poprawki lub ulepszeń, a ja staram się zachować ten artykuł zaktualizowane do dopasowania.













Theme Panorama przez Themocracy

5 użytkowników online teraz
4 gości, 1 botów, 0 użytkowników
Odwiedzających Max dzisiaj: 8 at 12:00 am UTC
W tym miesiącu: 56 w 25-04-2012 08:41 UTC
W tym roku: 69 w 27-02-2012 09:56 UTC
Cały czas: 130 w 28-03-2011 10:40 UTC