Die Wahl zwischen .NET Service Bus Queues vs Azure Queue Service [geschlossen]
-
19-09-2019 - |
Frage
Nur eine kurze Frage bezüglich einer Azure-Anwendung. Wenn ich eine Reihe von Web und Worker-Rollen haben, die miteinander kommunizieren müssen, sagt Dokumentation der Azure Queue Service zu nutzen.
Allerdings habe ich gerade gelesen, dass der neue .NET Service Bus nun auch Warteschlangen bietet. Diese sehen sein mächtiger als sie eine viel detailliertere API zu bieten scheinen. Während die .NSB interessanter aussieht hat es ein paar Probleme, die mich von in verteilten Anwendung verwendet es vorsichtig machen. (ZB Queue Expiration ... wenn ich kann nicht garantieren, dass eine Warteschlange rechtzeitig erneuert werde ich alles verlieren kann!).
Hat jemand Erfahrung hatte mit einem dieser beiden Technologien und einen Rat geben könnte, wenn man über den anderen zu wählen.
Ich vermute, dass, während der Service-Bus sieht stärker, als mein Anwendungsfall ist wirklich nur ermöglicht, Web / Worker Rollen zwischen miteinander zu kommunizieren, dass der Azure Queue Service ist das, was ich bin nach. Aber ich bin wirklich nur nach Bestätigung, dass vor mir Progamming an eine Ecke in: -)
Vielen Dank im Voraus.
UPDATE
gelesen haben über die beiden Systeme über das Auseinanderbrechen. Es defo sieht aus wie .NET-Service-Bus ist speziell konzipiert für Systeme, statt sie als ein Allzweck-Reliable Messaging-System zu integrieren. Azure Queues verteilt sind und so zuverlässig und skalierbar in einer Weise, dass .NSB Warteschlangen sind nicht und so besser geeignet für Code innerhalb Azure selbst gehostet werden.
Danke für die Antworten.
Lösung
Ich würde empfehlen, dass Sie mit Azure-Warteschlangen-Stick für die Kommunikation zwischen Web und Arbeitern Rollen. Mit Warteschlangen ist die offizielle und sanktioniert Weg zwischen Azure Prozesse der Kommunikation und ich aufrichtig Zweifel, dass Sie sich in eine Ecke programmiert werden. Service Bus (AppFabric) einen höheren Aufwand und zwar wirklich gut für zu externen Anwendungen sprechen, möglicherweise nicht optimal für die schnelle und einfache Botschaften in Ihrem Azure App sein.
Andere Tipps
Speicherwarteschlangen vs Service Bus
Hier ist ein Abbau von einigen der verschiedenen Überlegungen ich im Denken über diese Frage hatte.
Verfügbarkeit
Da die Speicherausfall im November letzten Jahres Azure versprochen würden sie nie wieder Code auf alle Regionen verteilen - es in das System eingebaut, um es unmöglich zu machen. https://azure.microsoft.com/en-us/blog/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/
Hier ist, was Msdn sagt über die Verfügbarkeit:
Wenn Sie bereits Azure Storage Blobs oder Tabellen verwenden und Sie starten Warteschlangen verwenden, werden Sie 99,9% Verfügbarkeit garantiert. Wenn Sie Blobs oder Tabellen mit Service Bus Warteschlangen verwenden, werden Sie geringere Verfügbarkeit haben.
Azure-Warteschlangen sind so konzipiert, die Entkopplung von Anwendungskomponenten zur Unterstützung der Skalierbarkeit und die Toleranz für Ausfälle zu erhöhen.
Entwicklung
Persönlich bin ich mit den Speicher APIs komfortabel und haben für ihre Blob Speicher in anderen Bereichen der meisten Anwendungen bereits benötigen. Speicherwarteschlangen verwenden, um die gleiche sdk als Speicher Blobs. Azure Queues bieten eine einheitliche und konsistente Programmiermodell über Warteschlangen, Tabellen und BLOBs
Kosten
Das Empfangen und Löschen-Modus unterstützt durch Service Bus bietet die Möglichkeit, den Messaging-Betriebszähler (und die damit verbunden Kosten) im Austausch für tiefergelegte Liefersicherheit zu reduzieren.
Es scheint, wie es einige Werkzeuge um die Kostenkontrolle ist für Service-Bus, dass Sie könnten nutzen, wenn Sie ein Budget halten musste starten Sie Ihre App zu laufen - ich habe einen Versuch, brechen die potenziellen Speicherwarteschlange Kosten unten :) nach unten. Es kommt zu weniger als hundert Dollar pro Monat auf mehr als 40.000 Warteschlangen pro Stunde für GRS. Gruppiert in mit dem Rest unserer Lagerkosten sehe ich nicht, Nutzen mit Schwerpunkt auf Kosten hier zu schneiden. (Bandbreite ist für beide gleich und hebt mich auf beim Vergleich)
Speicher Preis
Sie erhalten unbegrenzte kostenlose Warteschlangen und Operationen - Sie zahlen für Raum
- annehmen 30K Nachrichtengröße als Mittelwert
- annehmen 1000K in einem MB nicht 1024
- übernehmen Sie die nicht getroffen graduierte über 1TB Preis
30K / 1 Nachricht * 1 TB / 1000000000K * $ 0,095 / 1 GB * 1000 GB / 1 TB = $ 0,00000285 / Nachricht für die erste TB Verwendung
1 Meldung / ~ 30K * 1000000000K / 1 TB = 33333333 Nachrichten in einem TB
33333333 Nachrichten * $ 0.00000285 / message = ~ $ 95 Dollar für das erste TB
verteilt über einen Monat können wir wie 40.000 Nachrichten tun eine Stunde mit dem ersten TB
Service Bus Preis
- 10 Dollar pro Monat Grundpreis
- Pay-per-Betrieb (jeder api Anruf ein op.) - fügen Sie eine Warteschlange / erhalten eine Warteschlange / überwachen die Warteschlange / etc
- Sie erhalten 12,5 Millionen frei ops / Monat
- Pay-per-Million ops danach
Hard Nutzung hier zu schätzen, aber 100 Millionen Operationen kosten 80 Dollar pro Monat
Batch Empfangen
Die Speicherung kann Batch bis zu maximal 32 Meldungen von Nachrichtenanzahl angeben, wenn Abrufen von Nachrichten, während Service Bus ermöglicht eine Warteschlange Client Batch mehr Nachrichten in einen einzigen Sendevorgang.
So Speicher ist Batch empfangen, während Servicebus Batch send ist.
Überwachung
Azure-Warteschlangen ermöglichen es Ihnen, ein detailliertes Protokoll aller Transaktionen gegen die Warteschlange ausgeführt zu erhalten, sowie Metriken aggregiert. Diese Art der Unterstützung kommt nicht von Box heraus mit Service Bus -. Aber könnte wahrscheinlich eine vorgefertigte Lösung irgendwo finden
Spedition
Service Bus verfügt über eine automatische Weiterleitung Funktion, die Speicherwarteschlangen fehlen.
automatische Weiterleitung ermöglicht Tausende von Warteschlangen Auto-weiterleiten ihre Nachrichten an eine einzelne Warteschlange, aus der die Empfangs Application verbraucht die Nachricht. Sie können diesen Mechanismus verwenden, um Sicherheit zu erreichen, Kontrollfluss, und Isolat Speicher zwischen jeder Nachricht Verlag.
Dubletten
Die Vervielfältigung Erkennungsfunktionalität von Service Bus Warteschlangen unterstützt entfernt automatisch doppelte Nachrichten an einer Warteschlange oder ein Thema gesendet, basierend auf dem Wert der MessageID Eigenschaft.
Speicherwarteschlange Nachrichten können ohne Warnung duplizieren.
Metadaten
Service Bus gibt Ihnen 2 Teile einer Message-Header + Körper. Dies ist eine sehr nützliche Funktion für eine weltweit im Einsatz Infrastruktur. Lassen Sie Ihre Nachrichten mit Dingen wie Region Namen und die Instanz-ID dekorieren. Queue-Meldungen sind einfache Strings. Auf der anderen Seite Azure Speicherwarteschlangen bieten Unterstützung für beliebige Attribute, die in die Warteschlange Beschreibung angewendet werden können, in der Form von Name / Wert-Paare. So können Sie die Nachricht im Service Bus dekorieren können und die Warteschlange mit Speicherwarteschlangen
dekorierenLiefergarantie
Service Bus bietet At-Most-Once und At-Least-Once während Queues bieten nur At-Least-Once Lieferung. Dies könnte unsere Fähigkeit Warteschlangen zu verwenden, wenn gleichzeitig Abonnent jemals ein Problem sind.
Performance
Azure Speicherwarteschlangen bieten eine 10 ms Latenz (in einem Rechenzentrum), während Service Bus Latenz 20-25ms. Service Bus nicht bieten Lang Polling, die besser wäre, auch als 10ms, wenn Sie eine Notwendigkeit für sie.
Sicherheit
Speicherwarteschlangen verwenden, um die primäre / sekundäre Shared-Key-Sache, während Service-Bus RBAC bietet über Active Directory mit Sender / Empfänger / Admin-Rollen.
Referenzen
- https://msdn.microsoft.com/en-us/ Bibliothek / azur / hh767287.aspx
- http://azure.microsoft.com/en-us/pricing / details / storage /
- http://azure.microsoft.com/en-us / Preis / details / Service-Bus /
- https://alexandrebrisebois.wordpress.com/2013/10/20/windows-azure-storage-queues-vs-windows-azure-service-bus-queues/
Wie ich es verstehe, der Service Bus (wie war) wird für eine Weile Warteschlangen hat, aber diese sind nicht garantiert, die Nachricht zuzustellen - bon Chance
Nähen Azure Queues übereinstimmen, weil Ihr Anwendungsfall bleibt einfach mit einfacher REST-basierten Get / Put / Peek-Schnittstelle.
Die Dokumentation havs kürzlich (2015.05.21) aktualisiert und Details genau dann, wenn die eine oder die andere verwendet wird, und die gemeinsamen Merkmale (Transaktionsunterstützung, Größe der Warteschlange und die Nachricht, Time to Live, ... ):
Die Warteschlange im Zusammenhang Muster ein Entwickler lernt können beide angewendet werden. Beide können von einer Zuverlässigkeit und umsetzungs Leichtigkeit Sicht verwendet werden.
Dinge können nur Speicherwarteschlange tun 1) Der Arbeiter Verarbeiten einer Nachricht abstürzt. Eine nachfolgende Arbeiter will den Status der Nachricht lesen , um fortzufahren, von wo der Stand der Arbeiter aufgehört hat. 2) Sie benötigen serverseitige Protokolle aller der ausgeführten Transaktionen gegen die Warteschlangen.
Aber Vergleiche sind nicht wichtig. Wenn benutzerdefinierte Warteschlange Entwicklung ist das, was wir brauchen, dann immer Speicherwarteschlange verwenden. Es war das erste von Microsoft entwickelt werden. Service Bus gebracht wurde in Kopieren BizTalk und der Zweck ist die Integration (hybrid), daher gibt es erweiterte Funktionen in dieser Zeile: Sitzungen, Transaktionen, automatische dead-Buchstaben usw.
Dieser Link einen Vergleich bietet, so tut diesen Link . Es wird schwierig sein, alles zu analysieren und in einer agilen Entwicklung beginnt daher die oben genannte Regel.
Um die Dinge sehr klar zu machen, das ist ein Vergleich zwischen zwei Azure-Komponenten, zu einem anderen Zeitpunkt erstellt, aus verschiedenen Gründen.
Speicherwarteschlangen und Service Bus Warteschlangen - verglichen und gegenüber
Azure unterstützt zwei Arten von Warteschlangen-Mechanismen: Speicherwarteschlangen und Service Bus Warteschlangen.
Speicher-Warteschlangen, die einen Teil der Azure Storage-Infrastruktur sind, verfügen über eine einfache REST-basierten GET / PUT / PEEK-Schnittstelle und bietet zuverlässig, ausdauernd Messaging innerhalb und zwischen den Diensten.
Service Bus Warteschlangen sind Teil eines breiten angelegten Azure-Messaging Infrastruktur, dass Stützen sowie Publish / Subscribe-Queuing und fortgeschritteneren Integrationsmuster. Weitere Informationen zu Service Bus-Warteschlangen / Themen / Abonnements finden Sie die Übersicht der Service Bus.
Während beide Warteschlangen Technologien gleichzeitig existieren, Speicherwarteschlangen zuerst eingeführt wurden, als ein spezieller Warteschlangenspeichermechanismus aufgebaut auf Anfang der Azure Storage Services. Service Bus-Warteschlangen sind oben gebaut von die breitere Messaging-Infrastruktur entwickelt, um die Integration Anwendungen oder Anwendungskomponenten, die mehrere überspannen Kommunikationsprotokolle, Datenverträge, Vertrauen Domänen und / oder Netzwerk Umgebungen.