Ich bin keineswegs ein Experte in Erlang, aber ich denke, ich kenne Erlang und NodeJs auf dem gleichen Niveau.
Die Dinge, die Sie sagen, sind alle korrekt. Bot kann mehrere Verbindungen sehr effizient verwalten, gut verwaltet, sagen Sie.
Aber die Sache ist, die Probleme sind nicht nur mehrere gleichzeitige Verbindungen zu behandeln. Die Probleme, die Erlang sehr gut zu lösen versucht, sind Sicherheit und Verteilung. Ich denke NodeJs werden nicht so gut darin sein, wie es jetzt ist.
Nicht falsch verstehen, ich sage nicht, dass niemand eine verteilte Anwendung in NodeJs codieren kann, aber in Anbetracht der Werkzeuge, die Erlang Ihnen gibt, ist es vielleicht eine bessere Wahl.
Für die Fehlersicherheit, zum Beispiel, lässt Erlang Ihre Prozesse verlinken, so dass bei einem Fehler andere auch fehlschlagen oder benachrichtigt werden. Das ist nicht sehr praktisch, aber wenn Sie es neben supervisors und shared-nothing-Prozesse betrachten, ist es ein großartiges Werkzeug.
Für die Verteilung, Erlang lassen Sie Knoten miteinander verknüpfen. Verknüpfte Knoten können miteinander kommunizieren, als wären sie auf derselben Maschine, und sie können Prozesse auch auf anderer Seite erzeugen. Berücksichtigen Sie dies mit der Möglichkeit, eine fehlgeschlagene Anwendung von einem fehlerhaften Knoten auf einem anderen fehlerfreien Knoten zu starten. Gibt Ihnen eine großartige Verfügbarkeit.
Und nicht zu vergessen, dass diese Werkzeuge jahrelange Erfahrung haben.
Versuchen Sie einfach, diese Probleme in einem anderen Ökosystem zu lösen. Ich sage Ökosystem, weil Erlang als Sprache nicht vollständig ist, aber die Werkzeuge und Frameworks (meistens OTP) müssen auch berücksichtigt werden. Dann kann man auch sagen, dass Erlang in diesen Bereichen wirklich glänzt.
Aber Erlang ist auch nicht sehr gut, wenn es um lineare Verarbeitung, Zahlenverarbeitung, Bild-/Tonverarbeitung usw. geht. Das wäre besser in einem anderen System implementiert.
Ich denke, in diesen Bereichen ist der große Unterschied zwischen NodeJs und Erlang ihr Laufzeitmodell. NodeJs hat einen Prozess, einen Thread, der bei io-bezogenen Aufgaben async arbeitet. Natürlich können Sie mehrere Prozesse ausführen, aber das ist die grundlegende Sache. Auf der anderen Seite hat Erlang eine VM namens BEAM. Erlang verwendet spezielle Prozesse innerhalb dieser VM, sehr leichte Prozesse. BEAM plant sie selbst, da es sich nicht um OS-Prozesse handelt. Dies gibt BEAM den Vorteil, mehrere hunderttausend Prozesse gleichzeitig zu haben, die jeweils eine Aufgabe erledigen, sei es nun oder anderswo.
Sie sehen den Unterschied jetzt, denke ich. Erlang ist mehr kampferprobt, besser, wenn Ausfallsicherheit oder Verteilung ein Muss ist. NodeJs sind vielleicht besser, wenn Sie eine schnellere Entwicklung und Bereitstellung benötigen.