12

Die meisten Anwendungsfälle, die ich für Akka Aktoren gesehen habe, sind leistungsstarke Multicore-Server oder lokale Cluster.Könnten AKKA-Remotedarsteller in einem P2P-Schwarm-Kontext verwendet werden?

Ich bin neugierig Anwendbarkeit auf entferntere hohe Latenz ist und hoch Schwarm Strukturen wie p2p Netzwerke scheitern.

Die Anwendung, die ich im Sinn habe, hätte Regeln über die Vertrauenswürdigkeit und/oder Ressourcenreichtum der Schwarmknoten geben ihnen einen Status, wie Bittorrent würde. Es müsste auch in der Lage sein, Transaktionen über den Schwarm so gut wie möglich zu propagieren, aber eventuelle oder teilweise Konsistenz wäre akzeptabel. Skalierbarkeit wäre eine höhere Priorität als Konsistenz.

Ist AKKA eine mögliche Lösung für den Bau so etwas? Würde es spezifische Vorteile oder Nachteile gegenüber anderen Ansätzen haben.

+0

Wie viele Knoten? –

+0

@Viktor Klang Im Idealfall so viele wie möglich, in der Größenordnung von Dingen wie einem einzigen BitTorrent, aber einem ziemlich großen. – barrymac

+1

Ich denke AKKA wurde unter Berücksichtigung hoch gekoppelter verteilter Systeme (wie Cluster) und nicht des von Ihnen beschriebenen Szenarios (wie Sensornetzwerke oder dezentrale soziale Netzwerke) konzipiert, obwohl diese immer noch im Bereich der verteilten Rechner, aber im heterogenen/dezentralen Bereich liegen). Aber da ich kein Experte bin, warten wir auf eine bessere Antwort: D – Filippos

Antwort

3

Das Hauptproblem bei der Verwendung von Akka in diesem Zusammenhang ist, dass das Actor-System kein angemessen maleable Zugehörigkeitsverwaltungssystem für solch dezentrales verteiltes Rechnen hat.

Sie benötigen etwas, das mit der Knotenabwanderung umgehen kann, die Sie in Ihrem Szenario beschreiben. Insbesondere benötigen Sie etwas, das überwachen kann, wenn Knoten aufgrund von Fehlern beitreten, verlassen und als tot gelten. Ich würde empfehlen, Ibis: http://www.cs.vu.nl/ibis/ mit einer Klatsch-basierten Registrierung zu suchen. Sie benötigen immer noch einen bekannten Bootstrap-Knoten, um das System zu starten, aber ansonsten bietet das Modell Join, Elect, Leave, das Ibis verwendet, die Skalierbarkeit, die Sie in Kombination mit der Gossip-basierten Registry suchen. Dieses System ähnelt Akka-Akteuren insofern, als es auf einem System von Auf- oder Abrufen und unidirektionalen Leitungen basiert, über die Sie Nachrichten weiterleiten. Sehr einfach zu verteilendes Zeug zu programmieren, sobald du den Fu davon bekommst.

Im Hinblick auf die mögliche Konsistenz ist dies ein bekanntes Problem in so großen verteilten Umgebungen. Ich müsste mehr über die Arten von Transaktionen wissen, die Sie verteilen möchten, und das Niveau der Konsistenz und Historisierung, das erforderlich ist, um dort mehr Empfehlungen zu machen. Einige neuere Arbeiten haben bewiesen, dass das Beste, was man in solch einer feindlichen Umgebung finden kann, die fork-causal-consistency ist, wo zumindest jeder sehen kann, dass die Geschichte sich verzweigt hat, wenn nicht die "gewinnende" Gabel ohne eine andere Gabelung Auflösungsmechanismus. Ein Bitcoin ist ein interessantes Beispiel in diesem Raum, in dem "Gewinnen" durch die längste Kette bestimmt wird, aber es gibt andere Lösungen in diesem Raum, die je nach Anwendungssemantik funktionieren können oder nicht. Ihre Frage ist ein wenig zu vage, um in einem so großen Designbereich konkrete Empfehlungen zu geben.

+0

Interessant, dass Sie Bitcoin erwähnen, weil die Anwendung, die ich im Sinn hatte, über verteilte Austausch- und Preisentdeckung von digitalen Assets wie Bitcoin! Es gibt also nicht viel Berechnung, aber eine Menge Echtzeitdaten.Die Herangehensweise an die Version der Wahrheit, über die ich nachdachte, bestand darin, Regeln über die Qualität von Informationen auf der Basis einiger Vertrauensfaktoren wie historischer Reputation zu haben. – barrymac

+0

Sich auf Reputation zu verlassen, ist ein guter Anfang, aber Reputationssysteme sind offen für kollusionsbasierte Angriffe . Klingt wie du versuchst eine sehr harte Nuss zu knacken. Viel Glück. –