Scalable Pub / Sub-Engine für Echtzeit

8

Ich bin auf der Suche nach einer Pub / Sub-Engine mit folgenden Anforderungen:

  1. Sehr niedrige Latenz & lt; 0,5 Sekunden
  2. Skalierbar
  3. Shardable (basierend auf Geo-Lokalisierung)

Ich möchte mehrere Pub / Sub-Server haben und Kanäle von jedem Server aus veröffentlichen oder abonnieren können, egal auf welchem ​​Server der Channel deklariert ist.

Zum Beispiel:

Wenn Benutzer A mit dem Server SRV1 und Benutzer B mit dem Server SRV2 verbunden ist, wenn Benutzer B abonnieren Sie " MyChannel " und Benutzer A auf dem Kanal " MyChannel ", Benutzer B erhält die Nachricht, auch wenn er nicht mit demselben Server verbunden ist.

Ich weiß nicht, ob Redis das kann. Ich habe nichts über das Thema gefunden. Jede Hilfe ist willkommen.

    
Vinc 19.09.2011, 23:30
quelle

4 Antworten

3

Wir haben ZeroMQ verwendet und es sind Pub / Sub-Funktionen für jetzt und wir sind sehr glücklich mit dem, was wir sind Sehen.

Es lohnt sich auch, sich anzuschauen, was in der nächsten Version geschehen wird (Reduzierung der Netzwerkbandbreite um Abo-Anfragen stromaufwärts schieben)

    
Alan 30.09.2011 07:25
quelle
2

Ich schlage vor, dass Sie sich den Datenverteilungsservice für Echtzeit-Systeme (DDS) ansehen. Es ist speziell als skalierbare Pub / Sub-Middleware für Echtzeit- und Nicht-Echtzeit-Systeme konzipiert.

Es hat einige ausgereifte Implementierungen, die alle ihre eigenen Stärken haben, aber im Allgemeinen sind die Implementierungen skalierbar und haben eine niedrige Latenz.

Dies sind die Implementierungen, die ich Ihnen empfehlen würde (Wenn Sie sie in einer WAN-Umgebung verwenden müssen, haben die ersten beiden wahrscheinlich eine große Unterstützung):

Ertan D. 03.10.2011 08:03
quelle
1

Es scheint, dass Sie nach einer Art von Messaging suchen. Probier RabbitMQ , mit Schaufel oder Föderation Plugins

    
xelibrion 24.09.2011 12:37
quelle
1

nanomsg ist ein Nachfolger von ZeroMQ , vom selben Autor geschrieben und mit vielen Sprachbindungen.

Es ist in C geschrieben und verwendet keine Kopiermechanismen. Wenn Sie nach außergewöhnlicher Latenz suchen und bereit sind, Ihre Hände schmutzig zu machen (was Sie tun sollten, wenn Sie nach etwas Extremem streben), würde ich eines dieser beiden empfehlen.

Wenn Sie nach einem außergewöhnlichen Durchsatz suchen, verwenden Sie Kafka .

Beachten Sie, dass keine dieser Lösungen die Geolocation direkt implementieren, Redis 3.2 wird etwas haben: Ссылка

Wenn Sie nach einer einfachen, "gut genug" Lösung suchen, würde ich mit Redis gehen (achten Sie darauf, dieser Blog-Post von Aphyr zuerst).

    
nha 18.08.2015 15:04
quelle