2017-05-04 5 views
1

Ich habe eine Aufgabe der Verwendung von Pub/Sub für eine große Anzahl von Listenern. Hier wird beispielsweise von Abonnement von docs vereinfacht:Wie viele Kanäle kann Redis (redis-py) verarbeiten?

r = redis.StrictRedis(...) 
p = r.pubsub() 
p.subscribe('my-first-channel', 'my-second-channel', ...) 

for message in p.listen(): 
...  # do something with the message 

nehme ich an einen Client für einen Kanal client-#id abonnieren. Ein Kanal für jeden Kunden. Die Frage ist: Ist es in Ordnung, diese Methode zu verwenden, wenn ich Hunderte oder Tausende von Benutzern haben werde? Sollte ich sie alle für einen Kanal abonnieren und user-#id in der Nachricht verschlüsseln, um auf Empfang zu filtern?

Antwort

0

Es kommt darauf an, wie Sie Ihren Redis bereitstellen und wie viel Verkehr Sie generieren. Ein Client-Abonnement ist nur eine Netzwerkverbindung, so dass Sie einige davon haben können. Redis ist ziemlich leistungsfähig und kann die NICs des Servers sogar auf einem relativ schwachen CPU-Kern leicht sättigen, wenn alle Ihre 100K Clients die ganze Zeit kommunizieren, die ein Flaschenhals sein könnte. In solchen Fällen sollten Sie einen Redis-Cluster bereitstellen, um die Auslastung zu skalieren und zu verarbeiten.

Verwandte Themen