Kategorie: Computing

Apache-Proxy mit Digest-Authentifizierung

Von Steven Lloyd Watkin , Sonntag 27. März 2011 12.57 Uhr

Dieser Beitrag wird Ihnen zeigen, wie schnell einzurichten Proxy mit Authentifizierung über grundlegende Apache .

In meinem Fall wollte ich haben Übertragung Bit-Torrent-Client über das Internet, so konnte ich Check über den Zustand und adminster Torrent-Downloads (wie z. B. die neueste Version von Fedora) als. Transmission selbst läuft seine Web-Client auf Port 9091 standardmäßig. Anstatt Mühe Öffnung mehr Ports auf meine Firewall und das Hinzufügen der nessecary Port Forwarding Regeln beschloss ich, ich möchte nur die Anrufe durch Proxy, um die Übertragung via Apache mit mod_proxy .

Continue reading 'Apache-Proxy mit Digest-Authentifizierung "»

Zend Framework: Rendern Wenn vorhanden

Von Steven Lloyd Watkin , Sonntag 12. Dezember 2010 04.19 Uhr

Zusammenfassung

Dies ist eine schnelle Post zu einer Diskussion der eher einfachen Viewhelfer Rendering Ich habe für Zend Framework Stil View-Datei nur dann, wenn es vorhanden ist. Generell bitten Sie den Code in eine Datei, die nicht existiert wird eine Ausnahme werfen zu machen. Deshalb habe ich einen Wrapper für die Zend_View:: render ()-Methode, ob die Datei existiert und wenn ja macht, ansonsten einfach einen leeren String zurück bestimmt.
Continue reading 'Zend Framework: Rendern Wenn vorhanden' »

Zend Certified Engineer (ZCE) 5,3

Von Steven Lloyd Watkin , Donnerstag 30. September 2010 09.00 Uhr

Mit dem offiziellen Release des Zend Certified Engineer (ZCE) Programm für 5,3 Ich dachte, ich würde von meinem schnellen Eindruck geben, was ich dachte an die Prüfung.

Ein wenig Hintergrund über mich: Ich wurde zum ersten Mal eingeführt PHP vor ca. 7 Jahren und haben 2006 arbeitet professionell in PHP da. Ich derzeit als Arbeit für einen spannenden Start-up Brightpearl in basierend Bristol, UK , Herstellung von integrierten CRM, Buchhaltung und E-Commerce-Software. Ich habe bisher nicht einem der vorhergehenden ZCE Qualifikationen erhalten. Ich derzeit Serie zu entwickeln, die 5.2.x und habe nicht wirklich für gebrauchte jedes spezifischen 5.3 Merkmale (I warte Zend Framework 2 und Lehre 2) in meinem Entwicklungsprojekte.
Continue reading 'Zend Certified Engineer (ZCE) 5,3' »

Zend Framework pro Modul Layout-Einstellungen - Follow Up

Von Steven Lloyd Watkin , Dienstag 16. Februar 2010 08.48 Uhr

Als Folgemaßnahme zu meinem vorherigen Post auf pro Modul basierten Layout-Einstellungen für Zend Framework , habe ich vor aktualisiert den Code dann benötigen weniger Konfiguration (nicht, dass es notwendig mehr als ein paar Zeilen in Ihrer Anwendung Konfiguration!).
Continue reading 'Zend Framework pro Modul Layout-Einstellungen - Follow Up' »

Office Grid Computing mit Hilfe Virtuelle Umgebungen - Teil 4

Von Steven Lloyd Watkin , Freitag 4. Dezember 2009 11.59 Uhr

Einführung

Ich arbeite in einer Firma, wo wir laufen viele Batch-Jobs Verarbeitung Millionen von Datensätzen der Daten jeden Tag und ich habe vor kurzem Nachdenken über all die Maschinen, und sitzen um jeden jeden Tag nichts zu tun, für mehrere Stunden. Wäre es nicht gut, wenn wir diese Maschinen verwenden können, um Systeme zu stärken die Rechenleistung unserer? In dieser Reihe von Artikeln werde ich Amt Blick auf die potenziellen Vorteile der Verwendung eines Gitters mit virtualisierten Umgebungen.

In Teil 3 haben wir unsere virtuelle Maschine einrichten und Windows-Maschinen von Arbeitern zu idle-Zeit.

Running den neuesten Code

Zwangsläufig nach der Erstellung Ihres Business-Logik wird der Arbeitnehmer ändern, wird mit Hilfe Bugs gefunden werden, schneller und effizienter Code erzeugt werden somit Verlassen Ihres Arbeiter saßen Datenverarbeitung alten stinkenden Code . Wie also können wir sicherstellen, dass wir immer die neueste und beste Version unseres Skripts Verarbeitung?

Es gibt ein paar sehr einfache einfache Möglichkeiten wir dies tun konnte, der Trick ist aber auf Rechenleistung und Netzwerk-Traffic bei der Erreichung dieses zu reduzieren. Fangen wir mit der einfachsten Lösungen und verbessern sie langsam über ein paar Iterationen.

Die erste Methode wäre, einfach zu unserem Job-Control-Server zu verbinden (über Samba, FTP oder ähnlichem) und ziehen Sie die neueste Version des Codes. Nicht sehr effizient, aber es wird die Arbeit machen. Ermöglicht verbessern, dass etwas, wie etwa die Schaffung eines rsync-Skript und Hilfe, die jedes Mal statt? Alternativ was darum, unsere neuesten Verarbeitung Skript in Subversion auschecken den Code und dann zunächst nur die Aktualisierung unseren Code auf jedem Lauf ( svn update )?

Am Ende konnten wir am Ende mit einem Bash-Skript (genannt von cron alle 10 Minuten), die sich so einfach wie diese:

  #! / Bin / sh
 wenn ps ax | grep-v grep | grep php > / dev / null
 dann
     echo "Job gerade verarbeitet, Ausfahrt"
 sonst
     echo "Job nicht läuft, starten Sie jetzt"
     cd / pfad / zu / Arbeiten / kopieren
     svn update
     php yourJobProcessingScript.php
 fi 

Jetzt können wir sicher sein, dass bei jedem Durchlauf wir sind definitiv die neueste Code. Wir gewährleisten dies durch die Aktualisierung unserer Codebasis jedes Mal führen wir einen Lauf und die Verringerung des Netzwerkverkehrs durch die Übertragung der Datei nur Unterschiede in unserem Netzwerk.

In meiner Demonstration Setup, ich habe genau wie oben. Subversion wurde auf meinen Job Processing Server installiert und ich zog einfach den neuesten Code aus "Arbeitnehmer" Zweig mit 'svn update'. Ich habe auch eine Versionsnummer Tag, um meine Verarbeitung Skript, das auf die Datenbank als Teil der Ergebnisse zurückgeben zurückgegeben wurde. So sehe ich, dass mein Code war zu jeder Zeit, die ich kopiert meinen Koffer in die Filiale Arbeitnehmer bedeutet, dass ich definitiv ausgeführt wurde das neueste Skript aktualisiert Verarbeitung könnte.

Unter Verwendung der neuesten Daten

Wenn Ihr Job-Verarbeitung nutzt Datenquellen dann irgendwann diese werde auch aktualisiert werden. Sofern Sie rufen Ihre Datenquellen auf einer sehr unregelmäßigen Abständen wirst du zu Ihrem Netzwerk mit dem Verkehr so ​​schnell wie Ihre Mitarbeiter anlaufen bringen alles zum Erliegen Flut sind. Für meine Lösung entschied ich, dass ich möchte, dass meine Daten Quellen bewegen mit meiner VMs.

Halten Sie Pferde da! Was, wenn mein Datenquellen sind riesig? Gut, das ist wirklich ein Fall von, wie viele Daten sprechen wir? Es kann sein Server kostengünstiger jeweils ein zusätzliches größere Festplatte in die Maschine als die Verarbeitung zum Kauf einer zusätzlichen. Dies ist eine Frage des Budgets und wird das Geschäft zu entscheiden. Es ist vielleicht, dass Ihre Daten Quellen sind so groß, dass ihr nur undurchführbar Maschinen halten diese Menge an Daten in Ihrer Arbeitnehmer. In diesem Fall, was würden Sie tun? Nun konnten wir Server Blick auf den Aufruf einer lokalen Daten, die jedoch möglicherweise Netzwerk verursachen Probleme mit dem. In diesem Fall wird ein Grid-System wie diesem kann sich unrealistisch, Umwelt gehören in Ihrem Büro. Es kann auch sein, dass man Strategien Blick in alternative Laufen, zum Beispiel nur fordern Sie Ihre Mitarbeiter von 20.00 bis 06.00 pro Nacht und / oder Drosselung Datenquelle Anfragen.

Umzug auf sagen wir mal unsere Datenquellen Betrag zu 100 GB Daten. Nun ja, das ist ziemlich viel Daten zu bewegen das Netzwerk auf ein Update. Wie würden wir sicher, dass wir die neueste Kopie der Daten haben in diesem Fall? Rsync ist eine Möglichkeit, aber ich persönlich glaube, indem Sie Ihre neuesten Datenquelle auf Ihren Job Processing Server und Einrichten dieser als Meister bei der Replikation (mit einem schönen langen bin log) könnte der Weg zu gehen:

Replikation Durch die Einstellung jeder Ihrer Mitarbeiter als ein Sklave der Job-Control-Server Updates für Ihre Datenquellen wird Trickle-Down schön zu Ihrem Arbeitnehmer ohne einen enormen Anstieg der Netzwerk-Aktivität (das heißt, wenn Sie einen riesigen Daten zu aktualisieren, und führen Sie alle Ihre Arbeiter Kick auf einmal). Dies hat Vorteile gegenüber rsync in die Sie Job nicht bekommen würde eine lange Pause vor jedem, wie die Datenbank-Updates, die MySQL -Daemon auf Ihrer Arbeiter wird ständig aktualisiert seine Daten während der Verarbeitung fortgesetzt wird.

Dies ist, wie ich meine eingerichtet Demonstration Server. Zum Einrichten der Replikation folgte ich den Leitfaden auf der MySQL-Website ( Einrichten der Replikation ) und innerhalb von 20 Minuten hatte ich meine initiale Replikation der Arbeitnehmer Job-Control-Server Datenmenge. Für jede weitere Arbeiter die Replikation Einstellungen und Verfahren gearbeitet jedes Mal, wenn die VM kopiert wurde.

Zusammenfassung

In diesem Abschnitt des Artikels haben wir betrachtet, wie einfach und schmerzlos ist es, Ihre Verarbeitung Code auf dem neuesten Stand von Verwendungeines rsync oder subverion (SVN) halten die Arbeit machen und den Netzwerkverkehr zu reduzieren gleichzeitig time.A Wir erörterten auch, wie Ihre Datenquelle Informationen up-to-date, indem es zu rinnen an jeden Ihrer Mitarbeiter. So haben wir Raum dafür, dass wir halten mit Geschäftslogik und Informationen in unserem Büro Grid-System. Es wird natürlich unzählige Alternativen zu diesen Aufgaben, aber hier waren zwei einfache Beispiele zu zeigen, wie einfach eine Lösung zu haben ist.

Nächste Zeit

Im letzten Teil dieser Serie, treffend benannt Teil 5 besprechen wir den Einsatz dieses Systems für. Ich werde zusammenfassen, was gelernt wurde und was ich geschafft, zu schaffen.

Office Grid Computing mit Hilfe Virtuelle Umgebungen - Teil 3

Von Steven Lloyd Watkin , Freitag 4. Dezember 2009 23.37 Uhr

Einführung

Ich arbeite in einer Firma, wo wir laufen viele Batch-Jobs Verarbeitung Millionen von Datensätzen der Daten jeden Tag und ich habe vor kurzem Nachdenken über all die Maschinen, und sitzen um jeden jeden Tag nichts zu tun, für mehrere Stunden. Wäre es nicht gut, wenn wir diese Maschinen verwenden können, um Systeme zu stärken die Rechenleistung unserer? In dieser Reihe von Artikeln werde ich Amt Blick auf die potenziellen Vorteile der Verwendung eines Gitters mit virtualisierten Umgebungen.

In Teil 2 haben wir uns die Arbeitsplätze einem Server ausgeführt wird, und wie Arbeitsplätze ausfallen sollte so konfiguriert werden, um zu erreichen, ohne größte Menge der Verarbeitung gleichzeitig sicherstellen, dass jeder Job verarbeitet wird.

Einrichten des Arbeitnehmers - oder Limp Server

Der nächste Schritt in diesem Prozess ist die Einrichtung Ihrer virtuellen Arbeitnehmer. Für diese werde ich eine Installation von CentOS mit VirtualBox nutzen. Ich werde zu installieren mySQL und PHP auf dem Server, auch bekannt als ein Hinken (Li nux, m ySQL, P PS) Servera (ich kann aus diesen Namen auf).

  • Installieren von VirtualBox auf Ihrem Windows-Rechner (Link folgen)
  • Downloaden und installieren Sie CentOS (aktuelle Version 5.3) innerhalb einer virtuellen Maschine erstellt

Es hat keinen Sinn mich werde diesen gibt es wahrscheinlich 1000 's der großen Tutorials gibt (ok, hier ist eine: Erstellen und Managing CentOS virtuelle Maschine unter VirtualBox ). Der wichtige Punkt ist zu beachten Ich vermute, dass ich GridMachine rief meine virtuelle Maschine.

Soweit meine Entscheidungen der Virtualisierung und Betriebssystem-Client gehen gibt es keine großen zwingenden Grund für jede Wahl. VirtualBox ist etwas, das ich auf meinem Rechner zu Hause und wird von den drei großen Betriebssystemen unterstützt. Ich wählte als ein gutes stabiles Betriebssystem CentOS und ich benutze es auf meinem eigenen Web-Server. Ich bin ein großer Anhänger der richtigen Werkzeuge für den Job (obwohl ich die Anwendung "die schnellste und einfachste für Sie"-Mentalität hier), so dass, wenn Betriebssystem X-Code läuft Ihr schneller und effizienter zu nutzen, anstatt:)

Wichtig ist sicher, dass Ihr VM DHCP verwendet, ansonsten für jeden neuen virtuellen Maschine müssten separat konfiguriert werden, die wir so nicht wollen want.By mit DHCP wir nicht brauchen, um Netzwerk-Einstellungen individuell konfigurieren für Arbeitnehmer Maschinen, wird DHCP Hand aus IPs für Sie. Daher können Sie Ihre virtuelle Maschine über das Büro kopieren, ohne sich Gedanken über die Einstellung jedes up (dies verbessert die Skalierbarkeit und reduziert Arbeitnehmer Verwaltung).

Der Prozess, den Sie erreichen wollen sollte wäre eine neue physikalische Maschine zu erhalten, installieren Sie VirtualBox, und dann so ziemlich Bereitstellung des virtuellen Bildes ohne viel anderes. Es könnte sinnvoll sein Setup alle Ihre Mitarbeiter in einem anderen Subnetz, so dass Sie wenigstens sehen können, wie viele Maschinen ausgeführt werden. Außerdem benötigen Sie zum Einrichten Ihrer Maschinen auf einem Erbpacht-oder unbegrenzte Lease DHCP.

Wie Jobs auf den Arbeitnehmer führen

Dies ist ein interessantes Gebiet und es gibt mehrere gültige Verfahren zur Verarbeitung von Jobs auf den Arbeiter. Hier werde ich nur diskutieren die beiden auf der Hand:

  • Ständig laufende Skript: Ein Skript, sei es ein Shell-Skript oder ein PHP-Skript wird einmal auf den Arbeitnehmer ausgeführt und läuft im Rahmen einer Endlosschleife. Ich habe diese Methode als eine Absturz des Skripts abgezinst und möglicherweise Ihre Mitarbeiter werden nicht mehr ohne irgendeine Art von Intervention führen.
  • Cron basiert Skript-Ausführung: alle x Minuten den Cron-Daemon startet einen Aufruf an das Skript, um Dinge geht. Ohne eine Überprüfung dieser Frage können sich auf viele, viele Kopien Ihrer Arbeitnehmer Skript ausgeführt führen.

Meine Entscheidung war, um mit cron was Anpfiff ein Shell-Skript alle 10 minutes. meiner Shell-Skript führt die folgenden Aufgaben gehen:

  1. Holen Sie sich ein Prozess-Liste und grep dieses für 'php'. Wenn nicht gefunden dann weiter.
  2. Rufen Sie Ihren Job-Code, in meinem Fall wäre dies etwas sein, PHP-basierten
  3. Worker Skript beendet seinen Lauf
  4. Ready to gehen erneut auf die nächste gewünschte Anruf

Meine Bash-Skript sieht ungefähr wie folgt aus:

  #! / Bin / sh
 wenn ps ax | grep-v grep | grep php> / dev / null
 dann
     echo "Job gerade verarbeitet, Ausfahrt"
 sonst
     echo "Job nicht läuft, starten Sie jetzt"
     php yourJobProcessingScript.php
 fi 

Hinweis: Das Echo ist fast völlig sinnlos, sondern können sie helfen, die nächste Person kommt, die entlang zu versuchen und zu bearbeiten.

Das schließt den Aufbau des Arbeitnehmers virtuelle Maschine, schnell, einfach und leicht zu jedem neuen Stück Hardware, das empfangen zu kopieren. Die "Klugheit" des Netzes ist wirklich nicht in der visualisierten OS, seine alle mit dem Code erstellt zur Verarbeitung von Aufträgen, die Job-Konfiguration zu tun, und in bezug darauf, dass der Job läuft, wenn entsprechende (dh wenn der Host inaktiv ist ).

Einrichten von Windows zu initialisieren Arbeitnehmer

Die erste Aufgabe ist die Erarbeitung der Befehl erforderlich, um die virtuelle Maschine aus dem Fenster Befehlszeile ausführen. Wenn Sie schon Speicherort installiert VirtualBox in der Standard-und Sie haben den Namen Ihres Arbeitnehmers GridMachine dann den Befehl Berechnungen Ihre Arbeitnehmer:

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

Allerdings, um das Skript in eine "kopflose" Zustand, den wir verwenden müssen:

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

Dies wird die virtuelle Maschine ohne die GUI zu starten und ermöglichen es, festzustellen, anmutig zu speichern. Das zweite Argument schaltet RDP, damit es nicht Konflikt mit Windows RDP, oder geben Sie eine Nachricht über das Hören auf Port 3389. Der Name der virtuellen Maschine ist Groß-und Kleinschreibung!

Als nächstes müssen wir Windows einrichten zum Auftakt des Arbeitnehmers VM, sobald die Maschine im Leerlauf war. Um dies zu tun (Windows XP) müssen Sie gehen auf Start -> Alle Programme -> Zubehör -> Systemprogramme -> Geplante Tasks wie folgt:

geplante Tasks

Anschließend klicken Sie auf "Geplanten Task hinzufügen", gefolgt von einer benutzerdefinierten Programm hinzuzufügen suchen. Navigieren Sie zu Ihrem VBoxManage Skript und OK klicken. Planen Sie Ihre neue Aufgabe für eine der Optionen (wir werden dies in einer Minute ändern) und weiter. Nach Überspringen der nächsten Bildschirm Windows wird Sie fragen, wer Ihnen diese Aufgabe ausführen möchten, würde ich vorschlagen, entweder "Administrator" oder eine neue privilegierter Benutzer. Denken Sie daran, wir wollen nicht mit dem Standard Notensystem Account auf der Maschine an jeder beliebigen Stelle eingreifen. Klicken Sie auf Weiter und überprüfen show advanced options für diese Aufgabe.

Zum Ende des Laufs Textfeld hinzuzufügen unsere "startvm GridMachine 'string und sicherzustellen, dass nur ausgeführt, wenn kein Häkchen eingeloggt ist links. Besuchen Sie den Zeitplan Aufgabe neben und ändern Sie den Zeitplan Dropdown die Option 'Idle', die Zeit, dir die Maschine würde müßig zu sein wählen, bevor er auf die nächste Registerkarte.

Schließlich deaktivieren Sie die Option, die besagt stoppen die Aufgabe, wenn es ausgeführt worden X Höhe der Zeit, aber sie ticken die Möglichkeit, die Aufgabe zu stoppen, wenn die Maschine nicht mehr im Leerlauf.

Zeitplan

Das war's dann für die Windows-Host-Setup!

Zusammenfassung

In diesem Teil haben wir eine virtuelle Maschine als Arbeitnehmer handeln, sowie die Art und Weise, in der wir aufrufen und ausführen unserer Auftragsbearbeitung Skripte (für mich ein PHP-Skript) festgelegt. Von hier aus schauen wir uns, wie Sie unsere Kopien von Windows zu starten der virtuellen Maschine in Headless Mode, wenn der Computer im Leerlauf befindet, und speichern ihren Zustand, wenn der Benutzer wieder Gebrauch der Maschine. Hoffentlich an dieser Stelle Sie sehen wie einfach es ist die Einrichtung eines solchen Systems sind und Juckreiz zu bekommen einige Experimente gehen selbst ist!

Nächste Zeit

In Teil 4 werden wir die Verwendung von Tools werden schauen, um sicherzustellen, dass Sie die aktuellste Version des Codes und Datenquellen, so dass erhaltenen Ergebnisse sind immer up-to-date mit den neuesten Geschäftsinformationen und Logik.

Office Grid Computing mit Hilfe Virtuelle Umgebungen - Teil 1

Von Steven Lloyd Watkin , Freitag 4. Dezember 2009 23.23 Uhr

Einführung

Ich arbeite in einer Firma, wo wir laufen viele Batch-Jobs Verarbeitung Millionen von Datensätzen der Daten jeden Tag und ich habe vor kurzem Nachdenken über all die Maschinen, und sitzen um jeden jeden Tag nichts zu tun, für mehrere Stunden. Wäre es nicht gut, wenn wir diese Maschinen verwenden können, um Systeme zu stärken die Rechenleistung unserer? In dieser Reihe von Artikeln werde ich Amt Blick auf die potenziellen Vorteile der Verwendung eines Gitters mit virtualisierten Umgebungen.

Als PHP -Entwickler Ich werde, benutzerfreundlichen Tools, die ich benutze jeden Tag nämlich, Linux mySQL , PHP, VirtualBox und Subversion (SVN). Aber ich hoffe, dass diese Führung auch auf andere Sprachen und Technologien ebenso gut anpassen.

Die Lösung, die ich bieten wird sehr locker von der Art der Verarbeitung würden wir müssen aber erreichen, wie ich die Dinge für Einfachheit ändern werde, oder um weitere interessante Nutzungsszenarien produzieren, wo dies nicht durch den gesamten Artikel wahr beruhen.

Diese virtualisierten Umgebungen auf Windows-Rechnern laufen, da dies, was die Mehrheit der Ämter ausführen. Die Verarbeitung, die Büromaschinen sollte nicht mit Personal stören bei der Nutzung dieser Maschinen, dies sollte erfordern keine Wartung an der Maschine, und leicht einsetzbare neue Maschinen sobald sie verfügbar sind. Außerdem sollten sich neue virtuelle Maschinen benötigen keine zusätzliche Konfiguration wie diese reduziert die Skalierbarkeit und Benutzerfreundlichkeit bei der die Grid-System erweitert werden kann.

Warum Bereitstellen einer Office-Computing Grid?

Erstens: Sie können sich denken, warum nicht einfach ein Cloud-Computing-Ressource wie EC2-Plattform Amazon ? Nun, die Gründe könnten mehrere, zum Beispiel:

  • Sie werden nicht anvertrauen bestimmte Daten zu einem Cloud-Computing-Umgebung
  • Sie können nicht bestimmte Daten in einer Cloud-Computing-Umgebung aus rechtlichen Gründen (z. B. Daten Verlassen des Landes), die möglicherweise aus rechtlichen Gründen, zB NHS Datensätze.
  • Sie möchten Ihre Processing Units zu schließen und die volle Kontrolle über die Hardware zu
  • Sie haben nicht die Projektmittel auf Wolke Instanzen laufen
  • Ihr Büro hat keine Verbindung zum Internet und damit seine nicht möglich, eine Wolke Ressourcennutzung
  • Sie mögen es nicht regen, empfehlen Wolken regen deshalb behalten Sie gut weg

Ich bin sicher, die Liste ließe sich fortsetzen, aber ich denke das ist genug für jetzt.

Vorteile eines Office Computing Grid

Nun, lässt dies einige Mathe (und im wahren Stil lässt Physik machen einige gängigen Annahmen). Angenommen, Sie haben große bullige Verarbeitung Server mit 100 Arbeitsplätzen pro Tag. In Ihrem Büro sind 50 Maschinen, die im Leerlauf 16 Stunden sind ein Tag haben, ist jede dieser Maschinen 10% so stark wie Ihr bulligen Verarbeitung abzubrechen. (Alle Ergebnisse sind hier zu unterschätzen Leistungssteigerung gerundet).

Also, Maschinenbau * 10% Leistung * 2 / 3 der Zeit = 0,067, dh 1 Desktop Verarbeitung im Idle-Zeit konnte 1 Prozess 6 volle Aufträge pro Tag.

Wenn Sie nun diese Skala bis es Desktops dauert 15 müßig, tut Prozess so viele Arbeitsplätze pro Tag als Haupt-Verarbeitung-Server.

Also in unserem Büro vorgeben von 50 Maschinen konnten wir bis zu erhöhen unsere Rechenleistung von 1 bis 4 Server voll Verarbeitung Server, oder wir könnten Verarbeitung 400 Arbeitsplätze pro Tag statt 100.

Beachten Sie, für keine Investitionen in neue Hardware Ihr Unternehmen hat gerade steigerte seinen Stapelverarbeitung Kapazität 4 mal! Potenziell du wirst deine Stromverbrauch erhöhen, aber von den meisten Büroumgebungen I der Maschinen haben in der Regel über Nacht sowieso links, so könnte man dies als eine grüne Initiative zu sehen.

Weitere Vorteile bedeuten auch, dass Investitionen in neue (oder aktualisiert) Verarbeitung Servern kann sich verzögern, wenn Ihr Büromaschinen ausreichend sind und dass, wie Sie verbessern die Leistung Ihres Büromaschinen Ihr Büro Raster wird mächtiger automatisch.

Technologies

Was Sie brauchen? (Oder genauer, was habe ich benutzt):

  • Idle Büromaschinen (in meinem Fall einen Ersatz alter Windows XP Laptop)
  • VirtualBox (oder einem anderen Virtualisierungs-Client-Software)
  • Eine virtuelle Maschine mit PHP, mySQL running läuft eine abgespeckte OS, ich rufe diese meine LIMP Server:)
  • Jobs ausgeführt
  • Job-Server (kann eine andere virtuelle Maschine irgendwo)

Typische Jobs

Die Arten von Jobs, die dieses System entwickelt, um laufen wird, ist wie folgt:

  • System erhält eine Liste von Daten, auf die wir benötigen, um Spiel und Ergebnisse zurück
  • Passende umfasst die Überprüfung / Benutzer mehrere (relativ statisch) Datenquellen
  • Ergebnisse aus den Datenquellen kann weitere Validierung, Zusammenführung, Prüfung von zusätzlichen Datenquellen in Reaktion auf Ergebnisse
  • Die Daten werden mit passenden Datensätze zurückgegeben, vollständig validiert und verarbeitet
  • Jeder Datensatz in einem Job ist unabhängig von den übrigen

Also im Grunde sind wir bei laufendem Arbeitsplätze, die eine Mischung aus Datenbankabfragen und einige Zahlenverarbeitung, ein recht typisches Szenario in einem geschäftlichen Umfeld erfordern suchen.

Grid-Lösungen sind nicht nur vorteilhaft für die Verarbeitung von Aufträgen von diesem Typ. Grundsätzlich kann jedes Verfahren, das in unabhängige Einheiten aufgeteilt werden kann parallel ausgeführt werden. Dieses wikipedia für Beispiele und weitere Informationen: Grid-Computing , aber ein paar berühmte Beispiele sind Seti @ Home und BIONC . Es gibt Rahmenbedingungen für den Betrieb Computing-Grids, und diese sind auch diskussionswürdig.

Was werden wir erreichen?

Bis Ende diesen Artikel Ich hoffe zu zeigen, dass die Bereitstellung eines Büros Gitter muss nicht enorm teuer oder zeitaufwendig sein. Ich werde zu diskutieren:

  • Einrichten des Job-Control-System, Job-Konfiguration
  • Schaffung eines geeigneten Verarbeitung virtuellen Maschine
  • Wie man das System auf einem Windows-Rechner
  • Gewährleistung Sie sind mit den neuesten Code und Daten
  • Deployment und Benchmarking
  • Vorausschauend

Ich werde Gebäude (ok ich gebaut, dann schrieb dieser) eine Beispiel-Anwendung, die Konzepte auf einem lokalen Computer mit Windows XP und mein 'GridMachine "virtuellen Maschine zu testen. Mein Job-Control-Server ausgeführt wird mein Haupt-Maschine, die Fedora 11 .

Dies ist in keiner Weise soll ein voll funktionsfähiges System robust, demonstrieren seine bedeutete eher eine Demonstration und Diskussion zeigt, dass diese Dinge in einer recht kurzen Zeit und mit geringem Aufwand erreicht werden kann. Bitte zögern Sie nicht senden Sie mir Ihre Kommentare, Berichtigungen oder Verbesserungen und ich werde mein Bestes tun, um diesen Artikel aktualisiert, um Spiel zu halten.

Nächste Zeit

In Teil 2 werde ich Systemstart, indem Sie die Job-Kontrolle, und prüfen, wie Arbeitsplätze ausfallen sollte so konfiguriert werden, um zu erreichen, ohne größte Menge der Verarbeitung gleichzeitig sicherstellen, dass jeder Job verarbeitet wird.

Office Grid Computing mit Hilfe Virtuelle Umgebungen - Teil 2

Von Steven Lloyd Watkin , Freitag 4. Dezember 2009 23.23 Uhr

Einführung

Ich arbeite in einer Firma, wo wir laufen viele Batch-Jobs Verarbeitung Millionen von Datensätzen der Daten jeden Tag und ich habe vor kurzem Nachdenken über all die Maschinen, und sitzen um jeden jeden Tag nichts zu tun, für mehrere Stunden. Wäre es nicht gut, wenn wir diese Maschinen verwenden können, um Systeme zu stärken die Rechenleistung unserer? In dieser Reihe von Artikeln werde ich Amt Blick auf die potenziellen Vorteile der Verwendung eines Gitters mit virtualisierten Umgebungen.

In Teil 1 habe ich einen Überblick über das System und Technologien I Büro einen Raster wird mit Hilfe schaffen sowie diskutiert einige der potenziellen Gründe, warum Sie wollen würde.

Job Control

Wenn du gehst zu laufen Arbeitsplätze dann wirst du einen Weg, sie zu verwalten müssen. Ihre Job-Control-System (auf dem Job-Server) muss wirklich gut aus, noch bevor Sie versuchen, ein Büro Netz laufen gedacht. Also erstens, was sind die Aufgaben für eine Job-Control-System:

  • Verteilen Sie Arbeitsplätze auf Anfrage von Arbeitnehmern
  • Erzähl Arbeiter, welche Art von Jobs ausgeführt
  • Track Jobs
  • Stellen Sie sicher, dass die Arbeitsplätze nur einmal ausgeführt
  • Geben Sie Job-Daten für die Arbeitnehmer, oder wenigstens sagen, wo um es zu bekommen

Das System muss auch erweiterbar sein, eine Lösung, die jetzt in einem einzigen Fall arbeitet kann verlängert werden, um verschiedene Arten von Jobs ausgeführt wie das Unternehmen sieht den Wert in einem Raster Lösung sein. Zum Beispiel, Arbeitsplätze können Prioritäten zu gewinnen, kann mehr als ein Job-Typ bestehen (dh mehrere Code-Basen), eventuell kann man sogar laufen verschiedene Arbeitnehmer Maschinen, die für jede Art von Arbeit optimiert sind (obwohl das bedeutet Abkehr von der "allgemeinen Arbeitnehmer 'Idee). Versuchen Sie immer an die Zukunft denken bei der Entwicklung von Systemen, eine kurzfristige Sicht-bis langfristig Frust und erhöht die Entwicklungszeit führen kann.

Job Server

Wir werden irgendwo müssen unsere Arbeitsplätze Kontrolle aus, das einzige System in Ihrem Netz, die eine feste Resource Locator hat sein sollte, dass eine IP-Adresse, Hostname, URL (mit internen DNS), etc. Dies ist da die Arbeitnehmer müssen wissen, wo sie Arbeit suchen, müssen Arbeitnehmer vor der Job-Control-System (nicht der Job-Control-System finden die Arbeiter) zu finden.

Der Job Server selbst hat nicht wirklich eine komplizierte Aufgabe (in ein Basis-System sowieso), muss er eine Liste von Arbeitsplätzen zu speichern, zu verteilen Arbeitsplätze erhalten Ergebnisse und anschließend speichern Sie sie zum späteren Abruf. Wie diese Teile (wie "Hand Jobs") definiert werden kann, sehr einfach. Später können wir erweitern das System eine Administrationsoberfläche hinzufügen, bearbeiten, löschen, auszusetzen Arbeitsplätze umfassen, aber das ist jenseits dieser Übung.

Es gibt keinen Grund, dann, dass Ihr Job Server konnte nicht einer virtuellen Maschine läuft innerhalb Ihres Processing Server werden, sofern es nicht zu viele Ressourcen Abfluss von ihm. Der Job Server jedoch braucht eine hohe Verfügbarkeit, wenn es nach unten geht an einem Freitag Abend wirst du ein ganzes Wochenende der Verarbeitung verloren sind, potentiell kostet Sie ein paar Wochen im Wert von Verarbeitungszeit (wann Sie Ihre wichtigsten Processing Server im Vergleich zur alleinigen) . Vielleicht möchten Sie in Erwägung ziehen, Ihren Job Server auf einem load balanced Umfeld für hohe Verfügbarkeit.

Basic Setup

Der grundsätzliche Aufbau für unser Job-Server) bestehen, was ich rufe einen meiner LIMP Servern (also Li nux, m ySql, P PS. Der Code läuft auf thea Arbeitnehmer tatsächlich herauszufinden, was Arbeitsplätze kann es durch die Interaktion mit mit Job-Control-System Datenbanken laufen. Später konnten wir eine Web-Service und sogar die Hand aus, anstatt Arbeitsplätze der Arbeitnehmer nicht die harte Arbeit an sich, sondern für jetzt wollen wir weiterhin mit dem KISS-Prinzip (Keep It Simple, Stupid!).

Also lasst uns schaffen drei mySQL -Tabellen, um Arbeitsplätze behandeln. Diese werden "Arbeitsplätze werden`, `jobRecords` und `jobResults`.

Jobs Tisch Hier verwende ich SQL Buddy eine große kleine Alternative zu phpMyAdmin , nur weil seine leichter CentOS installieren (für andere zu sehen: 10 Great Alternativen zu phpMyAdmin )

Diese Tabelle besteht aus 5 einfachen Feldern,

  • ID: Benennen Sie die Aufgabe
  • Name: Konnte IDs eine Kundennummer oder eine beliebige Anzahl von anderen
  • Status: Sie müssen wissen, wo die Arbeit an, z. B.
    • 0: Nicht gestartet
    • 1: Aufgenommene
    • 2: Abgeschlossene
  • started_by: Wer damit angefangen den Job? Dies ist nicht ganz notwendig ist aber ein nice to have. Ich würde vorschlagen, Tracking Arbeiter durch ihre IP-Adresse in Ihrem Netzwerk
  • started_at: Wann hat der Arbeitnehmer Beginn der Arbeit? Durch die Verfolgung Jobs, die nicht innerhalb von X Höhe der Zeit wissen wir, müssen wir holen den Job noch einmal und starten Sie die Verarbeitung durch einen anderen Arbeitnehmer abgeschlossen haben. Die Arbeitnehmer könnten aufhören Verarbeitung / go offline für eine beliebige Anzahl von Gründen, Stromausfall, Absturz, Netzwerk Verlust, etc.

Es ist leicht, wie diese Tabelle mit ein paar zusätzliche Felder erweitert werden könnte, um für die Statistik-Tracking, eine Zielzeit Spalte, um zu sehen, wie lange der Job, nahm einen Zähler, um zu sehen, wie viele Arbeitnehmer und nahm die Arbeit (natürlich muss dies auf eher erlauben 1), Job-Priorität, kann die Liste weiter und weiter. In komplexeren Szenarien Job wäre es möglich, festzulegen, wie viel Speicher die Arbeiter würden den Zugang zu müssen (und deshalb nur geeignete Arbeitnehmer), oder auch, welche Art von Arbeitnehmer erforderlich wäre.

Fügen wir ein paar Beispiel-Jobs:

Beispiel Arbeitsplätze

Die folgende Tabelle ist wieder ganz einfach zu verstehen, das sind unsere Aufgabe Datensätze. Sie entsprechen den Hauptaufgaben Tabelle sind nach einer Spalte stehen `jobs_id`. Das Make up dieser Tabelle hängt sehr stark von den Daten, die Sie benötigen, um Ihre Mitarbeiter liefern, können machen ein sehr einfaches Beispiel, wo wir vier Säulen:

  • ID: ID des Datensatzes
  • Name: der Name
  • Adresse: Person der Adresse
  • jobs_id: Der Job-ID, die dieser Datensatz verknüpft

Die dritte und letzte Tisch besteht aus einer Ergebnistabelle, hat es ähnlich machen wie unsere Aufzeichnungen Tisch, und mit der Zugabe von einigen Spalten könnte ein Teil der Datensätze Tabelle werden:

  • job_record_id: Link das Ergebnis der Arbeit Tisch
  • Ergebnis: Das Ergebnis Daten

... Und das ist alles, was Sie für Job-Kontrolle! (Wenn auch auf einem sehr einfachen Niveau) In meinem Fall habe ich an einen anderen Tisch, wo meine Daten zu verarbeiten befand bin spitz, aber das könnte genauso gut eine Datei, Parameter zur Simulation Code ausführen, you name it.

Auswählen eines Jobs

Wie bereits erwähnt, werden die Arbeiter unserer Job-Management für uns tun jetzt, so brauchen wir wirklich wollen, ist einen Job zu finden, dass die Verarbeitung braucht und nutzen Sie die Informationen. Wie würden wir das tun? Nun holen unsere Aufgabe Auswahlkriterien und suchen Sie nach Jobs, die in SQL habe ich die folgenden:

  1. Nehmen Sie alle Jobs, die nicht als vollständig, aber aus unserer Arbeiter sind markiert und zurückgesetzt ihnen (Ersatz __ME__ mit einer Kennung, einfachste wäre IP-Adresse):
      UPDATE `Jobs` SET `Status` = 0 WHERE `Status` = 1 AND `started_by` = __ME__; 
  2. Mit unserem Job Selektionskriterien, wählen Sie einen Job und erzählen die Steuerung, dass diese Arbeitnehmer mit ihm zu tun:
      UPDATE `Jobs` SET `Status` = 1, "started_by` = __ME__, `started_at` = NOW () WHERE `Status` = 0 oder
     (`Status` = 1 AND `started_at`> DATE_SUB (NOW (), INTERVAL x Stunde)) ORDER BY `id` ASC; 

    Durch Greifen Arbeitsplätze, die nicht in X-Ergebnisse viel Zeit wir dafür, dass alle Arbeitsplätze im Falle eines Arbeitnehmers abstürzt oder geht AWOL ausgeführt sind zurückgekehrt.

  3. Weiter greifen die Arbeitsplätze Details durch die Datensätze selbst verfolgt:
      SELECT * FROM `Jobs` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Nach Abschluss der Arbeit setzen wir unser Ergebnis Aufzeichnungen und markieren Sie die Aufgabe als abgeschlossen. Denken Sie daran, wie Arbeitsplätze suspend / resume jederzeit erlauben einige Robustheit in Ihrem Skript. Es könnte sein, dass die Aufgabe auf halbem Weg setzt durch die Aktualisierung der Job-Control-System, so überprüft die Anzahl der Datensätze in einem Job und die Anzahl der Ergebnisse zurück an den Job-Control-System gespeichert wäre eine weise Entscheidung.

Darüber hinaus wird veranschaulicht, wie während dieser Arbeitsplätze werden kann gewählt wirklich und leitete aus einer SQL-Abfrage sollte Frame abstrahieren Ihre Arbeit kontrollieren, so dass, wenn Sie beschließen, wechseln Sie mit einem Web-Service, eine Datei-basierte System XML , oder jede andere Anzahl der Systeme, es wird keinen Einfluss auf den Code oben ist.

Job-Konfiguration

Der nächste Aspekt ist Aufgabe Größe und Konfiguration. Durch das Spiel mit Job-Konfiguration können wir schlagen eine exzellente Balance zwischen Geschwindigkeit, Prozess-Replikation und Zuverlässigkeit. Nehmen Sie ein paar ofa Szenarien:

  1. Jobs nehmen Sie 1 Tag pro zu laufen: Dies bedeutet, dass Ihre Mitarbeiter Tage benötigen 15 bis Arbeitsprozeß jede (Sie erinnern sich 10% der Energie für 2/3rds der Zeit). Dies ist eindeutig nicht ein weiser Konfiguration ist es Ihre Aufgabe Größe viel zu groß! Es würde mindestens die doppelte Zeit, einen Job verarbeitet werden, sollten die ersten Arbeiter gehen AWOL erhalten (Zeit zu holen, dass es nicht ein Ergebnis plus Wiederaufarbeitung rechtzeitig zurückgegeben). In einer idealen müssten Sie mindestens einen vollen Job leicht über geräumt Ende jeder längerem Stillstand ist auf diese Weise behalten Sie die Jobs tickt und im schlimmsten Fall einen Job würde zwei Tage dauern bis der erste Prozess sollte abhanden kommen.
  2. Jobs nehmen 1 Minute laufen: Dies bedeutet, dass Ihre Mitarbeiter Minuten dauern etwa 15 bis Joblauf jeder. Dies mag zunächst scheinen ideal, gewinnen Sie zusätzliche Arbeit Verarbeitung während der Mittagspause, Kaffeepausen, Meetings, etc diesem Szenario legt Stamm auf andere Bereiche des Systems und stellt seine eigenen Probleme. Zum Beispiel wird zunächst das Setup / Bearbeitungszeit Verhältnis geht nach rechts unten gehen, daher verlieren und effizientes System. Ihr Netzwerk wird ständig Streaming Job-Informationen zu den verschiedenen Arbeitern frustrierend Personal dong ihrer täglichen Arbeit sind. Sie werden auch mehr Belastung für Ihre Auftragsbearbeitung Server gestellt, wie es austeilen viele, viele kleine Arbeiten auf einer regelmäßigen Basis hat. Schließlich, in dieser Situation, wenn Ihr Job Server ausfällt wirst du eine riesige zurück Protokoll nicht abgeschlossener Arbeiten während größere Aufgaben könnten erstellen Weiterverarbeitung völlig ahnungslos, dass der Job Server war in Schwierigkeiten.

In der Realität wird es niemand ideale Konfiguration für Ihr Netz eingerichtet werden, hängt viel von den verfügbaren Ressourcen, die Art der Arbeit, Job Bearbeitungszeit Anforderungen, Netzwerkfähigkeit, und so weiter. Doch einige Richtlinien wäre:

  • Größe Arbeitsplätze, so dass jeder Arbeiter kann durch mindestens 3-4 Arbeitsplätze in einem Zeitraum von 15 Stunden (wahrscheinlich die längste Zeit im Leerlauf) zu erhalten
  • Spielen Sie mit dem Job Größe, so dass Rüstzeit wird ziemlich unbedeutend, um die Verarbeitungszeit (unter Berücksichtigung der oben genannten Stelle) verglichen.
  • Wenn ein Job nicht in doppelten runden das viel Zeit (vielleicht auch weniger), die Sie erwarten, dass sie vollständig davon ausgehen, dass es seine gegangen AWOL und startet die Bearbeitung durch einen anderen Arbeitnehmer. Das heißt, Sie können warten müssen, bis zu dem Dreifachen der normalen Länge von ein Job für sie zu vervollständigen (möglicherweise mehr, wenn die anschließende Arbeit ausfällt). Sie können zu verkürzen, aber darauf achten, nicht zu verringern Grundlage es zu viel, wie Sie vielleicht anfangen zu duplizieren Verarbeitung Aufgaben regelmäßig.
  • Jobs sollten unabhängig von außerhalb Anforderungen so weit wie möglich. Der Job-Server, zum Beispiel sollte nur am Anfang und am Ende jedes Auftrags kontaktiert werden.
  • Nicht zu sättigen Ihr Netzwerk, das zwei negative Auswirkungen haben wird, wird Sie tagsüber Personal zu finden über das Netzwerk frustrierend und Probleme können mit Anschlüssen Zeitüberschreitung ein Problem, das nur noch zunehmen wird, wie Sie Ihren Rastermaß erlebt werden.
  • Stellen Sie sicher, Arbeitsplätze können auf Ihre Mitarbeiter führen. Wenn Arbeitsplätze zu Erinnerung werden Intensiv-oder Festplattenspeicher intensive Beschäftigung startet abgebrochen und das einzige, was Sie feststellen, ist ein Tropfen auf Zahl der Arbeitsplätze ohne wirklichen Grund, warum verarbeitet.

Der Einreichung eines Jobs

Bei der Vorlage der Ergebnisse einer Aufgabe es ist wichtig zu überprüfen, dass die Ergebnisse nicht durch einen anderen Arbeitnehmer eingereicht worden, vor allem, wenn der aktuelle Arbeiter wurde es einige Zeit.

Wenn die Ergebnisse vorgelegt werden sicherstellen, dass die Anzahl der Ergebnisse die Anzahl der Datensätze Spiele im Job.

Wie bereits erwähnt, und kann nicht genug betont werden, bauen die Fehlertoleranz in Wiederfinden und Ergebnisse Unterwerfung. Die Arbeiter können (und wahrscheinlich wird) in den Suspend-Modus gehen am unpassendsten Zeiten und dies muss gesorgt werden. Auch noch einmal abstrahiert weg Ihre Ergebnisse Einreichung hilft sorgen für zukünftige Änderungen an Ihrem Job-Control-System viel einfacher zu handhaben.

Zusammenfassung

In diesem section wir haben, was eine Job-Control-Server tun muss und wie man ein sehr einfaches System einrichten bekommen aussah. Wir diskutierten, wie man einen Job aus der Steuerung abgerufen und wie man am besten Jobs konfigurieren, um das Beste für Ihr Büro unserer Grid-System. Zum Schluss einen Punkt oder zwei auf die Vorlage zurück an den Job-Control-Server vorgestellt wurde.

  • Ein Job-Control-Server verwaltet Arbeitsplätze und sorgt dafür, dass alle Arbeiten abgeschlossen sind Einheiten
  • Durch Abstraktion Ihren Job wählen / Ergebnisse Vorlage können wir die Technologie der Kontroll-Server ohne viel Probleme ändern
  • Konfigurieren Sie Ihren Arbeitsplätzen, um sicherzustellen, dass sie schnell und effizient, ohne zu viel Druck auf die Netzwerkinfrastruktur und ohne doppelte Verarbeitung Aufgaben regelmäßig ausgeführt werden.
  • Achten Sie darauf, Fehlertoleranz und Fehler checking bauen in Ihre Routinen können Arbeitnehmer Suspend-und Resume und die ungünstigsten Zeiten. Denken Sie daran, wenn die Ergebnisse bereits von einem anderen Arbeitnehmer eingereicht worden.

Nächste Zeit

In Teil 3 werden wir schaffen unsere virtuelle Maschine einrichten und unsere Windows-Maschinen von Arbeitern zu idle-Zeit.

Office Grid Computing mit Hilfe Virtuelle Umgebungen - Teil 5

Von Steven Lloyd Watkin , Freitag 4. Dezember 2009 11.03 Uhr

Einführung

Ich arbeite in einer Firma, wo wir laufen viele Batch-Jobs Verarbeitung Millionen von Datensätzen der Daten jeden Tag und ich habe vor kurzem Nachdenken über all die Maschinen, und sitzen um jeden jeden Tag nichts zu tun, für mehrere Stunden. Wäre es nicht gut, wenn wir diese Maschinen verwenden können, um Systeme zu stärken die Rechenleistung unserer? In dieser Reihe von Artikeln werde ich Amt Blick auf die potenziellen Vorteile der Verwendung eines Gitters mit virtualisierten Umgebungen.

In Teil 4 sahen wir uns im Umgang mit Werkzeugen, um sicherzustellen, dass wir die neueste Version des Codes und Datenquellen, so dass erhaltenen Ergebnisse sind immer up-to-date mit den neuesten Geschäftsinformationen und Logik.

Pre-Deployment

Vor der Bereitstellung Ihrer Grid-System, wenn es eine Sache gibt Sie und eine Sache allein es ist Ihre aktuelle Benchmark-System! Egal was Sie Kollegen darüber, wie viel zusätzliche Arbeit auf Ihrem System tun, wenn Sie sagen, diese Zahlen eine Sicherungskopie Ihrer garantiert nichts werden müssen. Also,

  • wie viele Datensätze können Sie derzeit Prozess? Pro Tag? Pro Stunde?
  • Wie lange dauert es normalerweise, sich umzudrehen einen Job?
  • Wie viel Kapazität haben Sie?

Es gibt auch weitere Fragen auf:

  • Wenn Ihr Processing Server (oder einer Ihrer Verarbeitung Server) ausfällt wie wird diese Ihre Fähigkeiten beeinflussen, werden Sie gelähmt sein?
  • Welche Vorteile erhoffen Sie sich / erwarten von einem Grid-System zu bekommen?
  • Sind Ihre Büromaschinen lauffähig die Arbeitsplätze?
  • Sind Ihre (oder kann man Arbeitsplätze umgewandelt werden), um in diesem Stil laufen zu arbeiten?

Der letzte große Punkt ist, um Ihre Zeit auf keine großen Änderungen wie diese zu nehmen. Aktualisieren Sie Ihre Verarbeitung Code funktioniert mit Hilfe der neuen Methodik, Benchmark erneut. Eventuell Einrichtung Ihrer Verarbeitung Server zu einem virtuellen Maschine ausgeführt, nachdem alle Ihre Verarbeitung Server wird nur ein weiterer Arbeiter (nur ein sehr mächtiger relativ) sein. Lassen Sie das neue Verfahren zu regeln.

Deployment

Mein Vorschlag wäre, Pop Wochenende in die Office One führen alle Installationen und Setup. Tun Sie dies kurz vor vierzehn Tagen Urlaub und lassen so andere arme Kerl Konsequenzen befassen sich mit der ... vielleicht nicht ...

Bereitstellung für ein System wie dieses muss langsam sein. Obwohl es sich relativ einfach einzurichten diesem System wird Ihre gesamte Büro-Infrastruktur (auch die digitale Fassung) beeinflussen. Erstens, ausrollen, ein paar Maschinen zu einem Zeitpunkt, den Netzwerkverkehr überwachen, wie die Arbeiter-Hosts ausführen von Tag zu Tag. Möglicherweise müssen Sie Ihre Job-Konfiguration als Antwort auf Ihre Erkenntnisse zu ändern.

Sobald das System mit wenigen Maschinen abgesetzt hat (sagen wir mal 10% aller Büromaschinen, dh 5) halten die Überwachung des Netzwerkverkehrs und Host-Maschine performance. Weiter Benchmark wieder, sollten Sie jetzt Verarbeitung 33% mehr Arbeitsplätze als die erste Benchmarks. Prüfen Sie dies so ist, oder dass Sie zumindest in diesem Baseballstadion. Falls nicht, untersuchen, was los ist, bevor Sie fortfahren. Wiederholen Sie diesen Zyklus, bis Sie glücklich sind alle Büromaschinen, ohne zu töten individuellen Leistung der Maschine oder Schleifen Ihrem Netzwerk zum Erliegen läuft.

Zu allen Zeiten Benchmarking zu halten, auch wenn alle Implementierungen vorgenommen werden. 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: Fundamentals – Review

By Steven Lloyd Watkin , Saturday 28th November 2009 10:42 pm

My employer recently paid for a group of us developers to take the Zend Framework: Fundamentals course, here I'll summarise my thoughts and opinions on the course for others. For those looking to save time, here's my summary:

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. For those who have spent time looking at the framework and have followed one or two tutorials this course does not offer much beyond.

Hintergrund

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've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

Über den Kurs

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). The time is spent going through a set of slides provided by Zend with discussion at any time. You can use a microphone to talk to the instructor, but to be honest I didn't see anyone use anything more than the chat window. In addition a VMWare Ubuntu machine is provided that has example code and projects set up an a trial version of Zend Studio. The course leader talks to attendees either over an integrated VoIP solution, or you can dial in using one of the many worldwide dial in numbers.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. Personally I felt that providing the code or each app and then asking us to develop what was essentially a copy alongside didn't really provide a good learning experience. I would have preferred to develop an application similar, but not identical. to the example application with the benefit of having a guide to refer to. Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. 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. Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

The course style was informal, allowed for feedback and collaboration between attendees and the instructor. 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. He was clearly someone who used the framework on a regular basis rather than someone who is taught to teach the course, I liked the 'real world' experience in that respect.

Overall Feeling

In some ways I found the course a waste of time, in others it was very handy. Hopefully I'll get my reasons across clearly, and maybe provide some food for thought or useful feedback (knowing me this is unlikely!).

For myself this course was aimed at too low a level. Having gone through the quickstart guide, read Rob Allen's Zend Framework in Action, and worked with the framework a little I didn't really get anything too much. I would of liked the course to pick up from the end of the quickstart and develop additional skills.

That said, the course title does clearly state “Zend Framework: Fundamentals ” and in that aspect the course achieves what it sets out to do. 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.

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 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? :) ). Last but not least you also get a nice certificate from Zend to say that you attended the course (albeit by email).

Zend Framework Zertifizierung

This was one question that kept coming to mind during the course, would it prepare me for the certification? The quick, easy is a resounding No . The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

Zusammenfassung

Given everything I've written above, I'll summarise everything in two easy bullet points:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. The course seems to generate interest and enthusiasm for the framework amongst developers.
  • Used the Zend Framework: While it was nice to shore up some of the very basics I felt the time, effort, and funds to take the course could of been better spent elsewhere. It will be nice to see Zend create a new higher level course to take developers to the next level – at least to the standard of certification and beyond. For that I would sign up immediately.












Panorama Thema von Themocracy

9 Besucher jetzt online
7 Gäste, 2 Bots, 0 Mitglieder
Max Besucher heute: 11 um 12:07 Uhr UTC
Diesen Monat: 26 am 2011.07.05 00.35 UTC
Dieses Jahr: 130 an 28-03-2011 10.40 UTC
Insgesamt: 130 an 28-03-2011 22.40 UTC