Wir starten ein neues Projekt und implementieren die Instanziierung einer Openstack-Cloud durch unser Unternehmen (siehe http://www.openstack.org/ ). Das Projekt ist ein Sicherheitswerkzeug für unser Unternehmen. Wir betreiben derzeit viele hundert dedizierte Server für Sicherheitstools und verschieben sie in unsere Unternehmen, um Openstack zu instanziieren.
Andere Projekte in meinem Unternehmen verwenden erlang derzeit in mehreren verteilten Serveranwendungen, und andere Fragen und Antworten weisen darauf hin, dass erlang in mehreren gängigen Cloud-Diensten verwendet wird. Ich versuche andere davon zu überzeugen, zu überlegen, wo dies auf unser Projekt anwendbar sein könnte.
Was sind die Stärken von erlang für die Cloud-Programmierung? Wo sind Bereiche, in denen Erlang besonders geeignet ist?
quelle
Antworten:
Abgesehen von der Tatsache, dass Erlang speziell für die Ausführung in gleichzeitigen / parallelisierten / verteilten Situationen entwickelt wurde, werden folgende zwei Haupttechniken eingesetzt, um dies zu ermöglichen:
Keine Nebenwirkungen:
Das heißt, wenn Sie einer Funktion Daten geben, für die sie ausgeführt werden soll, wirkt sich dies nur in sehr strengen Fällen auf andere Elemente im System / im laufenden Prozess aus. Dies bedeutet, dass, wenn Sie eine Funktion 300 Mal gleichzeitig ausführen, keine dieser 300 Ausführungen der Funktion eine der anderen beeinflusst.
Die Implementierungstechnik zur Sicherstellung, dass keine Nebenwirkungen auftreten, wird als "Unveränderlichkeit" bezeichnet, was ungefähr bedeutet, dass sie nicht mutiert (geändert) werden darf. Dies bedeutet, dass der Wert dieser Variablen möglicherweise nicht geändert wird, sobald Sie eine Variable erstellen. Erlang implementiert dieses Verhalten mit "Einzelzuweisung". Nachdem Sie einer Variablen einen Wert zugewiesen haben, können Sie ihr möglicherweise keinen Wert mehr zuweisen.
Dies stellt sicher, dass kein Code versehentlich den Wert von X ändert, was zu einer Race-Bedingung führt. Daher ist er von Natur aus threadsicher und die gleichzeitige Verwendung wird trivial. Dies ist ein sehr ungewöhnliches Verhalten unter Softwaresprachen und die größte Art und Weise, wie Erlang es schafft, für die gleichzeitige Ausführung so gut geeignet zu sein.
Das Schauspielermodell:
Dies ist eine besondere Art der Modellierung, die gezeigt hat, dass die Implementierung und Verwaltung der gleichzeitigen Verarbeitung für Entwickler sehr einfach ist. Direkt aus Wikipedia (http://en.wikipedia.org/wiki/Actor_model):
quelle
Erlang ist besonders stark im Concurrent / Parallelized Computing. Tatsächlich wurde es ursprünglich genau für diesen Zweck entwickelt. Es hat nichts mit Cloud zu tun, außer dass häufig rechenintensive Anwendungen parallelisiert und in "Cloud" -Instanzen bereitgestellt werden, um das Erweitern / Verkleinern der Kapazität bei Bedarf zu vereinfachen.
Der Rest ist nur Marketing.
quelle
Ein Aspekt der Cloud, der sich von herkömmlichen Hardwarebereitstellungen unterscheidet, ist die Leichtigkeit, mit der Sie bei Bedarf neue Instanzen starten können. Die Möglichkeit, andere Knoten und Prozesse auf anderen Knoten zu überwachen, macht es relativ einfach, hochdynamische Systeme zu erstellen, mit denen VMs hinzugefügt oder entfernt und nach Bedarf verwaltet werden können.
Dies gilt insbesondere dann, wenn Sie Ihr System mit dem OTP-Framework (Open Telecom PLatform) von erlang erstellen, das sowohl Struktur als auch Mechanismen (Supervisor-Bäume) bietet, um das Erstellen einiger hochentwickelter Dinge mit weitaus weniger Effrot zu unterstützen, als Sie sich vorstellen. Erlang erledigt alle kniffligen Dinge, damit Sie nicht müssen.
quelle