Frage

Ich habe vor kurzem bei akka gesucht und es ist ziemlich beeindruckend. Es sieht aus wie es die meisten der Killer-Features von erlang hat - Standort Transparenz, Aufsicht Hierarchien und mehr. Gibt es verfügt über erlang hat, dass akka nicht?

War es hilfreich?

Lösung

Disclaimer: Ich bin der PO für Akka

  • Erlang tut Copy-on-send - Akka Anwendungen Shared Memory (unveränderliche Objekte) für in-VM sendet
  • Erlang hat pro-Prozess-GC - Akka verwendet JVM GCs
  • Erlang hat OTP - Akka integriert mit dem gesamten Java-Ökosystem (Apache Camel, JAX-RS . etc etc)
  • Erlang hat den Prozess Planung für Sie - Akka ermöglicht es Ihnen, viele verschiedene Disponenten zu verwenden mit endloser Konfiguration Möglichkeiten
  • Erlang tut Hot Code nachladen - Akka kann sie unterstützen, aber es ist weniger flexibel, weil der JVM Classloading

Das ist die, von der Oberseite meines Kopfes.

Auf der anderen Seite, mit Akka bedeutet, dass Sie Scala verwenden können, Java, Groovy oder JRuby Anwendungen zu schreiben.

Andere Tipps

In Erlang Prozesse sind garantiert etwa jeweils 1000 Reduzierungen geschaltet werden. In einem solchen naiven Rahmen als Scala / Akka Agent besitzt einen Scheduler, bis sie Arbeit in erhalten beendet. Schachmatt. Spiel ist aus. Hasta la vista :) Menschen, verschwenden Sie Ihre Zeit nicht auf Pseudo-Techs. Ich schockiert, dass Jungs hier vergleichen Scala mit Erlang.

Es gibt auch viele andere so genannte „Killer-Features“, aber hier ist mein Rat, glaube nicht, in Bezug auf die Funktionen, darüber nachzudenken, Idiome, die bestimmte Sprache ermöglicht. Scala stiehlt „beste Features“, ermöglicht Erlang / Arbeitsgeräte Sie mit dem rechten Idiomen Build-Systemen zuverlässig, mit hohen Ebene Sprache, die von den rechten Idiomen angetrieben. Wenn Sie Erlang lernen Sie neu erstellen Sie Ihren Verstand, Ihre Denkweise über verteilte zuverlässiges System, lehrt Erlang Sie und Upgrades, die Sie. Scala ist nur ein weiterer Imperativ (oh, sorry, multiparadigmal, komisches Wort) Sprache, die versucht, gute Eigenschaften aus anderen Sprachen zu stehlen.

Fast niemand erwähnt Prozess Isolation. Ohne Garantien von „Thread kann nicht Chaos mit meinem Kram“, verteilen Systeme sind viel schwieriger zu Grunde über. (Sie sind schon schwierig genug mit Erlang Prozesse.)

AFAIK (die nicht weit ist, meine begrenzte direkte Erfahrung mit der JVM gegeben), nur Erlang tatsächlich bekommt Prozess Isolation „rechts“ auf der JVM. Mr. Google kann einige Hinweise geben, in denen die Forschung von Fox und Candea finden (?) Auf Forschungssysteme, die einen „Mikro-Neustart“ -Technik ( „Recovery-Oriented Computing“) verwenden. Ein Erlang Entwickler liest, dass die Forschung und sagt ein paar Dinge:

  1. Willkommen im Club, was Sie so lange gedauert hat?
  2. Die JVM macht es furchtbar, furchtbar schwer zu verbinden, though. : -)

Für mich heißen Code in einer ganzen Erlang Cluster Swapping ohne Ausfallzeiten (zum Beispiel: make:all([netload]). Ist eine der Erlang-Killer-Features

Aber lassen Sie uns umkehren Ihre Frage: Was akka hat, dass Erlang nicht? Natürlich können Sie Dutzende von Erweiterungen und Bibliotheken (scala, akka, Frühling, OSGi, ...) zu Java hinzufügen, um zu versuchen Nähe von Erlang zu kommen. Aber wo ist der Punkt? In Summe all diese Erweiterungen sind viel komplexer als die einfache Erlang Sprache zu lernen, dass nun schon seit über zwei Jahrzehnten bewährt hat, dass er die Job-Angebot Top-Skalierbarkeit ohne Ausfallzeiten tun.

Wahrscheinlich ist Erlang besser für größere verteilte Systeme (nach vjache Antwort), aber für einen normalen Server, wenn Sie die volle Leistung von mehreren CPUs nur benutzen wollen, dann Akka ist gut Wahl- bietet gute Abstraktion, Leistung und Integration mit dem Java-Ökosystem.

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