Skalierung WCF, wie mit Callbacks umzugehen?

8

Angenommen, ich möchte einige WCF-Dienste skalieren (weitere Felder hinzufügen). Dies sieht ziemlich einfach aus und richtet Load Balancer ein, der WCF-Dienste auf mehreren Boxen aufruft, zum Beispiel mit einem Round-Robin-Algorithmus.

Wie jedoch mit der Situation umgegangen wird, wenn ein WCF-Dienst einen Rückrufvertrag hat. Wenn ein Client eine Verbindung zu einer bestimmten Box herstellt, empfängt er Ereignisse, die nur von dieser Computer-WCF-Dienstinstanz ausgelöst werden. Und ich möchte, dass der Client Ereignisse empfängt, die von einer WCF-Dienstinstanz in der Gruppe (Cluster) ausgelöst wurden.

Was ist der beste Weg, um den WCF-Service über Ereignisse zu informieren, die von anderen WCF-Dienstinstanzen ausgelöst werden?

Einige Ideen: Multicast, Broadcast, WCF NetPeerTcpBinding, Einzelserver, der alle WCF-Dienste im Cluster abonniert (agiert als Ereignisaggregat).

UPDATE: Es ist mir gelungen, ein Testsystem zu erstellen, das NetPeerTCPBinding als Mechanismus zum gemeinsamen Nutzen von Ereignissen zwischen Servern verwendet. Ich habe noch keinen Benchmark erstellt, aber ich denke, WCF P2P ist zu schwer für diesen Stoßzahn, ich werde ein UDP-Broadcast-basiertes Event-Sharing-System implementieren.

    
Alex Burtsev 27.01.2012, 12:44
quelle

2 Antworten

2

Ich würde dies implementieren, indem ich eine MSMQ-Warteschlange einrichte, die jeder Server abonnieren kann. Wenn ein Ereignis auftritt, über das die anderen Server Bescheid wissen müssen, kann der Dienst es veröffentlichen.

Ich benutze eine Bibliothek mit dem Namen NServiceBus , um den gesamten Vorgang zu vereinfachen. NServiceBus ist eine voll ausgestattete Bibliothek, die MSMQ (neben anderen Transporten) verwendet, um Pub / Sub-Messaging-Busse zu erstellen, die genau Ihr Problem lösen würden. Es ist einfach zu bedienen und hat eine flüssige Oberfläche für Konfiguration, Abonnement und Veröffentlichung.

Ich werde später zurückkommen und diesen Beitrag später mit einem Beispiel bearbeiten, aber die NServiceBus-Website hat eine Menge Dokumentation, um Sie bis dahin zu starten.

    
Steve Czetty 16.02.2012 03:33
quelle
0

Haben Sie über Messaging nachgedacht? Klingt ideal.

    
Rocklan 27.01.2012 13:22
quelle

Tags und Links