2016-08-29 2 views
0

Wir versuchen, unsere Umgebung zu skalieren. Ich verwendete eine ConnectionMapper-Klasse wie die hier: http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections, um eine Liste von Verbindungen zu behalten.SignalR Verbindungen mit Backplate

Wie würde ich dies in einem Cluster (2 Knoten) arbeiten? würde ich eine Rückwandplatine implementieren? http://www.asp.net/signalr/overview/performance/scaleout-in-signalr

Und dann verschieben Sie die Verbindungszuordnungen zu SQL DB?

Dies ist für eine MVC-Anwendung.

+0

Meinst du [Backplane] (http://www.asp.net/signalr/overview/performance/scaleout-in-signalr)? – hometoast

+1

ja. Rückwandplatine. Auch nicht sicher, "Backplane" und Verbindungen beziehen sich. Oder sie tun es überhaupt nicht. Ich würde immer noch die gleiche ConnectionMapper-Klasse verwenden und die Backplate würde wissen, an welchen Benutzer die Nachricht gesendet werden soll? – ShaneKm

Antwort

1

Hmm Sie könnten etwas wie den Connection Mapper mit einer Rückwandplatine nicht verwenden. Das Problem bei In-Memory-Mapping ist, dass Sie nicht zwischen den Knoten kommunizieren können, ohne Ihre Datenbanktabelle zu verwenden, aber das wäre auch schmerzhaft (ein Nachschlagen in der Datenbank für jede gesendete Nachricht?).

Sie würden besser mit Gruppen (dh Hinzufügen jedes Benutzers aus der Firma ABC zu der "ABC" -Gruppe - oder vielleicht verwenden Sie eine eindeutige ID wie CompanyId aus einer Datenbanktabelle. Sobald Sie es mit Gruppen auf ein Knoten, dann können Sie mit einem Backplane starten ...

Gruppen docs: http://www.asp.net/signalr/overview/guide-to-the-api/working-with-groups

Aber dann wieder gibt es Probleme mit einer Backplane - also das, was tun Sie hoffen, eine Backplane zu erreichen mit Schauen Sie sich auf? Was SignalR beschreiben als die Grenzen der Verwendung einer Backplane in http://www.asp.net/signalr/overview/performance/scaleout-in-signalr. Backplane Scaleout ist ein Schmerz, da es eine gute Chance, dass es eine unteren Chaos haben kann Altersdurchsatz und höhere Latenz als ein einzelner Knoten schenario ... Im Beispiel eines Spiels - Sie könnten besser sein, jeder Knoten völlig unabhängig zu sein und Benutzer zum richtigen Knoten führt (so Knoten A Hosts Spiele 1 - 8 , und Knoten B beherbergt Spiele 9 - 16)