Kategoria: PHP

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

Przez , środa 06 styczeń 2010 00:13

W celu bezpośredniego żądania / sitemap.xml do niestandardowego kontrolera i akcji w Zend Framework aplikacji wystarczy dodać następujące w application.ini lub alternatywny plik konfiguracyjny (np. używam navigation.ini):

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

Przykładowy kod do wyświetlania widać, tworząc działania odpowiedniego kontrolera (np. mój mapa leży w kontroler indeksu działania mapa):

 < php
 Klasa IndexController
     rozszerza Zend_Controller_Action
 {
     / **
      * Renders mapa strony na podstawie ustawień Zend_Navigation
      * /
     publicznych sitemapAction function ()
     {
    	 echo $ this-> view-> nawigacji () -> Mapa strony ();
    	 $ This-> view-> układ () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps można szybko i łatwo być generowane przy użyciu Zend_Navigation , wielki szybkie kursu (i ogólnie bardzo przydatne dla Zend Framework samouczki) jest Zend Odlewy - Dynamiczne tworzenie menu mapa i bułce tartej .

Zend Framework za moduł placówkach

Przez , piątek 01 stycznia 2010 22:40

Stworzyłem nawiązaniu do tego postu, która wymaga mniej konfiguracji, patrz Moduł podstawie układu - Zend Framework .

Przy użyciu Zend Framework z modułów, że jeśli używasz różnych (pod) strony od samej aplikacji nie koniecznie chcą tego samego oczywistych skrypty układ dla każdej części. Postanowiłem pójść z następującą strukturę strony:

  / Application
     / Controllers
         ...
     / Modeli
     / Modules
         / Default
             / Controllers
             / Układ
                 / Scripts
             / Views
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problem polegał na tworzeniu skryptów układ na zasadzie per-moduł. Odpowiedź przyszła za pomocą Helper działania. Konfigurowanie układów na zasadzie per-moduł z trzech etapów:

  1. Application.ini (lub podobnych ustawień konfiguracyjnych):
      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 / affiliate / layouts / scripts" 
  2. Tworzenie Helper działania:
      <? Php
     / **
      * Ustawia ścieżkę układ na zasadzie per-moduł
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Od 01.01.2010
      * /
     klasy Pro_Controller_Action_Helper_SetLayoutPath
         rozciąga Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Ustawia ścieżkę układ oparty na module
          * /
         publicznych preDispatch function ()
         {
        	 $ Module = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ("bootstrap")) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ module] ['zasobów'] ['układ'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ module] ['zasobów'] ['układ'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ("układ")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. I wreszcie boostrap pomocnika działania:
      ...
         / **
          * Ustawia skrypty układ na zasadzie per-moduł
          * /
         Funkcja ochrony _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ("frontController ');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         nowych Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doktryna: default DATETIME NOW ()

Przez , środa 30 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, bazy danych. I potrzeba utworzenia schematu tak, że pozwolił mi ustawić domyślną datę i czas na `datetime` kolumny, np. po dodaniu nowej wiadomości pojawia się aktualny timestamp. Po długich poszukiwaniach i eksperymentowanie znalazłem rozwiązanie, więc jestem jego udostępniania.

W schemacie YAML plik, wykonaj następujące czynności:

 Wiadomość:
   actAs:
     Timestampable:
       utworzony:
         Imię: created_at
         Typ: timestamp
         format: Ymd H: i: s
       aktualizacja:
         Imię: last_updated
         Typ: timestamp
         format: Ymd H: i: s
   kolumny:
     id:
       typ: integer
       podstawowej: true
       autoincrement: true
     nazwa: string (255)
     email: string (300)
     wiadomości: smyczkowy (2000)

Jeśli natomiast nie chcesz `updated_at` kolumnie można użyć następujących czynności:

 Wiadomość: actAs: Timestampable: utworzony: Nazwa: created_at: format timestamp: Ymd H: i: s aktualizacja: niepełnosprawnych: prawdziwe kolumny: id: Typ: integer podstawowej: true autoincrement: prawdziwe nazwisko: string (255) e-mail: string ( 300) komunikat: smyczkowy (2000) 

Wzory PHP Design - Wzorzec Obserwator

Przez , wtorek 29 grudnia 2009 22:02

Czytałem Head First Design Patterns niedawno i postanowiłem napisać kilka wzorów jak PHP przykłady dla własnej korzyści. Pierwszy z nich, że zdecydowałem się kod jest Wzorzec Obserwator . Formalna definicja Wzorzec Obserwator jest:

Wzorzec obserwator (podzbiór asynchroniczne publikacji / subskrypcji wzór ) jest oprogramowanie wzorca projektowego , w którym obiekt , zwany temat, utrzymuje listę jego utrzymaniu, zwany obserwatorów, i powiadamia je automatycznie o wszelkich zmianach stanu, zazwyczaj przez wywołanie jeden z ich metod . Stosowany jest głównie do realizacji rozproszonych systemów obsługi zdarzeń.

Ponieważ systemy bardziej luźno upewniając się, że gdy zdarzenie dzieje się we wszystkich systemach, które wymagają wiedzy na temat tych aktualizacji są informowani. Na przykład, na blogu, po zapisaniu postu możemy być zmuszeni do aktualizacji wyszukiwarki (np. Lucene), aktualizacja naszej sitemap, tagi, e-mail subskrypcji użytkowników, itp. wzorzec obserwatora pozwala programistom na dodatkowe słuchaczy bez edycji ich obserwacji obiektu . Poprzez wstrzyknięcie obserwatorów (tj. wyszukiwarki aktualizacja obserwatora, sitemap generator, itp.) do podmiotu (blog tj. po edycji systemu) możemy pozwolić mu wykonać wszystkie niezbędne aktualizacje bez zmian.

Kontynuuj czytanie 'Desenie PHP Design - Wzorzec Obserwator "»

Grid Computing Office przy użyciu wirtualnych środowiskach - część 4

Przez , piątek 04 grudzień 2009 23:59

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadań przetwarzania wsadowego milionów rekordów danych każdego dnia i Myślałam ostatnio o wszystkie maszyny, które siedzą w każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn do wzmocnienia mocy obliczeniowej naszego systemu? W ten zbiór artykułów będę patrzeć na potencjalne korzyści z zatrudniania biura sieci za pomocą środowisk wirtualnych.

W części 3 stworzyliśmy maszynę wirtualną przetwarzania i skonfigurować Windows na bezczynność wymiarze czasu pracy.

Uruchomienie ostatni kod

Nieuchronnie po utworzeniu firmy pracowników logiki zmieni, błędy będzie można znaleźć, szybszy bardziej wydajnego kodu będą produkowane w ten sposób pozostawiając pracowników siedzieli przetwarzania danych przy użyciu starych śmierdzących kod . Jak więc mamy pewność, że zawsze jesteśmy z wykorzystaniem najnowszych i najlepszych wersji skrypty przetwarzania?

Istnieje kilka prostych sposobów, bardzo łatwo możemy to zrobić, sztuczka, jednak jest ograniczenie mocy przetwarzania i ruchu sieciowego w realizacji tego celu. Zacznijmy od najprostszych rozwiązań i udoskonalamy je powoli przez kilka iteracji.

Pierwsza metoda byłoby po prostu podłączyć do naszego serwera kontroli pracy (poprzez samba, FTP, lub podobne) i pociągnij w dół najnowszą wersję kodu. Nie bardzo wydajny, ale będzie to robić w pracy. Pozwala poprawić, że trochę, jak na temat tworzenia i korzystania z rsync skrypt, że za każdym razem zamiast? Ewentualnie co o wprowadzenie naszych najnowszych skrypt przetwarzania na subversion przeglądając kod na początku, a potem po prostu aktualizacji naszego kodu na każdym biegu ( svn update )?

W końcu mogliśmy skończyć z skrypt (uruchamiane 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 przetwarzanie, zjazd"
 więcej
     echo "Praca nie jest uruchomiony, już teraz"
     cd / ścieżka / do / pracy / kopiowania
     svn update
     php yourJobProcessingScript.php
 fi 

Teraz możemy być pewni, że z każdego biegu jesteśmy zdecydowanie zainstalowany najnowszy kod. Mamy zapewnienie, to przez aktualizację naszej bazy kodu za każdym razem wykonujemy uruchomić i zmniejszenie ruchu w sieci tylko przez przeniesienie różnice pliku w naszej sieci.

W mojej instalacji demonstracyjnych, zrobiłem dokładnie tak jak powyżej. Subversion został zainstalowany na moim serwerze realizacja zadań i po prostu wyciągnął ostatni kod z "pracownik" oddziału przy "svn update". Dodałem też tag numer wersji do przetwarzania skryptu, który został zwrócony do bazy danych jako część przychodów z wyników. W ten sposób mogłem zobaczyć, że mój kod był aktualizowany za każdym razem kopiowane moim pniu do oddziału tj. pracownika, że ​​jestem zdecydowanie zainstalowany najnowszy skrypt przetwarzania.

Korzystając z najnowszych danych

Jeśli realizacja zadań sprawia, że ​​wykorzystanie źródeł danych, a następnie w pewnym momencie te będą aktualizowane zbyt. Chyba zadzwonić do źródeł danych na podstawie bardzo rzadko będziesz powodzi sieci z ruchu jak tylko pracownicy zaczną przynosząc wszystko do zatrzymania. Na moje rozwiązanie zdecydowałem, że chciałbym przenieść źródeł danych wokół z moich maszyn wirtualnych.

Trzymaj jesteś konie tam! Co zrobić, jeśli źródła danych są OGROMNE? No to naprawdę przypadku, jak dużo danych mówimy? Może to być bardziej opłacalne zainstalować dodatkowy większy dysk na każdym komputerze, niż na zakup dodatkowego serwera przetwarzania. To jest kwestia budżetu i do działalności na decyzję. To może, że źródła danych są tak duże, że jej po prostu niemożliwe do utrzymania, że ilość danych w maszynach pracownika. W takim przypadku co byś zrobił? Cóż możemy spojrzeć na powoł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 biurze. Może być również, że można spojrzeć na alternatywnych strategii działa, na przykład tylko dzwoniąc do pracowników między 8pm i 6 rano każdej nocy i / lub ograniczanie żądań danych źródłowych.

Przechodząc powiedzmy, że nasze dane ilość źródeł do 100GB danych. No tak to trochę danych do poruszania się po sieci aktualizacji. W jaki sposób mamy pewność, że mamy najnowszą kopię danych w tym przypadku? Rsync jest możliwość, ale osobiście uważam, uruchamiając źródłem najnowszych danych na serwerze realizacja zadań i konfigurowania tej funkcji jako mistrz w replikacji (z ładnym log długo bin) może być droga:

replikacji Przez ustawienie każdego z pracowników się jako niewolnik do aktualizacji kontroli pracy serwera do źródeł danych będzie ładnie spływa do pracowników bez ogromny wzrost aktywności sieciowej (która jest chyba wykonać duże uaktualnienie danych i wszystkich pracowników kopa na raz). To ma przewagę nad rsync tym, że nie dostanie długiej przerwie przed każdym zadaniem, jako aktualizacje bazy danych, mysql demona na Twój pracownik będzie stale aktualizować swoje dane a przetwarzanie kontynuowane.

W ten sposób mogę skonfigurować serwer demonstracji. Aby skonfigurować replikację I tego poradnika na stronie MySQL ( Konfigurowanie replikacji ) iw ciągu 20 minut miałem początkową pracownika replikacji serwerów pracy kontrola zestawu danych. Dla każdego dodatkowego pracownika ustawienia replikacji i procesu pracował każdym razem, gdy VM został skopiowany.

Streszczenie

W tej części artykułu przyjrzeliśmy się, jak łatwo i bezboleśnie to by 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. także zastanawiali się, jak zachować źródła danych informacji up-to-date, pozwalając mu spływa do każdego z pracowników. W ten sposób obszar zapewnienie, że my na bieżąco z logiki biznesowej i informacji w systemie sieci biurowych. Nie będzie oczywiście niezliczone alternatywy dla wykonywania tych zadań, ale tu były dwa proste przykłady, aby pokazać, jak łatwo jest rozwiązaniem do zdobycia.

Następnym razem

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

Grid Computing Office przy użyciu Wirtualne środowiska - Część 3

Przez , piątek 04 grudzień 2009 23:37

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadań przetwarzania wsadowego milionów rekordów danych każdego dnia i Myślałam ostatnio o wszystkie maszyny, które siedzą w każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn do wzmocnienia mocy obliczeniowej naszego systemu? W ten zbiór artykułów będę patrzeć na potencjalne korzyści z zatrudniania biura sieci za pomocą środowisk wirtualnych.

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

Konfigurowanie pracownika - czy Limp serwer

Kolejnym krokiem w procesie jest utworzenie wirtualnego pracowników. Do tego mam zamiar używać instalacji CentOS pomocą VirtualBox. Mam zamiar zainstalować MySQL i PHP na serwerze, znany również jako Limp (NUX Li, m ySQL, P HP) Servera (może zrobiłem, że nazwa góry).

  • Instalacja VirtualBox na maszynie z Windows (zgodnie link)
  • Pobierz i zainstaluj CentOS (aktualna wersja 5.3) w utworzonych maszyn wirtualnych

Nie ma sensu mnie będzie to tam prawdopodobnie 1000 's wielkie samouczki tam (ok, jest jeden: Tworzenie i Managing CentOS maszyny wirtualnej pod virtualbox ). Najważniejsze, aby pamiętać Przypuszczam, że zadzwoniłem do mojej maszyny wirtualnej GridMachine.

Jeśli chodzi o moje wybory klienta wirtualizacji i system operacyjny go nie ma duży powód, dla każdego wyboru. VirtualBox jest coś używam na moim domowym komputerze i jest obsługiwany przez trzech głównych systemach operacyjnych. Wybrałem CentOS jak jego dobry OS stabilny i używam go na własnym serwerze WWW. Jestem wielkim zwolennikiem odpowiednie narzędzia do pracy (chociaż jestem stosowania "użyć najszybszy i najłatwiejszy dla Ciebie" mentalności tutaj), więc jeśli system operacyjny X działa kod szybciej i efektywniej wykorzystać, że zamiast:)

Ważne jest upewnić się, że VM używa serwera DHCP, w przeciwnym razie za każdy nowej maszynie wirtualnej musiałby być konfigurowane oddzielnie, która jest czymś, czego nie want.By za pomocą DHCP nie musimy konfigurować ustawienia sieci indywidualnie dla maszyn pracownika, DHCP strony IP dla ciebie. Dlatego można skopiować maszynę wirtualną o biurze nie martwiąc się o ustawienia każdy egzemplarz (poprawia skalowalność i zmniejsza administracji pracownika).

Proces należy dążyć do osiągnięcia byłoby uzyskać nowe maszyny fizycznej, zainstalować VirtualBox, a następnie prawie uruchomienie wirtualnego obrazu bez wielu innych rzeczy. To może być mądry, aby ustawić wszystkich pracowników w innej podsieci, tak aby można przynajmniej zobaczyć, jak wiele maszyn są uruchomione. Trzeba także skonfigurować komputery w długoterminową dzierżawę lub nieograniczone dzierżawy DHCP.

Jak uruchomić Praca na pracownika

Jest to interesujący obszar i istnieje kilka ważnych metod przetwarzania pracy na pracownika. Tu po prostu omówić dwie najbardziej oczywiste:

  • Wiecznie uruchamianie skryptów: Skrypt, jest to skrypt powłoki lub skryptu PHP jest wykonywana raz na pracownika i działa jako część nieskończoną pętlę. I już zdyskontowana tej metody jako jeden błąd w skrypcie i potencjalnie Twoi pracownicy przestaną działać bez jakiejś interwencji.
  • Cron na wykonanie skryptu: co X minut demona cron rozpoczyna się wezwaniem do skryptu, aby rzeczy się dzieje. Bez pewnej kontroli może to prowadzić do wielu, wielu kopii uruchamianie skryptów pracownika.

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

  1. Pobierz listę procesów i grep to dla "php". Jeśli nie zostanie znaleziona następnie kontynuować.
  2. Wywołać kod pracy, w moim przypadku byłoby to coś na PHP
  3. Skrypt pracownik kończy swój bieg
  4. Gotowa do pracy ponownie na kolejne wywołanie odpowiedniego

Mój skrypt wygląda tak:

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

Uwaga: echo są niemal całkowicie pozbawione sensu, ale może pomóc kolejna osoba, która przychodzi, aby spróbować ich edycji.

, Który kończy skonfigurować pracownika maszynie wirtualnej, szybkie, proste i łatwe do skopiowania do każdego elementu sprzętu, który jest odbierany. "Spryt" systemu sieci naprawdę nie jest w wizualizowane OS, to wszystko zrobić z kod stworzony do procesu pracy, konfiguracji pracy, a w upewniając się, że zadanie jest uruchamiane w razie potrzeby (np. gdy komputer jest bezczynny ).

Konfigurowanie systemu Windows do Initialise pracowników

Pierwszym zadaniem jest wypracowanie polecenia konieczne do uruchomienia maszyny wirtualnej z linii poleceń Windows. Jeśli zainstalowałeś VirtualBox w domyślnej lokalizacji, a ty o nazwie Twój pracownik GridMachine to polecenie musi doładować pracownik jest:

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

Jednak, aby uruchomić skrypt w "głowy" państwa musimy użyć:

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

Spowoduje to uruchomienie maszyny wirtualnej bez GUI i pozwalają na zapisanie stanu wdziękiem. Drugi argument wyłącza PROW więc nie jest to sprzeczne z okna RDP, lub przekazać wiadomość o nasłuchuje na porcie 3389. Nazwę maszyny wirtualnej jest wielkość liter!

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

zaplanowanych zadań

Następnie kliknij na "Dodaj zaplanowane zadanie", a następnie przeglądać, aby dodać własny program. Przejdź do skryptu VBoxManage i kliknij OK. Zaplanuj zadanie dla każdej 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, to proponuję albo "Administrator" lub tworzenia nowego uprzywilejowanego użytkownika. Pamiętaj, że nie chcemy ingerować w standardowe konto pracowników na maszynie w dowolnym momencie. Kliknij przycisk Dalej i zaznacz Pokaż zaawansowane opcje do tego zadania.

Do końca pola tekstowego uruchomić dodać nasz string 'startvm GridMachine "i zapewniają, że działają tylko po zalogowaniu się w lewo Brak zaznaczenia. Odwiedź harmonogramu zadań obok i zmienić harmonogram rozwijanej do opcji "stanie bezczynności", wybierz czas, chcesz, aby komputer był bezczynny przed przejściem do następnej karty.

Na koniec usuń zaznaczenie opcji, który stanowi zakończyć zadanie, jeśli prowadzi kwotę X czasu, ale zaznacz opcję, aby zatrzymać zadanie, jeśli urządzenie nie jest bezczynny.

harmonogram

To wszystko to dla instalacji systemu Windows gospodarzem!

Streszczenie

W tej części musimy ustawić maszynę wirtualną do działania jako pracownik, jak i sposób, w jaki nazywamy i wykonywać skrypty przetwarzanie zadania (dla siebie skrypt PHP). Stąd przyjrzymy się, jak skonfigurować nasze kopie systemu Windows do uruchomienia maszyny wirtualnej w trybie bez głowy, gdy komputer staje się w stanie spoczynku, i zapisać swój stan, gdy użytkownik wznawia użytkowania urządzenia. Mam nadzieję, że w tym momencie widzisz, jak łatwo jest stworzenie takiego systemu 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 źródeł danych, tak aby uzyskane wyniki są zawsze na bieżąco z najnowszymi informacjami i logiki biznesowej.

Grid Computing Office przy użyciu Wirtualne środowiska - Część 1

Przez , piątek 04 grudzień 2009 23:23

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadań przetwarzania wsadowego milionów rekordów danych każdego dnia i Myślałam ostatnio o wszystkie maszyny, które siedzą w każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn do wzmocnienia mocy obliczeniowej naszego systemu? W ten zbiór artykułów będę patrzeć na potencjalne korzyści z zatrudniania biura sieci za pomocą środowisk wirtualnych.

W PHP developer będę używać narzędzi, które używam codziennie a mianowicie, Linux, MySQL , PHP, VirtualBox i Subversion (SVN). Jednak mam nadzieję, że ten przewodnik będzie dostosować się do innych języków i technologii tak samo dobrze.

Rozwiązanie, dostarcza będzie bardzo luźno oparty na rodzaj obróbki musielibyśmy osiągnąć jednak nie może być prawda cały artykuł, jak będę coś zmienić dla uproszczenia, lub do produkcji bardziej interesujące scenariusze użycia.

Tych środowisk wirtualnych będzie działać na komputerach z systemami Windows, ponieważ jest to, co większość z biura prowadzone. Przetwarzanie, że urządzeń biurowych nie powinny kolidować z pracowników przy użyciu tych maszyn, konieczne jest nie wymagają konserwacji na maszynie, i być łatwo rozmieszczenia nowych urządzeń w miarę ich udostępniania. Ponadto, nowe maszyny wirtualne nie powinny wymagać żadnej dodatkowej konfiguracji, ponieważ znacznie zmniejsza skalowalność i łatwość, z jaką systemu sieci może zostać przedłużona.

Dlaczego Wdrażanie Grid Computing Office?

Po pierwsze może być myślenie, dlaczego nie korzystać z zasobów cloud computing, takie jak platformy Amazon EC2 jest ? Cóż, powodów może być kilka, na przykład:

  • Nie będzie powierzyć niektóre dane do środowiska cloud computing
  • Nie można podawać niektórych danych do środowiska cloud computing z powodów prawnych (np. dane opuszczania kraju), co może ze względów prawnych, np. rekordy NHS.
  • Chcesz zachować swoje jednostki przetwarzania blisko i mieć pełną kontrolę nad sprzętem za
  • Nie masz funduszy projektu w celu uruchamiania wystąpień chmury
  • Twoje biuro nie ma połączenia z internetem i dlatego jej nie można skorzystać z zasobów cloud
  • Nie lubisz deszcz, chmury sugerują, deszcz, więc trzymać z dala

Jestem pewien, że na liście mogą trwać nadal, ale myślę, że to na razie wystarczyło.

Zalety Grid Computing Urzędu

Cóż, pozwala zrobić kilka matematyki (i fizyki w prawdziwym stylu pozwala poczynić pewne założenia zamiatanie). Wyobraź sobie, że duży silny serwer przetwarzania działa 100 miejsc pracy dziennie. W biurze masz 50 maszyn, które są bezczynne 16 godzin dziennie, każdy z tych maszyn jest 10% tak potężny jak silny serwer przetwarzania. (Wszystkie wyniki tutaj są zaokrąglone do niedoceniania wzrost wydajności).

Tak więc, 1 maszyna * 10% mocy * 2 / 3 czasu = 0,067 tj. 1 przetwarzania pulpitu w bezczynności może przetwarzać 6 pełnych etatów na dzień.

Jeśli teraz skala to do niego w 15 idle komputerów do procesu, jak wiele miejsc pracy dziennie jako główny serwer przetwarzania nie.

Tak więc w naszym udawać, że urząd 50 maszyn możemy zwiększyć moc obliczeniową od 1 serwer do 4 pełne serwery przetwarzania, lub moglibyśmy być przetwarzania 400 nowych miejsc pracy dziennie zamiast 100.

Zwróćmy uwagę, bez inwestycji w nowy sprzęt Twoja firma ma 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 maszyn ogół pozostawia na noc, tak więc można było zobaczyć to jako zielone inicjatywy.

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

Technologies

Co jest potrzebne? (Lub bardziej poprawnie, co nie korzystałem):

  • Idle urządzeń biurowych (w moim przypadku części starych okien laptopa XP)
  • VirtualBox (lub innego oprogramowania klienckiego wirtualizacji)
  • Maszyny wirtualnej z PHP, mySQL running prowadzenia obniżyć OS, dzwonię tych moich Limp serwerów:)
  • Praca uruchomić
  • Serwer pracy (może być inny maszyny wirtualnej gdzieś)

Typowe Praca

Rodzajów pracy, że ten system jest przeznaczony do uruchamiania jest następująca:

  • System odbiera dane w postaci listy, na której musimy meczu i powrotu wyników
  • Dopasowanie polega na sprawdzeniu / wyszukiwanie kilka (dość statyczne) źródeł danych
  • Wyniki ze źródeł danych mogą wymagać dalszej oceny, łączenia, sprawdzanie dodatkowych źródeł danych w odpowiedzi na wyniki
  • Dane zwracane z pasujące rekordy, w pełni zwalidowane i przetwarzane
  • Każdy rekord w pracy jest niezależny od pozostałych

Więc w zasadzie patrzymy na uruchomione zadania, które wymagają mieszanki zapytań do bazy danych, a niektóre crunching numer, dość typowy scenariusz w środowisku biznesowym.

Rozwiązania sieci są nie tylko korzystne dla 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 wikipedia przykładów i więcej informacji: Grid Computing , ale kilka znanych przykładów Seti @ Home i BIONC . Istnieją ramy dla prowadzenia sieci komputerowych, a te są dobrze warto przyjrzeć się.

Co chcemy osiągnąć?

Pod koniec tych artykułów mam nadzieję pokazać, że wdrażanie sieci biura nie musi być bardzo kosztowna i czasochłonna. Mam zamiar omówić:

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

Będę budynku (ok I zbudował, a potem napisał ten) przykładowej aplikacji do testowania koncepcji na lokalnym komputerze systemu Windows XP i moje "GridMachine wirtualna maszyna. Mój serwer kontroli pracy będzie moim głównym maszyny, która działa Fedora 11 .

To jest w żaden sposób nie ma na celu wykazać, w pełni funkcjonalny solidny system, jego znaczy więcej demonstracji i dyskusji pokazuje, że te rzeczy można osiągnąć w stosunkowo krótkim czasie i niewielkim kosztem. Prosimy wysłać do mnie żadnych uwag, korekt lub poprawek i postaram się, aby utrzymać ten artykuł zaktualizowany do meczu.

Następnym razem

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

Grid Computing Office przy użyciu Wirtualne środowiska - Część 2

Przez , piątek 04 grudzień 2009 23:23

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadań przetwarzania wsadowego milionów rekordów danych każdego dnia i Myślałam ostatnio o wszystkie maszyny, które siedzą w każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn do wzmocnienia mocy obliczeniowej naszego systemu? W ten zbiór artykułów będę patrzeć na potencjalne korzyści z zatrudniania biura sieci za pomocą środowisk wirtualnych.

W części 1 dałem przegląd systemu i technologii będę używał, jak również omówione niektóre z potencjalnych powodów, dla których chcesz utworzyć sieci biurowych.

Kontrola zadań

Jeśli masz zamiar być uruchomione zadania wtedy będziemy potrzebować jakiś sposób nimi zarządzać. System kontroli pracy (na serwerze pracy) musi być naprawdę dobrze przemyślane zanim zaczniesz nawet do uruchomienia sieci biurowych. Więc po pierwsze, jakie są zadania dla systemu kontroli pracy:

  • Miejsc pracy na rękę na wniosek pracowników
  • Powiedz pracowników, jaki rodzaj pracy, aby uruchomić
  • Śledź pracy
  • Upewnij się, że miejsca pracy są uruchamiane tylko raz
  • Podaj dane pracy dla pracowników, lub przynajmniej powiedz im, gdzie je zdobyć

System musi być także rozszerzalny, rozwiązanie, które działa na razie w jednym przypadku może być przedłużony, aby uruchomić kilka rodzajów pracy, jak biznes postrzega wartość w roztworze siatki. Na przykład, praca może zyskać priorytetów, więcej niż jedną pracę typu mogą istnieć (tzn. kilka baz kodu), ewentualnie może nawet korzystać z kilku różnych maszyn roboczych, które są zoptymalizowane dla każdego typu zadania (które jednak odejście od "pracownika ogólne "pomysł). Zawsze staram się myśleć o przyszłości przy opracowywaniu systemów, krótki wzrok perspektywie mogą prowadzić do długoterminowej frustracji i wydłużenie czasu rozwoju.

Server pracy

Będziemy potrzebować gdzieś do kontroli naszych miejsc pracy, powinno to być jedynym systemem w sieci, która ma stałą Resource Locator jest, że adres IP, nazwę hosta, adres URL (przy użyciu DNS wewnętrznych), itp. To dlatego, że pracownicy muszą wiedzieć, gdzie szukać pracy, pracownicy powinni znaleźć system kontroli pracy (nie systemu kontroli pracy znaleźć pracowników).

Serwer sama praca nie ma to skomplikowane zadanie (w systemie podstawowym w każdym razie), musi przechowywać listę zadań, rękę pracy, otrzymać wyniki, a następnie zapisać je do późniejszego wykorzystania. Jak tych części (takich jak "rozdawać pracy") są zdefiniowane mogą być bardzo proste. Później możemy rozszerzyć systemu o interfejs administracyjny, aby dodać, edytować, usunąć, zawiesić pracę, ale jest to poza tym ćwiczeniu.

Nie ma żadnego powodu, następnie, że serwer praca nie może być maszyna wirtualna w głównym serwerze przetwarzania pod warunkiem, że nie drenażu zbyt wiele zasobów z niego. Serwer pracy jednak nie musi wysoką dostępność, jeśli idzie w dół w piątek wieczorem będziesz stracić cały weekend, przetwarzania, potencjalnie kosztowało kilka tygodni warto czasu przetwarzania (w porównaniu do głównego serwera przetwarzającego sam) . Możesz rozważyć umieszczenie serwera pracy na obciążenia środowiska zrównoważony dla wysokiej dostępności.

Podstawowe ustawienia

Podstawowej konfiguracji dla naszego serwera pracy będzie składać się z co nazywam jeden z moich Limp serwerów (czyli Nux Li, m ySql, P HP). Kod działa na pracowników thea rzeczywiście pracy, co miejsc pracy można go uruchomić poprzez interakcję z bazami danych kontroli pracy systemu. Później możemy stworzyć usługę sieciową i faktycznie rękę pracy zamiast pracowników do ciężkiej pracy się, ale teraz będziemy nadal korzystać z zasadą KISS (Keep it Simple, Stupid!).

Tak więc, pozwala utworzyć trzy mySQL stoły do czynienia z pracy. Będą one `pracy`, `jobRecords` i `jobResults`.

pracy tabeli Tutaj używam SQL Buddy bardzo mały alternatywa dla phpMyAdmin tylko dlatego, że łatwiej jest zainstalować na CentOS (dla widzą inni: 10 Great alternatywa dla phpMyAdmin )

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

  • id: Unikalny identyfikator pracy
  • Nazwa: To może być odniesienie 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ć w pracy? To nie jest całkiem wymagana, ale miło mieć. Sugerowałbym pracowników śledzenia na podstawie adresów IP w sieci
  • started_at: Kiedy pracownik rozpocznie pracę? Poprzez śledzenie pracy, które nie zakończyły w ramach kwoty X czasu wiemy, że trzeba podnieść pracy ponownie i rozpocząć przetwarzanie przez innego pracownika. Pracownicy mogą zatrzymać przetwarzanie / go w trybie offline z wielu powodów, awarii zasilania, awarii, strat sieciowych itp.

Łatwo jest jak tej tabeli, może zostać rozszerzona o kilka dodatkowych pól, aby umożliwić śledzenie statystyk, kolumny czas zakończenia, aby zobaczyć, jak długo praca zajęła, licznik aby zobaczyć, jak wielu pracowników podniósł pracy (oczywiście musi to mają tendencję do 1), priorytet zadania, 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 jest konieczna.

Dodajmy kilka miejsc pracy np.:

miejsc pracy np.

W poniższej tabeli znowu jest dość proste do zrozumienia, to nasze rekordy pracy. Są one związane z głównej tabeli miejsc pracy przez kolumnę `jobs_id. Tworzą z tej tabeli bardzo wiele zależy od danych, które należy dostarczyć do pracowników, pozwala dokonać bardzo prosty przykład, gdzie mamy cztery kolumny:

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

Trzecia i ostatnia tabela składa się z tabeli wyników, ma tak samo tworzą w naszej tabeli rekordy, a z dodatkiem niektóre kolumny mogą być częścią tabeli rekordy:

  • 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 wskazał na innej tabeli, gdzie moje dane Proces został zlokalizowany, ale może to tylko tak łatwo było w pliku, do uruchomienia kodu symulacji, you name it.

Wybór pracy

Jak stwierdzono wcześniej, pracowników zrobimy zarządzania zadaniami dla nas teraz, więc wszystko, czego potrzebujesz, by naprawdę zrobić, to znaleźć pracę, która wymaga przetwarzania i uzyskać informacje. Jak to robimy? Dobrze wybrać nasze kryteria wyboru pracy i szukać pracy, w SQL zrobiłem co następuje:

  1. Podejmować żadnych zadań, które nie są oznaczone jako ukończone, ale z naszego pracownika i przywrócić je (substytut __ME__ z identyfikatorem, najłatwiej byłoby adres IP):
      UPDATE `pracy` SET `status` = 0 WHERE `status` = 1 AND `started_by` = __ME__; 
  2. Korzystanie z naszych kryteriów wyboru pracy, wyboru pracy i powiedzieć, że ten system kontroli pracownika radzenia sobie z nim:
      UPDATE `pracy` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 lub
     (`Status` = 1 AND `started_at`> DATE_SUB (NOW (), godzinnym X)) ORDER BY `id` ASC; 

    Chwytając miejsc pracy, które nie zwróciło wyniki w ilości X czasu mamy pewność, że wszystkie zadania są uruchamiane w przypadku awarii lub pracownik będzie zagubiony.

  3. Następnie chwycić szczegóły pracy po 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 wstawić nasze rekordy wynik i zaznaczyć zadanie jako ukończone. Pamiętaj, jak praca może zawiesić / wznowić w dowolnym momencie pozwala na pewne solidność w skrypcie. Być może zadanie zawiesza w połowie aktualizacji systemu kontroli pracy, więc sprawdzenie liczby rekordów w pracy i liczbę wyników zapisywane z powrotem do systemu kontroli pracy byłoby mądre posunięcie.

Ponadto, choć ten pokazuje, jak miejsca pracy mogą być wybierane i zarządzane z SQL-ramkę zapytania powinno się naprawdę abstrahując twoją kontrolą pracy tak, że jeśli zdecydujesz się przejść na korzystanie z usług internetowych, system plików, XML , lub innych wiele systemów nie będą miały wpływu na kod powyżej.

Konfiguracja pracy

Kolejny aspekt, do rozważenia jest to wielkość pracy i konfiguracji. Grając w konfiguracji pracy możemy strajku doskonałą równowagę między szybkością, procesu replikacji i niezawodności. Weź kilka scenariuszy ofa:

  1. Praca trwa od 1 dnia każdego uruchomić: Oznacza to, że pracownicy potrzebują 15 dni na rozpatrzenie każdej pracy (pamiętaj 10% mocy dla 2/3rds czasu). Oczywiście nie jest to mądry konfiguracji, rozmiar pracy jest zbyt duży! Zajmie to co najmniej dwa razy więcej czasu, aby uzyskać przetwarzane pracy powinny początkowej pracownika iść AWOL (czas, aby podnieść, że nie wrócił wyniku plus czas przetwarzania). W idealnym można mieć co najmniej jednego pełnego zadania łatwo wyczyszczone do końca każdego długi okres bezczynności, w ten sposób można zachować miejsca pracy zwolnionym tempie, aw najgorszym przypadku pracy zajmie dwa dni proces powinien najpierw przejść brakuje.
  2. Praca trwa od 1 minuty do uruchomienia: Oznacza to, że pracownicy trwać około 15 minut do uruchomienia każdego zadania. O ile może to początkowo wydawać idealne, można zyskać dodatkowe przetwarzanie pracy w porze lunchu, przerwy kawowe, spotkania itp. scenariusz ten obciąża innych obszarów systemu i wprowadza swoje własne problemy. Przykładowo, po pierwsze konfiguracji / przetwarzania stosunek czasu będzie skręcić w prawo w dół, więc utraty wydajności systemu. Twoja sieć będzie stale strumienia informacji na temat pracy do różnych pracowników frustrujące pracowników, którzy są dong ich codziennej pracy. Jesteś również zamiar umieścić więcej szczep na serwerze przetwarzania pracy, ponieważ musi rozdać wiele, wiele małych kawałków pracy na bieżąco. Wreszcie, w tej sytuacji, jeśli serwer praca idzie w dół masz zamiar stworzyć ogromne zaloguj ponadnormatywnego pracy, podczas gdy większe pracy mogłyby dalszego przetwarzania w błogiej nieświadomości, że serwer zadaniem było trudności.

W rzeczywistości nie będzie nikogo, idealna konfiguracja dla konfiguracji sieci, wiele zależy od dostępnych środków, rodzaje pracy, wymagania turnaround wymiarze czasu pracy, możliwość pracy w sieci, i tak dalej. Jednakże pewne wytyczne będą:

  • Rozmiar pracy tak, aby każdy pracownik może przejść przez co najmniej 3-4 nowych miejsc pracy w ciągu 15 godzin (najdłuższy czas bezczynności prawdopodobnie)
  • Graj z wielkości zadania, tak aby czas instalacji staje się dość nieznaczny w porównaniu do czasu przetwarzania (z uwzględnieniem powyższego punktu).
  • Jeśli zadanie nie zakończy się w podwójnej ilości czasu (może mniej) można się spodziewać jej zakończenie założyć, że jej zniknął i rozpocząć przetwarzanie go innym pracownikiem. To oznacza, że ​​trzeba czekać do trzech razy normalna długość pracy na jej zakończenie (ewentualnie dłużej, jeśli kolejne zadanie nie powiedzie się). Możesz skrócić ten czas, ale należy uważać, aby nie ograniczyć go za dużo, jak można rozpocząć powielania zadań przetwarzania na bieżąco.
  • Praca powinna być niezależna od zewnątrz wymagania jak najwięcej. Serwer pracy, na przykład, powinien skontaktować się na początku i na końcu każdego zadania.
  • Nie nasycenia sieci, będzie to miało dwa negatywne skutki, Twój dzień personel znaleźć za pomocą sieci frustrujące i problemów może wystąpić z połączenia limit czasu problem, który będzie jeszcze gorzej, jak skalowanie sieci.
  • Zapewnienia miejsc pracy może pracować na swoich pracowników. Jeśli praca staje się zbyt dużej pamięci lub miejsca na dysku intensywnie zacznie przerywać i jedyną rzeczą, można zauważyć, jest spadek liczby miejsc pracy przetwarzane bez rzeczywistego powodu.

Zgłoszenie Wyniki pracy

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

Gdy wyniki są złożone zapewnienia, że ​​liczba wyników meczów liczbę rekordów w pracy.

Jak stwierdzono wcześniej, i nie można przecenić, budować tolerancję błędu do wyszukiwania miejsc pracy i przekazywanie wyników. Pracownicy mogą (i prawdopodobnie będzie) przejść do trybu wstrzymania, co najbardziej uciążliwe razy i musi to być coś dla siebie. Także po raz kolejny abstrahując od Twojego zgłoszenia wyników pomoże zaspokoić przyszłe zmiany systemu sterowania praca jest łatwiejsza do czynienia.

Streszczenie

W tym section przyglądaliśmy się czym jest serwer kontroli pracy musi to zrobić i jak się bardzo prosty system ustanowiony. Rozmawialiśmy jak pobrać pracy z systemem kontroli i jak najlepiej skonfigurować zadania, aby jak najlepiej nasze systemu sieci biurowych. Aby zakończyć, akapit lub dwa na przedstawianiu wyników z powrotem do serwera kontroli pracy został przedstawiony.

  • Serwer kontroli pracy zarządza miejsc pracy i zapewnia, że ​​wszystkie jednostki są zakończone
  • Przez abstrahowanie zadanie wybrać / wyniki składania możemy zmienić technologię na serwerze kontroli bez większych problemów
  • Konfiguracja pracy, aby zapewnić, że są one uruchomić szybko i sprawnie, bez zbytniego nacisku na infrastrukturę, a nie powielając zadań przetwarzania na bieżąco.
  • Upewnij się, że budowanie odporności na uszkodzenia i checking błąd na swoje procedury, pracowników może 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 nasze maszyny wirtualnej przetwarzania i skonfigurować nasze maszyny okna bezczynność wymiarze czasu pracy.

Grid Computing Office przy użyciu Wirtualne środowiska - Część 5

Przez , piątek 04 grudzień 2009 23:03

Wprowadzenie

Pracuję w firmie, w której prowadzimy wiele zadań przetwarzania wsadowego milionów rekordów danych każdego dnia i Myślałam ostatnio o wszystkie maszyny, które siedzą w każdy dzień nic nie robi przez kilka godzin. Czy nie byłoby dobrze, gdybyśmy mogli korzystać z tych maszyn do wzmocnienia mocy obliczeniowej naszego systemu? W ten zbiór artykułów będę patrzeć na potencjalne korzyści z zatrudniania biura sieci za pomocą środowisk wirtualnych.

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

Pre-Deployment

Przed wdrożeniem systemu do sieci, jeśli istnieje coś zrobić i jedno tylko jest to punkt odniesienia bieżącego systemu! Nie ważne, co mówią koledzy, jak wiele dodatkowej pracy, system zrobi, chyba że masz numery, aby to potwierdzić swoje gwarancje są nic. Tak więc,

  • ile rekordów można przetwarzać obecnie? Na Dzień? Na godzinę?
  • Jak długo zazwyczaj trwa zawrócić pracy?
  • Ile więcej pojemności masz?

Istnieje również dodatkowe pytania:

  • Jeśli serwer przetwarzania (lub jednym z serwerów przetwarzania) idzie w dół, jak to wpłynie na Twoje możliwości, będzie kaleką?
  • Jakie korzyści ma Pan nadzieję / spodziewać się z sieci energetycznej?
  • Czy Twoje maszyn biurowych można uruchomić pracy?
  • Czy Twoje (lub miejsc pracy można zostać przekształcone) do pracy w tym stylu działa?

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.

Wdrożenie

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.

Stop!

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.

Zend Framework: Podstawy - Przegląd

Przez , sobota 28 listopada 2009 22:42

Mój pracodawca ostatnio zapłacił za grupę nas programistom Zend Framework: Podstawy Oczywiście, tutaj będę podsumować moje przemyślenia i opinie na temat kursu dla innych. Dla tych, którzy chcą zaoszczędzić czas, oto moje podsumowanie:

For developers who haven't had time to look at the Zend Framework this course (Zend Framework: Fundamentals) offers a good overall picture of the framework introducing you to the key areas and giving enough information in order to continue. Dla tych, którzy spędzili trochę czasu patrząc na ramy i po jednym lub dwóch samouczki tego kursu nie oferuje zbyt wiele poza nim.

Tło

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. I stworzyliśmy i / lub został deweloperem na kilka małych Zend Framework MVC sites. Będę szczery, nie miałem ogromną ilość ekspozycji na innych forach z punktu widzenia kodowania, ale przez kilka godziny badania stron internetowych projektu i oceny them. Ramy i otaczającej społeczności Zend Framework jest bardzo ekscytujące i nie wydaje się być ogromne możliwości w których jej dzieje.

O kursie

Kurs dostarczany jest w ciągu 9 dwie sesje WebEx godzin (z 10-minutową przerwę w środku). Czas spędzony przechodzi zestaw slajdów dostarczonych przez Zend z dyskusji w dowolnym momencie. Możesz użyć mikrofonu do rozmowy z instruktorem, ale szczerze mówiąc nie widziałem nikogo używać czegoś więcej niż w oknie czatu. Ponadto VMWare maszyny Ubuntu jest pod warunkiem, że ma przykład kodu i projektów stworzonych wersję testową Zend Studio. Rozmowy lider oczywiście uczestników albo przez rozwiązania VoIP zintegrowane, lub można wybrać w użyciu jednej z wielu wybierania na całym świecie w liczbach.

W trakcie Materiał składa się z krótkiego przeglądu ramowej i wzorzec MVC przed wyruszeniem w przykładowej aplikacji księgi. W dyskusji wykazano, uruchamianie, Zend_Application, tabele Db, dostęp do bazy danych, formularze, filtrowanie, ACL, Użytkownicy, itp., itd. Zasadniczo obejmujące wszystkie tematów, można wymagać, aby uzyskać podstawowe miejsca do pracy cały czas dając narzędzia do idź i bardziej zaawansowanych w ramach (choć nie kwotę "Patrz strona" dużo czasu).

Czas podaje się kod do niektórych przykładów, oraz do opracowania "księgi" i proste "wiki" aplikacji. Osobiście czułem, że dostarczenie kodu lub każdej aplikacji, a następnie prosi nas do rozwoju, co w zasadzie kopia obok tak naprawdę nie stanowią dobre doświadczenie. Wolałbym, by stworzyć aplikację podobne, ale nie identyczne. do zastosowania np. w korzyści płynące z posiadania przewodnika się odwoływać. Alternatywnie budowy aplikacji od podstaw z demonstrator by możliwie doprowadziły do pytania, dlaczego i jak, co daje lepsze zrozumienie ramach przecież można sprawdzić specyfiki po zakończeniu kursu.

Ostatni wykład składał się z pracy w sprawie stosowania wiki z pomocy / wskazówek od instruktora. After the course feedback was taken, it was emphasised several times through the course that Zend takes feedback very seriously, in fact apparently our version of the course was quite new. Niektóre z innymi programistami w firmie weźmie oczywiście wkrótce tak będzie interesujące zobaczyć, czy tak się stało.

Styl oczywiście było nieformalne, pozwoliły na opinie i współpracę między uczestników i instruktora. The course leader was friendly, approachable (email addresses were shared for questions), and whilst his presentation from the slides was a bit shaky seemed fully competent in the framework. Był wyraźnie kogoś, kto używane ramach regularnie, a nie kogoś, kto uczy się uczyć Oczywiście podobało mi się "prawdziwym świecie" doświadczenia w tym zakresie.

Ogólne uczucie

W pewnym sensie znalazłem oczywiście strata czasu, w innych było to bardzo wygodne. Mam nadzieję, że będę miał swoje powody na jasno, a może zapewnić pewne do myślenia lub uwagi przydatne (znając mnie to raczej mało prawdopodobne!).

Dla mnie ten kurs miał na celu zbyt niskim poziomie. Po przejściu Quick Start Guide, czytać Rob Allen Zend Framework w działaniu, i pracował z ramami trochę tak naprawdę nie dostać coś za dużo. Chciałbym z spodobał się oczywiście odebrać od końca quickstart i rozwijania dodatkowych umiejętności.

Powiedział, że tytuł kursu nie jasno "Zend Framework: Podstawy" i pod tym względem kursu osiąga to, co ma na celu zrobić. Other members of the development team that haven't spent the time looking into the framework finished each session with enthusiasm and asked questions which was really nice to see.

Nie wszystko stracone, że dobrze spędzić czas potwierdzające podstawowe informacje dotyczące ram i się zadać kilka pytań w obszarach, w których nie byłem w 100%. It was also time that I got to sit down each day and think about coding using the framework and future projects, something I wouldn't of been able to do otherwise (can you imagine your company agreeing to that? :) ). Wreszcie można również uzyskać ładny certyfikat z Zend powiedzieć, że wzięli udział w kursie (choć przez e-mail).

Zend Framework certyfikacji

To było jedno pytanie, które przychodziły do ​​głowy w trakcie, to przygotować mnie do certyfikacji? Szybkie, łatwe brzmi nie. Instruktor oczywiście całkiem jasno, że z dodatkowych informacji, że certyfikacji powinno się naprawdę za pomocą ram na co dzień podstawie i czują się bardzo komfortowo i pewnie w jego użytkowania i metodologii.

Streszczenie

Biorąc pod uwagę wszystko, co napisałem powyżej, ja podsumować wszystko w dwóch łatwych punktach:

  • Nowy Zend Framework: Ten kurs jest dokładnie to, czego można się spodziewać, że daje ładne wprowadzenie do ramy i dobre uziemienie na podstawach, z których można budować. Oczywiście wydaje się, by wzbudzić zainteresowanie i entuzjazm ramach wśród deweloperów.
  • Używane Zend Framework: Chociaż miło było wzmocnić niektóre bardzo podstawowe poczułem czasu, wysiłku i środków do podjęcia Oczywiście można z lepiej gdzie indziej. To będzie miły dla SEEA Zend utworzyć nowy wyższy poziom kursu do podjęcia deweloperów do następnego poziomu -. Co najmniej do poziomu certyfikacji i poza nią tego nie mogę zarejestrować się natychmiast.












Theme Panorama przez Themocracy

7 odwiedzających online
5 goście, 2 boty, 0 użytkowników
Max odwiedzających dziś: 11 na 02:07 UTC
W tym miesiącu: 47 na 10.03.2011 14:47 UTC
W tym roku: 130 w 28-03-2011 22:40 UTC
Cały czas: 130 w 28-03-2011 22:40 UTC