Ich möchte eine Liste der häufigsten Anwendungen / Websites / Lösungen kennen, bei denen Erlang erfolgreich eingesetzt wird oder nicht .
Es wäre auch sehr dankbar zu erklären, warum es in einer bestimmten Lösung anstelle anderer Programmiersprachen verwendet wird.
Es wäre auch interessant, BAD Erlang-Fallstudien aufzulisten (Fälle, in denen Erlang missbraucht wird).
erlang
case-study
Roberto Aloi
quelle
quelle
Antworten:
Aus der Programmierung Erlang :
Alternativtext http://bks8.books.google.com/books?id=Qr_WuvfTSpEC&printsec=frontcover&img=1&zoom=5&sig=ACfU3U2F4YY4KqO0vCuZ4WEZjdE2yFFvvg
Viele Unternehmen verwenden Erlang in ihren Produktionssystemen:
• Amazon verwendet Erlang zur Implementierung von SimpleDB und stellt Datenbankdienste als Teil der Amazon Elastic Compute Cloud (EC2) bereit.
• Yahoo! verwendet es in seinem Social-Bookmarking-Dienst Delicious, der mehr als 5 Millionen Benutzer und 150 Millionen mit Lesezeichen versehene URLs hat.
• Facebook nutzt Erlang, um das Backend seines Chat-Dienstes zu betreiben und mehr als 100 Millionen aktive Benutzer zu verwalten.
• WhatsApp verwendet Erlang zum Ausführen von Messaging-Servern, wodurch bis zu 2 Millionen verbundene Benutzer pro Server erreicht werden.
• T-Mobile verwendet Erlang in seinen SMS- und Authentifizierungssystemen.
• Motorola verwendet Erlang in Anrufbearbeitungsprodukten in der öffentlichen Sicherheitsbranche.
• Ericsson verwendet Erlang in seinen Support-Knoten, die in GPRS- und 3G-Mobilfunknetzen weltweit verwendet werden.
Die beliebtesten Open-Source-Erlang-Anwendungen umfassen Folgendes:
• Der 3D-Unterteilungsmodellierer Wings 3D , der zum Modellieren und Texturieren von Polygonnetzen verwendet wird.
• Das Ejabberd- System, das einen XMPP-basierten Instant Messaging-Anwendungsserver (Extensible Messaging and Presence Protocol) bereitstellt.
• Die dokumentenorientierte CouchDB -Datenbank ohne Schema bietet Skalierbarkeit für Multicore- und Multiserver-Cluster.
• Die MochiWeb- Bibliothek, die Unterstützung für den Aufbau leichter HTTP-Server bietet. Es wird verwendet, um Dienste wie MochiBot und MochiAds mit Strom zu versorgen, die täglich Millionen von Zuschauern dynamisch generierte Inhalte bereitstellen.
• RabbitMQ , eine Implementierung des AMQP-Messaging-Protokolls. AMQP ist ein aufstrebender Standard für leistungsstarkes Enterprise Messaging.
quelle
ejabberd ist eine der bekanntesten erlang-Anwendungen und die, mit der ich erlang gelernt habe.
Ich denke, es ist eines der interessantesten Projekte zum Erlernen von erlang, weil es wirklich auf erlangs Stärke aufbaut. (Einige werden jedoch argumentieren, dass es kein OTP ist, aber keine Sorge, es steckt immer noch eine Menge großartiger Codes darin ...)
Warum ?
Ein XMPP-Server (wie ejabberd) kann als High-Level-Router angesehen werden, der Nachrichten zwischen Endbenutzern weiterleitet. Natürlich gibt es noch andere Funktionen, aber dies ist der wichtigste Aspekt eines Instant Messaging-Servers. Es muss viele Nachrichten gleichzeitig weiterleiten und viele TCP / IP-Verbindungen verarbeiten.
Wir haben also 2 Funktionen:
Dies sind Beispiele, bei denen erlang glänzt.
viele Verbindungen behandeln
Mit erlang ist es sehr einfach, skalierbare, nicht blockierende TCP / IP-Server zu erstellen. Tatsächlich wurde es entwickelt, um dieses Problem zu lösen. Und da es Hunderttausende von Prozessen erzeugen kann (und keine Threads , es ist ein Share-Nothing-Ansatz, der einfacher zu entwerfen ist), ist ejabberd als eine Reihe von erlang-Prozessen konzipiert (die auf mehrere Server verteilt werden können):
Alle tauschen Nachrichten aus.
Routen von Nachrichten unter Berücksichtigung einiger Aspekte der Nachricht
Ein weiteres sehr liebenswertes Merkmal von erlang ist der Mustervergleich . Es wird in der gesamten Sprache verwendet.
Zum Beispiel im Folgenden:
Das sind 5 verschiedene Versionen der
access
Funktion. Erlang wählt die am besten geeignete Version unter Berücksichtigung der erhaltenen Argumente aus. (Config
ist eine Struktur vom Typ,#config
die eintype
Attribut hat).Das heißt, es ist sehr einfach und viel klarer als Verketten
if/else
oderswitch/case
Geschäftsregeln zu erstellen.Einwickeln
Das Schreiben skalierbarer Server ist der springende Punkt bei erlang. Alles ist so gestaltet, dass es einfach ist. Zu den beiden vorherigen Funktionen möchte ich hinzufügen:
mnesia
, verteilte relationale Datenbank (in der Basisverteilung enthalten)mochiweb
, auf denen die meisten http erlang Server basierenejabberd
,couchdb
sondern auchwebmachine
,riak
und eine ganze Reihe von Bibliothek sehr einfach zu einbetten)Weniger LOCs
Es gibt auch diesen Artikel von Richard Jones. Er hat eine Anwendung von C ++ nach erlang umgeschrieben: 75% weniger Zeilen in erlang.
quelle
Die Liste der häufigsten Anwendungen für Erlang wurde behandelt (CouchDb, Ejabberd, RabbitMQ usw.), aber ich möchte Folgendes beitragen.
Der Grund , warum es bei diesen Anwendungen verwendet wird , stammt aus der Kernstärke von Erlang: der Verwaltung von Anwendungsverfügbarkeit .
Erlang wurde von Grund auf für die Telekommunikationsumgebung entwickelt, in der Systeme mindestens 5x9 verfügbar sein müssen (99,999% jährliche Betriebszeit). Diese Zahl lässt nicht viel Raum für Ausfallzeiten während eines Jahres! Aus diesem Grund ist Erlang in erster Linie mit den folgenden Funktionen ausgestattet (nicht erschöpfend):
Horizontale Skalierbarkeit (einfache Verteilung von Jobs über Maschinengrenzen hinweg durch nahtlose Kommunikation innerhalb und zwischen Maschinen). Die eingebaute Datenbank (Mnesia) ist ebenfalls von Natur aus verbreitet.
Vertikale Skalierbarkeit (Möglichkeit, Jobs auf Verarbeitungsressourcen auf demselben Computer zu verteilen): SMP wird nativ verarbeitet.
Code-Hot-Swapping : Die Möglichkeit, Code während des Betriebs live zu aktualisieren / zu aktualisieren
Asynchron : Die reale Welt ist asynchron, daher wurde Erlang gebaut, um diese grundlegende Natur zu berücksichtigen. Eine Funktion, die zu dieser Anforderung beiträgt: Erlangs "freie" Prozesse (> 32000 können gleichzeitig ausgeführt werden).
Überwachung : Viele verschiedene Strategien zur Prozessüberwachung mit Neustartstrategien, Schwellenwerten usw. Hilft bei der leichteren Wiederherstellung nach Eckfällen / Überlastung, während die Probleme für die spätere Fehlerbehebung, Post-Mortem-Analyse usw. beibehalten werden.
Ressourcenverwaltung : Planungsstrategien, Ressourcenüberwachung usw. Beachten Sie, dass der Standardprozessplaner mit O (1) -Skalierung arbeitet.
Live-Debugging : Die Möglichkeit, sich nach Belieben bei Live-Knoten anzumelden, hilft bei der Fehlerbehebung . Das Debuggen kann live mit vollem Zugriff auf den laufenden Status eines Prozesses durchgeführt werden. Auch die integrierten Tools zur Fehlerberichterstattung sind sehr nützlich (aber manchmal etwas umständlich zu bedienen).
Natürlich könnte ich über seine funktionalen Wurzeln sprechen, aber dieser Aspekt ist etwas orthogonal zum Hauptziel (hohe Verfügbarkeit). Die Hauptkomponente der funktionalen Natur, die großzügig zum Ziel beiträgt, ist IMO: "Nichts teilen". Diese Eigenschaft hilft, "Nebenwirkungen" einzudämmen und den Bedarf an kostspieligen Synchronisationsmechanismen zu verringern.
Ich denke, all diese Eigenschaften helfen dabei, einen Fall für die Verwendung von Erlang in geschäftskritischen Anwendungen zu erweitern.
Eine Sache, in der Erlang nicht wirklich gut ist : die Verarbeitung großer Datenblöcke.
quelle
Erlang stammt von Ericsson und wird in einigen Telekommunikationssystemen verwendet.
Außerhalb der Telekommunikation ist CouchDb (eine dokumentenorientierte Datenbank) möglicherweise die bisher bekannteste Erlang-Anwendung.
Warum Erlang? Aus der Übersicht (lesenswert vollständig):
quelle
Wir haben mit Erlang eine Wettbörse (auch bekannt als Prognosemarkt) aufgebaut. Wir haben Erlang aufgrund der integrierten Parallelität einigen der traditionelleren Finanzsprachen (C ++, Java usw.) vorgezogen. Märkte funktionieren sehr ähnlich wie Telefonien. Unser CTO hielt einen Vortrag über unsere Verwendung von Erlang beim CTO-Vortrag .
Wir verwenden auch CouchDB und RabbitMQ als Teil unseres Stacks.
quelle
Ich bin darauf gestoßen, dass gerade ein Bericht verfasst wird: Erlang in Acoustic Ray Tracing .
Es ist ein Erfahrungsbericht über den Versuch einer Forschungsgruppe, Erlang für die akustische Strahlverfolgung zu verwenden. Sie fanden heraus, dass es zwar einfacher war, das Programm zu schreiben, aber weniger fehlerhaft usw. Es war schlechter skaliert und 10-mal langsamer als ein vergleichbares C-Programm. Ein Punkt, an dem es möglicherweise nicht gut geeignet ist, sind CPU-intensive Szenarien.
Beachten Sie jedoch, dass sich die Leute, die das Papier geschrieben haben, in der Phase des ersten Lernens von Erlang befanden und möglicherweise nicht die richtigen Entwicklungsverfahren für CPU-intensives Erlang gekannt haben.
quelle
Anscheinend hat Yahoo Erlang verwendet, um etwas zu machen, das es Harvester nennt. Artikel dazu hier: http://www.ddj.com/architect/220600332
quelle
Wofür ist erlang gut?
http://beebole.com/de/blog/erlang/why-erlang/
http://www.aquabu.com/2008/2/15/erlang-pragmatic-studio-day-3-notes
http://www.reddit.com/r/programming/comments/9q0lr/erlang_and_highfrequency_trading/ (Antwort von Jerf)
Es ist wichtig zu wissen, dass Erlangs 4 Teile: die Sprache selbst, die Standardbibliotheken der VMs (BEAM, hipe) (plus Module auf Github, CEAN usw.) und die Entwicklungsumgebung ständig aktualisiert / erweitert / verbessert werden. Ich erinnere mich zum Beispiel, dass ich gelesen habe, dass sich die Gleitkomma-Leistung verbessert hat, als der Autor von Wings3d erkannte, dass sie verbessert werden muss (ich kann keine Quelle dafür finden). Und dieser Typ hat gerade darüber geschrieben:
http://marian-dan.com/wordpress/?p=324
Vor ein paar Jahren führten Tim Brays Wide Finder-Werbung und alle Leute, die anfangen, Web-App-Frameworks und HTTP-Server zu erstellen, (zumindest teilweise) zu einer verbesserten Handhabung von Regex und Binärdateien. Und es gibt all die Arbeit, die HiPE und SMP integriert, das Dialysatorprojekt, das Testen mehrerer Einheiten und das Entstehen von Bibliotheken, die entstehen.
Der Sweet Spot wächst also. Das Schwierige ist, dass die offiziellen Dokumente nicht sehr gut mithalten können und die Mailingliste und das Volumen der erlangenden Blogosphäre schnell wachsen
quelle
Wir verwenden Erlang, um die Back-End-Muskelkraft für unser wirklich browserbasiertes Echtzeit-Multiplayer-Spiel Pixza bereitzustellen . Wir verwenden kein Flash oder andere Plugins von Drittanbietern, obwohl das Spiel ein Echtzeit-Multiplayer ist. Wir verwenden stattdessen reine JS- und COMET-Techniken. Und Erlang unterstützt die "echte Aktualität" von Pixza.
quelle
Ich arbeite für wooga, ein Unternehmen für soziale Spiele, und wir verwenden Erlang für einige unserer Spiele-Backends (im Grunde http apis für Millionen von täglichen Benutzern) und Hilfsdienste wie ios Push-Benachrichtigungsanbieter, Zahlung usw.
Ich denke, es glänzt wirklich bei netzwerkbezogenen Aufgaben und macht es ziemlich einfach, einfache und komplexe Netzwerkdienste gleichermaßen darin zu strukturieren und zu implementieren. Verteilung, Fehlertoleranz und Leistung sind leicht zu erreichen, da in Erlang bereits einige der wichtigsten Inhaltsstoffe integriert sind und diese seit langem in kritischen Produktionsinfrastrukturen eingesetzt werden. Es ist also nicht wie "die neue Hip-Technologie-Sache 0.0.2 Alpha".
Ich weiß, dass auch andere Spielefirmen Erlang verwenden. Sie sollten in der Lage sein, Präsentationen auf Diashow darüber zu finden.
quelle
Erlang schöpft seine Stärke aus einer funktionalen Sprache ohne gemeinsames Gedächtnis. Daher ist Erlang meiner Meinung nach nicht für Anwendungen geeignet, die Speichermanipulationen erfordern. Bildbearbeitung zum Beispiel.
quelle