Ich habe Redis als Nachrichtenwarteschlange verwendet und plötzlich dachte ich: Gibt es eine bessere?
Antwortinhalt:
Wir verwenden Bohnenstange, qps beträgt etwa 1000
Wenn Sie lediglich Warteschlangendienste ausführen, empfehle ich Beanstalkd (klein, gute Leistung). Wenn Sie hohe Verfügbarkeit und großes Volumen berücksichtigen, können Sie Kafka verwenden.
Warum weisen Sie nicht zunächst auf die Aspekte der bestehenden Lösung hin, die nicht gut genug sind?
Ich habe das Gefühl, dass dieses Problem nichts mit PHP zu tun hat? Bei der Auswahl der Nachrichtenwarteschlange werden Geschäftsszenarien stärker berücksichtigt:
* Leistung, z. B. wie viele Nachrichten pro Sekunde. Wenn Sie Zehntausende Nachrichten pro Sekunde haben, können Beanstalk und RabbitMQ nicht direkt verwendet werden.
* Zuverlässigkeit, dürfen Nachrichten verloren gehen? Ist Durchhaltevermögen gefragt?
* Hohe Verfügbarkeit, können Ausfallzeiten toleriert werden?
* Ob eine Verteilung erforderlich ist
* Betriebs- und Wartungskosten, ob die Entwicklung (Betrieb und Wartung) Ihres Unternehmens in der Lage ist, diese Nachrichtenwarteschlange aufrechtzuerhalten
* Kundenunterstützung, dies erfolgt auf Sprachebene. Kafka ist beispielsweise eine sehr gute Nachrichtenwarteschlange, aber der PHP-Client ist nicht sehr gut geschrieben und es ist schwierig, ihn selbst neu zu schreiben. Daher sollten Sie bei der Auswahl vorsichtig sein.
Nachdem Sie diese Faktoren abgewogen haben, können Sie entscheiden, wie Sie wählen möchten.
Welche Nachrichtenwarteschlangen gibt es: Nachrichtenwarteschlange
Leistungsvergleich:
http://bravenewgeek.com/dissecting-message - Warteschlangen/
redis,rabbitmq
Verwenden Sie Redis und Rabbitmq
Dies hängt von Ihrem Anwendungsszenario ab. Im Allgemeinen ist die Verwendung von Redis relativ einfach, aber Redis kann die Situation nicht erkennen, in der die Nachricht nicht normal verarbeitet wird und andere Prozesse die Nachricht trotzdem verarbeiten können, d Verarbeitung der Nachricht.
Wenn Sie eine vollständige Nachrichtenwarteschlange wünschen, habe ich Folgendes verwendet: Gearman und Rabbitmq, die beide gut sind.
php-resque
Getriebemann. Wenn Sie keinen Nachrichtenverlust über Netzwerke hinweg benötigen, können Sie sich auch für Kafka entscheiden
Arbeitnehmer