Frage

Ich schreibe eine verteilte Forschungsanwendung mit Akka mit einem einfachen Master- und mehrerer Arbeitertopologie, mit dem Ziel, an einem internen Cluster von Knoten oder innerhalb einer Corporate Cloud bereitzustellen. (Wenn Akka 2.1 verfügbar ist, werde ich mit der Clustering-Unterstützung untersuchen)

meine frage: Wie ist der einfachste / beste Weg, um meinen Code bereitzustellen (in Form eines Ordners, der einen Akka-Microkernel enthält) auf jeden Knoten, starten Sie es auf, lass es tun, lass es ding sein, dann zerreißen und wiederholen Sie sie nach Bedarf?

  • Das Mikrokernelverzeichnis und die ausführbare Datei sind für jeden Arbeiterknoten identisch und nur wenige MB. Config enthält die IP eines Meisters, mit dem sie sich verbinden.
  • Ich möchte den Meister manuell starten.
  • Resilienz ist kein Anliegen, da dies keine geschäftskritische Anwendung ist, sondern ein privates Forschungsproblem.
  • Es werden keine wichtigen Daten lokal an den Arbeitnehmern gespeichert.
  • Nachdem die Anwendung vollständig ist, möchte ich möglicherweise eine andere Anwendung neu einsetzen, ohne die Knoten abzureisen (z. B. mit der Raffination der Codebase).

update: hat herausgefunden, dass Condor-Knoten, um Jobs zu unterstützen, die im Ganzgerät-Modus läuft. Dies sollte Unterstützung des Microkernel als Job unterstützen, und müssen nur sicherstellen, dass die Arbeiter, wenn die Arbeiter ordnungsgemäß ausgehen, wenn Sie fertig sind.

update 2: Jemand erwähnt, den Zookeeper erwähnt hat, ist möglicherweise gut geeignet. Würde die Eingabe von jedem mit Erfahrung freuen.

War es hilfreich?

Lösung

Hier sind einige Ideen. Ich habe keine Erfahrung mit Akka, aber ich weiß von Grid-Computing und Bereitstellung.

    .
  1. Verwenden Sie ein vorhandenes Netzwerkzeug, z. B. http://www.gridgain.com (welche habe eine GPL-Version). Ich habe auch von Menschen gehört, die ein Gitter mit http://www.hazelcast.com/

  2. Verwenden Sie ein Cloud-in-Box, wie AirFrame, http://www.pistoncloud.com/press-release/piston-cloud-launches-free-openstack-distribution/ . Ich bin sicher, dass es andere geben muss.

  3. AirrFrame kommt mit Cloud-Gießerei, glaube ich, aber Sie können es direkt ansehen: https:// micro.cloudfoundry.com/ aber nicht sicher, wie diese Version skaliert.

  4. Rollen Sie Ihr eigenes System, installieren Sie in ein VM-Bild, klonen Sie ihn auf Ihre anderen Knoten.

  5. Wenn es darum geht, Ihre eigenen zu rollen, könnten Sie es wie folgt tun, was einem bereits entwickelten und gut entwickelten und funktionierenden Kenntnissen ähnelt.

    • Erstellen Sie Ihre Anwendung mit MAVEN, mit welchen Bibliotheken Sie mögen.

    • Die gebauten Binseln in den Sonatype Nexus gedrückt.

    • Erstellen Sie einen benutzerdefinierten Launcher, der die MAVEN-Koordinaten eines Moduls erhielt. Mein Laucher prüft zunächst einen lokalen Maven-Repo für die Gläser, wenn sie nicht existieren, dann lädt sie von Nexus herunter. Dann konstruiert es einen Klassenpfad aller Gläser im transitiven Abhängigkeitsbaum. Dann erstellt es einen neuen Klassenlader mit dem neuen Klassenpfad und läuft die Hauptklasse über den Klassenlader.

    • Schreibe einen Dienst mit Java-Service-Wrappe oder ähnliches, das beim Start, welche Version des Codes, um einige MAVEN-Koordinaten und den Namen einer Hauptklasse von Config zu lesen, überprüft. CONFIG könnte eine Datei auf Netzwerklaufwerk, vorkonfigurierter URL oder sogar Zookeeper sein. Sie übergibt dies dann an den Launcher, der den Code herunterlädt und ausgeführt wird.

    • Installieren Sie diesen Dienst auf vielen Maschinen, entweder manuell oder über ein Klonieren eines VM.

    • profit!

    Ich erwähnte AKKA nicht speziell, da das größte Teil Ihres Problems ist, wie der Code auf Multiple-Knoten läuft.

    Die benutzerdefinierte Route hat für mich gut funktioniert, aber dann habe ich nur noch ein paar Server, und alle meine richtige Gittercomputer werden in Data-Synapse durchgeführt. Aber ich frage mich, ob ich wieder anfangen sollte, wenn einer dieser offenen Source-Paas eine gute Passform wäre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top