Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Client/Server Projekt: Daten filtern und verteilen???

  Alt 22. Mär 2012, 07:30
Sogenannte Message Broker wie Apache ActiveMQ bieten diese Features:

* eine Nachricht kann gezielt an bestimmte Clients gesendet werden (anstatt Polling)
* Nachrichten können aber auch über einen 'Kanal' - auch 'Topic' (Thema) genannt - an alle Clients zugestellt werden, die diesen Kanal abonniert haben. Wenn man im konkreten Anwendungsfall je Filter einen Kanal definiert und die Nachrichten vom Server in diesen Kanal schreibt, erhalten alle Client diese Nachricht
* Eine weitere Filterungsmöglichkeit sind 'Selektoren', dies sind serverseitige Filter die der Client vorab dem Server mitteilt damit er Nachrichten nur dann dem konkreten Client zusendet, wenn sie bestimmte Kriterien erfüllt
* Wildcards ermöglichen das Filtern mehrerer Topics innerhalb einer Hierarchie



Da es Clientbibliotheken für viele Programmiersprachen gibt, kann zum Beispiel schon der Webservice (er kann in C#, Java, PHP oder Delphi geschrieben sein) beim Annehmen der Daten die Nachricht für die Benutzer an den Broker senden.

Wie der Einsatz eines Message Brokers konkret an die Bedürfnisse der Anwendung angepasst werden kann, ist sehr detailliert im Buch "Enterprise Integration Patterns" von Gregor Hohpe beschrieben.


Zur Geschwindigkeit: Message Broker sind sehr schnell (tausende Nachrichten pro Sekunde sind eher die Untergrenze) und robust, sie werden daher sehr häufig im Finanzsektor (Börsenkurse) eingesetzt.

Mit Delphi erreiche ich auf einem langsamen Notebook zwischen 4.000 und 20.000 Nachrichtenroundtrips pro Sekunde, wobei Client und Server auf dem gleichen Rechner laufen. Roundtrip = vom Client zum Server und wieder zurück zum Client, 4000 Roundstrips sind also 4.000 ausgehend(Client->Server) und 4.000 eingehend(Server->Client) pro Sekunde. Mit Apache ActiveMQ sind es ca. 2.500, Apache Apollo ca. 4.000. Es spielt daher also eher die generelle Netzwerklatenz eine Rolle, d.h. wie gut die Verbindungen vom Client zum Server sind.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat