Wie können mehr als 200.000 Push-Benutzer Parallelität der zweiten Ebene erreichen? In diesem Artikel werden drei Methoden vorgestellt, mit denen Redis den Abonnement-Push in Echtzeit implementieren kann: MQ, herkömmliche geplante Aufgaben und die SortSet-Warteschlange von Redis. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
【Verwandte Empfehlung: Redis-Video-Tutorial】
Vor einiger Zeit haben wir ein Projekt für das Coupon-Center des Unternehmens entwickelt, das mit Redis als Schlüsseltechnologie umgesetzt wird.
Lass uns zuerst über das Coupon-Sammelzentrum-Projekt sprechen. Dieses Projekt ähnelt dem Coupon-Sammelzentrum der JD.com-App. Natürlich stammt das Bild von JD.com, nicht vom Unternehmen. . .
Für den Erhalt von Gutscheinen gibt es eine Funktion namens Abonnement-Push.
Was ist Coupon-Abo-Push?
bedeutet, dass der Benutzer die Push-Benachrichtigung des Gutscheins abonniert hat und die Erinnerungsinformationen eine Minute vor der Inanspruchnahme an die App des Benutzers gesendet werden.
Ursprünglich sollte diese Abonnementfunktion vom Nachrichtencenter implementiert werden, aber es hieß, sie sei nicht in kurzer Zeit umsetzbar. Also habe ich, der Verantwortliche für Gutscheine, es getan -.-!. Der konkrete Plan besteht darin, den bestimmten Push-Zeitpunkt zu erreichen. Das Coupon-System ruft die Push-Schnittstelle des Nachrichtencenters auf, um die Informationen zu verbreiten.
Lassen Sie uns das Geschäftsszenario dieser Funktion analysieren. Das Unternehmen hat derzeit mehr als 6.000 W registrierte Benutzer, fragen Sie also nicht, wer es ist. . . Wenn es beispielsweise einen Rabattgutschein ohne Schwellenwert gibt, der bei der Bestellung einen sofortigen Rabatt von 20 Yuan bietet, werden sich mehr Leute diesen Gutschein schnappen. Wir gehen vorsichtig davon aus, dass der Preis bei 100.000+ liegt, und es ist schwer zu sagen, ob dies der Fall ist liegt im Millionenbereich. Unser ursprüngliches Ziel sind 200.000 Menschen, daher werden diese 200.000 Push-Nachrichten in einer Minute verschickt! Und ein Benutzer kann mehrere Gutscheine abonnieren. Wir wissen also, dass es bei dieser Abo-Funktion zwei herausragende Schwierigkeiten gibt:
Wirksamkeit von Push: Wenn der Push langsam ist, werden sich Benutzer darüber beschweren, dass sie nicht rechtzeitig benachrichtigt werden und die Möglichkeit verpassen, mit der Vorbestellung zu beginnen.
Das Volumen des Pushs ist riesig: Die beliebten Coupons, jeder will sie ergattern!
Allerdings beeinflusst die Lautstärke des Pushs die Effektivität des Pushs. Das bereitet wirklich Kopfschmerzen!
Dann lassen Sie uns die Probleme einzeln lösen!
Probleme mit der Wirksamkeit von Push: Wenn sich ein Benutzer im Coupon-Sammelzentrum für eine Coupon-Sammelerinnerung anmeldet, wird im Hintergrund ein Abonnement-Erinnerungsdatensatz eines Benutzers generiert, der den Zeitpunkt aufzeichnet, zu dem Push-Informationen an den Benutzer gesendet werden . Es stellt sich also die Frage, wie das System schnell und in Echtzeit auswählen kann, welche Datensätze übertragen werden sollen!
Option 1:
MQs verspätete Lieferung. Obwohl MQ die verzögerte Zustellung von Nachrichten unterstützt, ist der Maßstab zu groß, 1s 5s 10s 30s 1m, und kann nicht für die Zustellung zu genauen Zeitpunkten verwendet werden! Und wenn der Benutzer das Abonnement nach der Ausführung des Abonnements kündigt, ist das Löschen der gesendeten MQ-Nachricht etwas umständlich und in kurzer Zeit schwer umzusetzen! Und Benutzer können kündigen und dann abonnieren, was wiederum das Problem der Deduplizierung mit sich bringt. Daher wird der Plan von MQ abgelehnt.
Option 2:
Traditionelle geplante Aufgaben. Dies ist relativ einfach. Um eine geplante Aufgabe zu verwenden, laden Sie die Abonnementerinnerungsdatensätze des Benutzers in die Datenbank und wählen Sie die Datensätze aus, die derzeit übertragen werden können. Aber es gibt ein Sprichwort, das gut zutrifft: Jedes Design, das vom eigentlichen Geschäft getrennt ist, ist ein Schurke. Lassen Sie uns analysieren, ob herkömmliche geplante Aufgaben für unser Unternehmen geeignet sind. Kann es die gleichzeitige Ausführung mehrerer Maschinen unterstützen? Im Allgemeinen nicht, kann es nur auf einer einzigen Maschine gleichzeitig ausgeführt werden.
Die Speicherdatenquelle | ist normalerweise MySQL oder eine andere herkömmliche Datenbank und ist ein einzelner Tabellenspeicher. |
Frequenz | Unterstützt Sekunden, Minuten, Stunden und Tage, im Allgemeinen nicht zu schnell|
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über drei Redis-Methoden zur Implementierung von Abonnement-Push in Echtzeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!