Was ist Sharded Pub/Sub in Redis 7?
Sharded Pub/Sub in Redis 7 verbessert die Pub/Subskalierbarkeit, indem sie den Nachrichtenverkehr über mehrere Threads verteilen. Das traditionelle Redis Pub/Sub wurde durch ein einsthreades Modell begrenzt, das unter hoher Belastung zu einem Engpass werden konnte. Mit Sharded Pub/Sub sind die Kanäle in Scherben unterteilt, die bestimmten E/A -Threads zugeordnet sind. Jeder Thread verarbeitet die Nachrichtenzustellung für den zugewiesenen Shard, reduziert die Streitigkeiten und die Verbesserung der Leistung. Zu den wichtigsten Punkten gehören: 1) Kanal-zu-Shard-Mapping über Hashing; 2) konfigurierbare Anzahl von Scherben; 3) Verwendung von Ssubscribe für Sharded -Abonnements; 4) Automatisches Sharding während der Veröffentlichung. Es ist ideal für Anwendungen mit vielen Kanälen wie Echtzeit-Chat-Systemen oder IoT-Plattformen. Um es zu verwenden, ersetzen Sie das Abonnieren durch SSUBScribe, während die Veröffentlichung unverändert bleibt. Kunden müssen sich ausdrücklich für das Sharding entscheiden, und beide Modi können während der Migration koexistieren.
Sharded Pub/Sub in Redis 7 ist ein neues Merkmal, das eine der Einschränkungen des traditionellen Redis Pub/Sub -Systems - Skalierbarkeit - befasst. Wenn Sie Redis für Echtzeit-Nachrichten verwenden und über mehrere Kanäle oder Muster verfügen, insbesondere unter hoher Last, haben Sie möglicherweise zuvor Leistungsprobleme erreicht. Sharded Pub/Sub hilft, indem er Pub/Sub -Verkehr über alle verfügbaren Ereignisschleifen (oder Fäden) verbreitet, anstatt alles über den Hauptfaden zu leiten.
Warum es gebraucht wurde
Redis hat immer ein einsthreades Modell zum Umgang mit Befehlen verwendet, das die Dinge einfach hält, aber beim Umgang mit großen Volumina von Pub/Sub-Nachrichten zu einem Engpass werden kann. In früheren Versionen, selbst wenn Redis mit aktiviertem Gewinde -E/A zusammengestellt wurde, gingen alle Pub/Sub -Operationen immer noch durch den Hauptfaden. Dies bedeutete, dass die Veröffentlichung oder Übergabe von Nachrichten an viele Abonnenten andere Vorgänge blockieren konnten.
Mit Redis 7 ändert sich dies.
Wie funktioniert Sharded Pub/Sub?
Die Kernidee hinter Sharded Pub/Sub ist Sharding - die Verantwortung der Verantwortung für die Bereitstellung von Nachrichten über mehrere Threads hinweg. So funktioniert es:
- Redis unterteilt Kanäle in logische Gruppen, die als "Shards" bezeichnet werden.
- Jeder Shard ist einem bestimmten E/A -Thread zugeordnet.
- Wenn ein Client einen Kanal abonniert, ist das Abonnement mit dem für diesen Kanal verantwortlichen Shard (und so Thread) registriert.
- Meldungen, die in einem Kanal veröffentlicht wurden, werden von demselben Thread verarbeitet und übermittelt, wodurch die Synchronisationsaufwand in der Synchronisation vermieden wird.
Auf diese Weise kann Redis die Pub/Subleistung effektiver skalieren, wenn die Anzahl der CPU -Kerne zunimmt.
Einige wichtige Punkte:
- Kanalnamen werden mithilfe einer Hashing -Funktion den Scherben zugeordnet.
- Die Anzahl der Scherben ist über
redis.conf
(pubsub_shard_streams_per_node
) konfigurierbar. - Abonnenten erhalten nur Nachrichten von den Kanälen, denen sie unterzeichnet haben -es gibt einen separaten Befehl dafür:
SSUBSCRIBE
.
Wann solltest du es benutzen?
Sie sollten in Betracht ziehen, Sharded Pub/Sub zu verwenden, wenn:
- Ihre Anwendung verwendet eine große Anzahl von Kanälen.
- Sie erleben Leistungs Engpässe aufgrund schwerer Kneipe/Sub -Nutzung.
- Sie möchten Redis horizontal skalieren, ohne mehr Instanzen nur für die Nachrichtenverteilung hinzuzufügen.
Es ist besonders nützlich in Anwendungen wie:
- Echtzeit-Chat-Systeme mit vielen Räumen oder Themen.
- Benachrichtigungsdienste Übertragung von Updates für viele Benutzer.
- IoT -Plattformen, auf denen jedes Gerät Statusaktualisierungen auf seinen eigenen Kanal veröffentlicht.
Wenn Ihr Anwendungsfall nur wenige Kanäle mit vielen Abonnenten umfasst, kann Standard Pub/Sub noch in Ordnung sein. Sobald Sie jedoch mit der Skalierung der Anzahl der Kanäle oder einer geringeren Latenz pro Nachricht beginnen, passt das Sharding zu einer besseren Passform.
So verwenden Sie Sharded Pub/Sub
Die Verwendung von Sharded Pub / Sub ist unkompliziert, unterscheidet sich jedoch von dem klassischen SUBSCRIBE
/ PUBLISH
. Folgendes müssen Sie tun:
- Verwenden Sie
SSUBSCRIBE
anstelle vonSUBSCRIBE
, um einen Kanal auf geschützte Weise zu abonnieren. - Um in einem Sharded -Kanal zu veröffentlichen, verwenden Sie
PUBLISH
- das Sharding wird automatisch auf der Grundlage des Kanalnamens behandelt. - Verwenden Sie zum Abbestellen
SUNSUBSCRIBE
.
Beispiel:
# Abonnieren Sie einen Sharded -Kanal client1> ssuBscribe mychannel # Veröffentlichen Sie eine Nachricht, die vom richtigen Thread behandelt wird Client2> Mychannel "Hallo Sharded World" veröffentlichen
Denken Sie daran:
- Kunden müssen
SSUBSCRIBE
ausdrücklich nutzen, um Sharding zu nutzen. - Classic
SUBSCRIBE
undSSUBSCRIBE
können nicht in derselben Verbindung gemischt werden. - Tools oder Clients, die nicht für Redis 7 aktualisiert wurden, verwendet Sharded Pub/Sub, sofern nicht geändert.
Da Redis 7 beide Modi unterstützt, können Sie Teile Ihrer App nach und nach migrieren, um Sharded -Abonnements zu verwenden, während andere auf dem traditionellen Modell aufbewahrt werden.
Letzte Gedanken
Sharded Pub/Sub in Redis 7 bringt die Verbesserungen der Skalierbarkeit von Redis in Echtzeit-Messaging-Funktionen mit dringend benötigten Skalierbarkeit. Durch die Zuweisung von Kanälen zu verschiedenen Threads kann Redis einen viel höheren Durchsatz bewältigen, ohne die Einfachheit oder Zuverlässigkeit zu beeinträchtigen.
Wenn Sie mit Redis im Maßstab arbeiten, insbesondere in Pub/Sub-Heavy-Umgebungen, lohnt es sich, diese Funktion zu verbessern und auszuprobieren.
Das ist im Grunde genommen - nicht zu kompliziert, aber definitiv ein großer Schritt vorwärts für Redis als Messaging -Plattform.
Das obige ist der detaillierte Inhalt vonWas ist Sharded Pub/Sub in Redis 7?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PSYNC ist ein teilweise Resynchronisierungsmechanismus bei der Replikation der Redis-Master-Slave, mit der nur Daten synchronisiert werden, die während der Trennung verloren gegangen sind, nachdem der Slave-Server getrennt wurde, um die Synchronisationseffizienz zu verbessern. Sein Kern beruht auf dem Replikationsbacklog, bei dem es sich um eine vom Hauptserver verwaltete Warteschlange handelt. Die Standardgröße beträgt 1 MB und speichert die zuletzt ausgeführten Schreibbefehle. Wenn sich der Slave -Server wieder verbindet, wird ein PSYNC -Befehl gesendet, und der Master -Server bestimmt, ob eine teilweise Synchronisation basierend darauf durchgeführt werden kann: 1. Der Runid muss konsistent sein; 2. Der Offset muss im Backlog -Puffer sein. Wenn die Bedingung erfüllt ist, werden die Daten weiterhin vom Offset gesendet, ansonsten werden die vollständige Synchronisation ausgelöst. Methoden zur Verbesserung der Erfolgsrate von PSYNC umfassen: 1. Angemessen erhöhen die Repl-B

SetsetsakeywitHoptionalconditionSandexpiration, setNxSetSakeyonlyifitdoesN'Texist, AndsetExsakeyWithanexpiration

LRANGE wird verwendet, um Elemente des angegebenen Bereichs aus der Redisliste herauszunehmen, wobei positive und negative Indizes unterstützt werden. 1. Verwenden Sie 0 bis -1 für die gesamte Liste; 2. Verwenden Sie 0 bis N-1 für das erste n; 3. verwenden Sie -n bis -1 für das letzte n; 4. Verwenden Sie -n bis -1 für die Seite; V. Beachten Sie, dass der Start größer als die Länge oder der Stopp übersteigt das Ende, der leere oder gültige Teil zurückgibt und starten> Stopp auch leer, was für Cache, Protokoll, Warteschlange und andere Szenarien geeignet ist.

RedissupportsgeospatialdatastorageandQuerieSviaitsgeodatatype.1. UseGeoaddtostorecoordinatenmasmbersUnterakey, mit SSYNTAXGEOADDKEYLONGITUDELATIDEMBEMITME.2.QUEYNEARBYOCATIONSUSUTHEUTGEORADIUS, WHO RETRETURSUMBERSMERBERSCHIFTECIFTECIFTECIFTECIFTECIFTECIFTECIFTECIFTECIFTECIFTECIFTECIFTERTICIENTREFROMAGREFROMAGEGROMAGEGRAMAGEGRAMAGEGEGEST

TimeoutSinRedIsBlockingListCommands -ähnlichemBlpop, BRPOP, orbrpoplpushareSentialforcrolledWaiting.1.TheySpecifyHowlongredisshoitWaitfordatabeForerTurningnil, Verhinderung derIntenfinitierende

Quorum in redissentinel -Konfiguration bezieht sich auf die minimale Anzahl von Sentinel -Knoten, die vor dem Auslösen des Failover vereinbart werden müssen. Wenn beispielsweise 5 Sentinels eingestellt sind und Quorum 3 beträgt, müssen mindestens 3 Wachposten bestätigen, dass der Masterknoten vor dem Initiieren des Failover nicht erreichbar ist. 1. Quorum beschließt, den Master -Knoten als minimale Konsensnummer zu markieren, die zur Markierung der subjektiven Downline (sdown) und der objektiven Downline (ODOWN) erforderlich sind. 2. Das Einstellen zu hoch kann im Laufe der Zeit einen Fehler verursachen, und das Einstellen zu niedrig kann ein Fehleinschätzung verursacht werden. 3. Es wird empfohlen, ungerade Sentinels zu verwenden und Quorum auf etwas mehr als die Hälfte der Gesamtzahl einzustellen. V. 5

RedisStreamSissülobableforlightgewichtin-MemoryStreamprocessingwithinredis, whilkafkaexcelsinhigh-throughput, DurablelogstorageandMQincomplexrouting und GuarantedDelivery.Redissreamswellwellforreal-timalalyticaljobsqueuesWherespeedmattersMattersmattersmattersmattersmattersmattersmattersMalljobsMalljobsmalljobsmalljobsqueueSmassersMalljobsmasersmalljobsqueueTicsMalljobqueueSwherespeedmattersmuthatters,,
