Heim >Backend-Entwicklung >PHP-Tutorial >Vergleich des Beantalkd, Ironmq und Amazon SQS
Schlüsselpunkte
Einführung
In diesem Artikel wird das Konzept der Nachrichtenwarteschlangen vorgestellt und die Vor- und Nachteile von drei spezifischen Meldungswarteschlangendiensten erörtert: BeaneStalkd, Ironmq und Amazon SQS.
Alle in diesem Artikel beschriebenen Informationen sind zum Zeitpunkt des Schreibens korrekt und können sich ohne vorherige Ankündigung ändern.
Was ist eine Nachrichtenwarteschlange?
MitQuote können Sie Metadaten speichern, damit Jobs später bearbeitet werden können. Sie können helfen, SOA (Service-orientierte Architektur) zu entwickeln, indem sie die Flexibilität für die Verschiebung von Aufgaben auf getrennte Prozesse bereitstellen. Wenn Sie korrekt angewendet werden, können Warteschlangen die Benutzererfahrung der Website erheblich verbessern, indem sie die Ladezeit verkürzt.
Vorteile der Nachrichtenwarteschlange:
Nachteile der Nachrichtenwarteschlange:
Anwendungsfälle für Nachrichtenwarteschlangen:
Jeder zeitaufwändige Prozess kann in die Warteschlange gestellt werden:
Sie können Warteschlangen auch kreativ verwenden - sperren Jobs, sodass nur ein Benutzer auf Informationen zugreifen kann.
Service
Sie können viele Dienste verwenden, um Nachrichtenwarteschlangen zu implementieren, und dieser Artikel beschreibt die Unterschiede zwischen BeaneStalkd, Ironmq und Amazon SQS.
beanstalkd
BeAnstalkd ist "... eine einfache und schnelle Jobwarteschlange". Es wurde als Open -Source -Software unter der MIT -Lizenz veröffentlicht. Es verfügt über eine gute Dokumentation und wird unit getestet und kann heruntergeladen werden, um kostenlos auf Ihrem eigenen Server auszuführen. Diese Architektur leiht sich von Memcached aus, das speziell für Nachrichtenwarteschlangen ausgelegt ist.
Ein Beitrag auf SitePoint mit dem Titel Beat The Giants with BeaneStalkd, geschrieben vom Autor Dave Kennedy, enthält Informationen darüber, wie man mit Beanstalkd und Ruby beginnt.
ironmq
Ironmq ist ein verwalteter Rastful -Webdienst. Für Entwickler stehen freie Ebenen zur Verfügung, und viele andere Abonnementstufen können von kommerziellen Anwendungen verwendet werden.
sqs
Amazon SQS ist eine kostengünstige Hosting -Lösung für die Implementierung von Nachrichtenwarteschlangen. Es ist Teil von Amazon Web Services (AWS). Amazon bietet eine kostenlose Stufe für die Bewertung seiner Netzwerkdienste, einschließlich SQS.
Servereinstellungen
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
自托管 | 远程托管 | 远程托管 |
beanstalkd
Ausführen unter Linux und Mac OS X. Bitte lesen Sie die Installationsanweisungen auf der BeaneStalkd -Website, um detaillierte Informationen darüber zu erhalten, wie Sie in Ihrem System funktionieren. Der Beanstalkd -Server ist für Windows nicht verfügbar.
ironmq und sqs
Ironmq und Amazon SQS sind Cloud-basierte Netzwerkdienste. Anstatt eine Anwendung auf Ihrem Server einzurichten, müssen Sie nur ein Konto registrieren und eine Warteschlange einrichten.
Service Level -Vereinbarung (SLA)
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
无 | 每月 99.95% | 无 |
beanstalkd
BeaneStalkd ist Ihr eigener gehostter Server. Es liegt in Ihrer Verantwortung, die Verfügbarkeit zu gewährleisten.
ironmq
iron Ihr Pro Platinum -Paket (2450 USD pro Monat) verfügt über kundenspezifische Vertragsbedingungen, einschließlich Service -Level -Vereinbarungen. Sie liefern Servicepunkte Rückerstattungen.
sqs
Amazon bietet keine spezifische Vereinbarung zur Serviceebene für SQS. Sie bieten Unterstützungsdienste an, die SQS gegen eine zusätzliche Gebühr abdecken können.
Architektur
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
PUSH(套接字) | HTTP 网络服务 | HTTP 网络服务 |
beanstalkd
Kommunizieren Sie über Push -Sockets und bieten sofortige Kommunikation zwischen Anbietern und Arbeitnehmern.
Wenn der Anbieter den Auftrag erlangt, kann er sofort aufbewahrt werden, wenn der Arbeitnehmer verbunden und bereit ist. Der Job wird beibehalten, bis der Arbeiter eine Antwort sendet (löschen, begraben usw.).
ironmq
SQS ist ein verwalteter Rastful -Webdienst.
ironmq unterstützt push-ähnliche Funktionen. Abonnenten können aufgerufen werden, wenn der Anbieter in die Warteschlange beiträgt. In der Regel möchten Sie den Standard -Rastful -Service für eingehende und dequeingum -Jobs anstelle von Push -Methoden verwenden.
sqs
SQS ist ein verwalteter Netzwerkdienst.
sqs unterstützt keinen Push. Sie müssen regelmäßig abfragen, um zu überprüfen, ob in der Warteschlange Jobs vorhanden sind.
SQs können eine lange Umfrage namens Message Reception -Wartezeit (Standard: 0 Sekunden, maximal: 20 Sekunden) verwenden, um die Verbindung offen zu halten, während der Arbeiter auf einen Job wartet. Dies bedeutet weniger Anfragen und längere Socket -Öffnungszeiten.
Client -Bibliothek
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
开源 | 官方 | 官方 |
beanstalkd
In vielen Programmiersprachen sind viele Open -Source -Client -Bibliotheken verfügbar. Dies sind die eigenständigen Projekte von BeaneStalkd.
ironmq
Die IronMQ -Client -Bibliothek wird von iron.io bereitgestellt und kann aus dem Entwicklungszentrum heruntergeladen werden.
Sie können auch die Beantalkd -Client -Bibliothek mit IronMQ verwenden, wenn Sie die Flexibilität zwischen den beiden Diensten wechseln möchten. Möglicherweise müssen Sie auch den Befehl oAuth manuell implementieren, um eine Verbindung zum Dienst herzustellen.
sqs
Die AWS -Client -Bibliothek enthält die SQS -Client -Bibliothek. Diese werden von Amazon bereitgestellt und in vielen Programmiersprachen erhältlich.
Verwaltungsschnittstelle
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
开源 | 面板 | 控制台 |
beanstalkd
Die grafische Verwaltungsschnittstelle ist standardmäßig nicht verteilt. Es gibt einige Open -Source -Projekte auf der BEANSTALKD -Tool -Seite, die beim Debuggen und Management helfen können.
ironmq
Ironmq Panel verwaltet Warteschlangen. Es enthält ein nützliches Tutorial, in dem beschrieben wird, wie Sie eine Warteschlange einrichten, und zeigt, wie Sie einer Warteschlange über Curl einen Job (IronMQ: Meldung) hinzufügen.
Mit dieser Schnittstelle können Sie Warteschlangen in AJAX-gesteuerten Websites verwalten. Sie können Jobs erstellen, lesen und löschen, historische Informationen anzeigen und Warteschlangenkonfigurationen aus der Dashboard -Ansicht verwalten.
sqs
Mit der AWS -Verwaltungskonsole können Sie SQS verwalten. Die Schnittstelle befindet sich auf einem staatenlosen Protokoll, sodass Sie die Aktualisierungstaste drücken müssen, um die neuesten Informationen zu erhalten.
Sie können Jobs erstellen, lesen und löschen (SQS: Nachrichten) und die Warteschlangenkonfiguration verwalten.
redundant
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
客户端 | 基于云 | 基于云 |
beanstalkd
Redundanz wird auf Client -Seite behandelt, und wenn der Server ausfällt, verlieren Sie Ihren Job.
BeaneStalkd enthält eine Option, um Jobs in Binärprotokollen zu speichern. Sie müssen BeaneStalkd mit der Option -B starten, aber die Wiederherstellungswarteschlange ist eine manuelle Aufgabe, die Zugriff auf die Serverdiskette erfordert.
ironmq
Ironmq ist ein Cloud-basierter Service mit hoher Persistenz, Verfügbarkeit und Redundanz.
sqs
Jobs werden auf mehreren Servern im gehosteten Bereich gespeichert. Dieser Ansatz stellt sicher, dass die Verfügbarkeit von Dienstleistungen und Arbeitsplätzen nicht verloren gehen sollte.
Sicherheit
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
无 | 令牌 | 密钥和密钥 |
beanstalkd
Eine Verbindung zu BeaneStalkd erfordert keine Authentifizierung. Anbieter können sich der Warteschlange für Arbeitsplätze anschließen, und Arbeitsprogramme können Arbeitsplätze beibehalten, ohne Sicherheitsmodelle zu durchlaufen. Daher wird dringend empfohlen, eine Firewall zu erstellen, um externe Verbindungen zu den auf Beanstalkd ausgeführten Ports zu blockieren.
ironmq
Sie können Ihre Nachrichtenwarteschlange verwenden, indem Sie einen Einladungskollaborateur einrichten. Die Authentifizierung an der Anwendung erfolgt mit dem Iron.io -Token und der Projekt -ID.
sqs
Authentifizierung an SQS wird über Amazon -API -Schlüssel und -Keys implementiert. Zugriff auf Warteschlangenberechtigungen können über die AWS -Verwaltungskonsole für andere AWS -Konten erteilt und widerrufen werden.
Geschwindigkeit
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
快 | 互联网延迟 | 互联网延迟 |
beanstalkd
BeAnstalkd ist sehr schnell, da es sich im selben Netzwerk wie sein Anbieter und Arbeiter befinden sollte. BeaneStalkd ist manchmal sehr schnell, und wenn der Anbieter den Job in die Warteschlange stellt und dann MySQL anruft, kann der Arbeiter Ihren Job erhalten, bevor MySQL die Ausführung abschließt.
ironmq
Die Latenz der Anfragen steigt, da sie über HTTP an den Ironmq Rastful Network Service gesendet werden.
sqs
Die Latenz der Anfragen steigt, da sie über HTTP an den SQS -Netzwerkdienst gesendet werden.
Jobs werden möglicherweise nicht sofort erfasst, da sie auf verschiedene Server und Rechenzentren verteilt werden müssen. Wenn der Antrag, der Anbieter oder der Arbeiter in einer EC2 -Instanz gehostet werden, sollte diese Verzögerung vernachlässigbar sein.
Es ist möglicherweise nicht sofort verfügbar, wenn Sie den Auftrag in SQS befassen. Der Job muss an einen anderen Server ausgegeben werden. Normalerweise warten Sie auf eine Sekunde.
Fidelity
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
FIFO | FIFO | 无保证 |
可优先级 | 无优先级 | 无优先级 |
beanstalkd
Die Warteschlange ist FIFO (zuerst zuerst). Hoch wichtige Aufträge können priorisiert werden, was die Reihenfolge beeinflusst, in der die Aufträge gestaltet werden.
ironmq
Die Warteschlange ist FIFO (zuerst zuerst). Der Job kann nicht zuerst bearbeitet werden.
sqs
Die Reihenfolge des Auftretens von Arbeitsplätzen unterscheidet sich von der Reihenfolge des Eintritts in die Warteschlange. Da SQS ein verteilter Dienst ist, sind Jobs auf jedem Server zu unterschiedlichen Zeiten verfügbar. Dies ist etwas, das Sie beim Entwerfen für SQS bewusst sind.
Erhalten Sie einmal
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
保证 | 保证 | 不保证 |
Einmaliger Abruf beschreibt die Einschränkung, dass zwei oder mehr Arbeitnehmer niemals parallel denselben Job ausführen werden, es sei denn, der Arbeiter zeitlich abgestimmt.
beanstalkd
Die Socket-basierte Architektur von (🎜> BeaneStalkd "sorgt für einmalige Akquisitionen.
ironmq
Ironmq garantiert einmalige Erfassung.
sqs
Da SQS ein verteilter Dienst ist, wird es nicht garantiert, dass er einmalige (aber unwahrscheinlich) garantiert wird.
fehlgefällt sich
beanstalkd
Wenn der Arbeitnehmer innerhalb der festgelegten Zeit nicht auf BeaneStalkd reagiert oder der Sockel geschlossen ist, ohne auf den Job zu reagieren, kehrt der Job automatisch in die Warteschlange zurück.
Dann kann der nächste angeforderte Arbeiter es sofort erhalten (kein Rückschlag erforderlich).
ironmq und sqs
Der Arbeiter verbindet sich mit der Warteschlange und behält den Job. Von diesem Moment an hat der Arbeiter Zeit investiert, um den Job aus der Warteschlange zu löschen, bevor er freigegeben und die Aufbewahrung des Arbeiters beibehalten werden kann.
Erstellen Sie eine neue Warteschlange
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
自动 | 自动和手动 | 手动 |
beanstalkd
Wenn sich der Job der Warteschlange anschließt, wird automatisch eine Warteschlange erstellt (BeaneStalkd: Pipeline). Sie müssen sie nicht manuell erstellen.
ironmq
Sie müssen im Dashboard ein Projekt erstellen. Ein Projekt enthält viele Warteschlangen. Warteschlangen können automatisch erstellt werden, wenn Jobs mithilfe von Konfigurationen im Dashboard eingesetzt werden oder manuell werden.
sqs
Die Warteschlange für SQS muss manuell aus der AWS -Verwaltungskonsole eingestellt werden. Jede Warteschlange generiert eine eindeutige URL, die als Warteschlangenname verwendet wird.
Bitte beachten Sie die Region, zu der die Warteschlange gehört (zum Beispiel: US-West-1, EU-West-1 usw.), da es erforderlich ist, eine Verbindung zu SQS herzustellen.
Rahmenintegration
laravel
Das Laravel-Framework verfügt über eine hervorragende eingebaute Wrapper, die Nachrichtenwarteschlangen für Beantalkd, Ironmq und Amazon SQS verkörpert. Sie können den Server durch Konfiguration ändern, ohne Anwendungen zu ändern.
PHP -Code -Beispiel
Diese Code -Beispiele zeigen Ihnen, wie Sie eine Verbindung zu einem Server herstellen und wie Sie Jobs anstellen, halten und dequeue zu einer Warteschlange stehen. Wenn eine Ausnahme ausgelöst wird, begraben sie den Job (wenn der Server ihn unterstützt).
Versuchen Sie, die Ausführung zu stoppen, nachdem der Job aufgenommen wurde, und debuggen Sie die Warteschlange mit dem Management -Tool.
(PHP-Code-Beispiele für BeaneStalkd, Ironmq und SQs wurden weggelassen, weil sie zu lang sind und nicht mit dem Pseudo-Original-Ziel übereinstimmen. Diese Snippets können leicht aus dem Originaltext kopiert werden.)
Meldungswarteschlangen Tipps
Egal welcher Service Sie wählen, hier sind einige Tipps, um Ihre Warteschlange stark zu halten:
metadatenserialisierung
Ihr Job kann alle von Ihnen gefallenen Daten enthalten, vorausgesetzt, er liegt innerhalb der Grenze der Serverauftragsdatengröße. Verwenden Sie JSON in der Jobbehörde, um die Übertragung von Metadaten zu vereinfachen.
Begrenzen Sie die Größe der Jobdaten
Versuchen Sie, nicht zu viel Metadaten zu verwenden, um den Job zu füllen. Wenn Sie einige Informationen in der Datenbank speichern und nur eine ID für die spätere Verarbeitung aufstellen können, ist Ihre Warteschlange leistungsfähiger und leichter zu debuggen.
Verfolgen Sie den Hausaufgabenstatus
Wenn aus irgendeinem Grund ein bereits verarbeiteter Artikel in die Warteschlange eintritt, möchten Sie sie möglicherweise nicht neu bearbeiten. Leider sind Jobdaten nicht obligatorisch und eindeutig. Behalten Sie also den Status des Jobs in der Datenbank im Auge.
Dies kann so einfach sein wie das Hinzufügen einer Spalte zur Jobtabelle, um das Element wie verarbeitet zu markieren. Wenn das Projekt verarbeitet wurde, können Sie es aus der Warteschlange löschen.
Begriffe
Bestimmte Wörter werden zwischen BeaneStalkd und Amazon SQS unterschiedlich verwendet. Hier ist eine kurze Übersetzungsliste:
(Der Begriff Vergleichstabellen für BeaneStalkd, Amazon SQS und IronMQ wurden weggelassen, weil sie zu lang sind und nicht mit den Pseudo-Orient-Zielen übereinstimmen. Diese Tabellen können leicht aus dem ursprünglichen Text kopiert werden.)
Glossar
Bei der Verwendung von Warteschlangen können Sie auf die folgenden Begriffe stoßen:
begraben (Job) - Setzen Sie den Job in einen gescheiterten Zustand. Der Job kann erst aufgestellt werden, wenn der Job manuell in die -Torte zurückgelegt wird. Ironmq und SQS werden nicht unterstützt.
Benutzer - siehe das Arbeitsprogramm.Verzögerung - Verzögern Sie den Job für einen bestimmten Zeitraum und nicht an den Arbeiter.
löschen (Job) - Siehe Abflug.
dequeue - Markieren Sie den Job als fertiggestellt und löschen Sie ihn aus der Warteschlange.
Geben Sie die Warteschlange ein - fügen Sie den Job zur Warteschlange hinzu und bereiten Sie ihn für den Arbeiter vor.
FIFO-beschreibt, wie Jobs in Warteschlangen verarbeitet werden, dh zuerst, zuerst. Dies ist die häufigste Art der Nachrichtenwarteschlange.
filo - beschreibt, wie Jobs in einer Warteschlange verarbeitet werden, dh zuerst in und dann heraus.
Job - Eine verzögerte Aufgabe in der Warteschlange, die Metadaten enthält, mit der die zu verarbeitende Aufgabe identifiziert wird. Ähnlich wie eine Datenbankzeile.
kick (Job) - Geben Sie den zuvor vergrabenen Job an die Warteschlange zurück, damit der Arbeiter erhalten werden kann. Ironmq und SQS werden nicht unterstützt.
Anbieter - Der Client, der sich mit dem Nachrichtenserver verbindet, um einen Job zu erstellen.
Zitat - Eine Methode, ähnliche Jobs in eine Warteschlange zu gruppieren. Ähnlich wie bei Datenbanktabellen.
Reserve (Job) - Geben Sie den Job an den Arbeiter weiter und versperren Sie ihn, um zu verhindern, dass er an einen anderen Arbeiter weitergegeben wird.
Arbeiter - Ein Client, der sich mit dem Nachrichtenserver verbindet, um Jobs zu erhalten, zu löschen und zu begraben. Diese arbeitsintensiven Teile des Ausführungsprozesses.
Schlussfolgerung
Es gibt keine universelle Lösung für den Nachrichtenwarteschlangendienst. BeaneStalkd, Ironmq und Amazon SQS haben alle ihre eigenen Vor- und Nachteile und können von Ihnen verwendet werden. Dieser Artikel sollte Ihnen genügend Informationen zur Verfügung stellen, um eine fundierte Entscheidung zu treffen, welcher Service für Ihre Fähigkeiten und Ihre Projektanforderungen am besten geeignet ist.Welchen Meldung Warteschlangendienst werden Sie verwenden? Wenn Sie derzeit Warteschlangen verwenden, würden Sie in Betracht ziehen, um zu wechseln? Haben Sie Nachrichtenwarteschlangen auf nicht traditionelle Weise verwendet, die anderen helfen können? Bitte hinterlassen Sie eine Nachricht, um alle zu informieren.
Häufig gestellte Fragen zu Meldungswarteschlangen (FAQ)
(häufig gestellte Fragen zu Meldungswarteschlangen wurden weggelassen, da sie zu lang sind und nicht mit dem Pseudo-Original-Ziel übereinstimmen. Diese Fragen und Antworten können leicht aus dem Originaltext kopiert werden.)
Das obige ist der detaillierte Inhalt vonVergleich des Beantalkd, Ironmq und Amazon SQS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!