Service Bus en betrouwbaarheid
Beheer enterprise message brokering volledig met berichtenwachtrijen en onderwerpen over publiceren/abonneren die worden gebruikt in Azure Service Bus. Deze service slaat berichten op in een broker (bijvoorbeeld een wachtrij) totdat de verbruikende partij klaar is om de berichten te ontvangen.
Voordelen zijn:
- Taakverdeling tussen concurrerende werkrollen.
- Veilige routering en overdracht van gegevens en controle over service- en toepassingsgrenzen heen.
- Het coördineren van transactionele werkzaamheden waarvoor een hoge mate van betrouwbaarheid is vereist.
Raadpleeg Azure Service Bus Messaging voor meer informatie over het gebruik van Service Bus. Meer informatie over het instellen van berichten die toepassingen en services in on-premises en cloudomgevingen verbinden.
Raadpleeg de volgende onderwerpen om te begrijpen hoe Service Bus bijdraagt aan een betrouwbare workload:
- Asynchrone berichtpatronen en hoge beschikbaarheid
- Azure Service Bus geo-noodherstel
- Uitval en -noodgevallen afhandelen
De volgende secties zijn specifiek voor Azure Service Bus en betrouwbaarheid:
- Overwegingen bij het ontwerpen
- Controlelijst voor configuratie
- Aanbevolen configuratieopties
- Bronartefacten
Overwegingen bij het ontwerpen
Maximaliseer de betrouwbaarheid met een SLA voor Azure Service Bus uptime. Goed geconfigureerde toepassingen kunnen berichten verzenden of ontvangen, of andere bewerkingen uitvoeren op een geïmplementeerde wachtrij of een geïmplementeerd onderwerp. Raadpleeg de Service Bus SLA voor meer informatie.
Andere ontwerpoverwegingen zijn:
Naast de documentatie over de Service Bus Premium- en Standard-berichtenlagen zijn de volgende functies alleen beschikbaar op de Premium Stock Keeping Unit (SKU):
- Toegewezen resources.
- Integratie van virtueel netwerk: beperkt de netwerken die verbinding kunnen maken met het Service Bus-exemplaar. Vereist dat service-eindpunten zijn ingeschakeld in het subnet. Er zijn vertrouwde Microsoft-services die niet worden ondersteund bij het implementeren van virtuele netwerken (bijvoorbeeld integratie met Event Grid). Raadpleeg Toegang tot Azure Service Bus naamruimte toestaan vanuit specifieke virtuele netwerken voor meer informatie.
- Privé-eindpunten.
-
IP-filtering/firewall: beperk verbindingen tot alleen gedefinieerde
IPv4
adressen ofIPv4
adresbereiken. - Beschikbaarheidszones: biedt verbeterde beschikbaarheid door replica's zonder extra kosten te spreiden over beschikbaarheidszones binnen één regio.
- Event Grid-integratie: beschikbare gebeurtenistypen.
- Berichteneenheden schalen.
- Herstel na geo-noodgeval (gekoppelde naamruimte).
- CMK (door klant beheerde sleutel): Azure Service Bus versleutelt data-at-rest en ontsleutelt deze automatisch wanneer ze worden geopend, maar klanten kunnen ook hun eigen door de klant beheerde sleutel meenemen.
Bij het implementeren van Service Bus met geo-noodherstel en in beschikbaarheidszones neemt de SLO (Service Level Operation) aanzienlijk toe, maar verandert de SLA voor uptime niet.
Controlelijst
Hebt u Azure Service Bus geconfigureerd met het oog op betrouwbaarheid?
- Evalueer de voordelen van de Premium-laag van Azure Service Bus.
- Zorg ervoor dat Service Bus Messaging-uitzonderingen correct worden verwerkt.
- Maak verbinding met Service Bus met het Advanced Messaging Queue Protocol (AMQP) en gebruik indien mogelijk service-eindpunten of privé-eindpunten.
- Bekijk de best practices voor prestatieverbeteringen met Service Bus Messaging.
- Implementeer geo-replicatie aan de afzender- en ontvangerzijde ter bescherming tegen storingen en noodgevallen.
- Geo-noodgeval configureren.
- Als u essentiële berichten met wachtrijen en onderwerpen nodig hebt, wordt Service Bus Premium aanbevolen met Geo-Disaster Recovery.
- Zoneredundantie configureren in de Service Bus-naamruimte (alleen beschikbaar in de Premium-laag).
- Implementeer hoge beschikbaarheid voor de Service Bus-naamruimte.
- Zorg ervoor dat gerelateerde berichten in gegarandeerde volgorde worden bezorgd.
- Evalueer verschillende functies van Java Messaging Service (JMS) via de JMS-API.
- Gebruik .NET Nuget-pakketten om te communiceren met Service Bus-berichtenentiteiten.
- Implementeer tolerantie voor het verwerken van tijdelijke fouten bij het verzenden of ontvangen van berichten.
- Automatisch schalen van berichteneenheden implementeren.
Configuratieaanbeveling
Houd rekening met de volgende aanbevelingen om de betrouwbaarheid te optimaliseren bij het configureren van Azure Service Bus:
Aanbeveling | Beschrijving |
---|---|
Evalueer de voordelen van de Premium-laag van Azure Service Bus. | Overweeg om te migreren naar de Premium-laag van Service Bus om te profiteren van door het platform ondersteunde storingen en bescherming tegen noodgevallen. |
Maak verbinding met Service Bus met het AMQP-protocol en gebruik indien mogelijk service-eindpunten of privé-eindpunten. | Met deze aanbeveling blijft verkeer op de Azure Backbone staan.
Opmerking: het standaardverbindingsprotocol voor Microsoft.Azure.ServiceBus en Windows.Azure.ServiceBus naamruimten is AMQP . |
Implementeer geo-replicatie aan de afzender- en ontvangerzijde ter bescherming tegen storingen en noodgevallen. | De Standard-laag ondersteunt alleen de implementatie van geo-redundantie aan de afzender- en ontvangerzijde. Een storing of noodgeval in een Azure-regio kan downtime voor uw oplossing veroorzaken. |
Geo-noodgeval configureren. |
-
Actief/actief - Actief/passief - Gekoppelde naamruimte (actief/passief) - Opmerking: de secundaire regio moet bij voorkeur een gekoppelde Azure-regio zijn. |
Als u essentiële berichten met wachtrijen en onderwerpen nodig hebt, wordt Service Bus Premium aanbevolen met Geo-Disaster Recovery. | Het kiezen van het patroon is afhankelijk van de bedrijfsvereisten en de beoogde hersteltijd (RTO). |
Zoneredundantie configureren in de Service Bus-naamruimte (alleen beschikbaar in de Premium-laag). | Zoneredundantie omvat drie kopieën van het berichtenarchief. Eén zone wordt toegewezen als het primaire berichtenarchief en de andere zones worden toegewezen als secundaire bestanden. Als de primaire zone niet meer beschikbaar is, wordt een secundaire zone gepromoveerd naar primair zonder waarneembare downtime. Beschikbaarheidszones zijn beschikbaar in een subset van Azure-regio's, waarbij regelmatig nieuwe regio's worden toegevoegd. |
Implementeer hoge beschikbaarheid voor de Service Bus-naamruimte. | De Premium-laag ondersteunt herstel na noodgevallen en replicatie op het niveau van de naamruimte. Op dit niveau biedt de Premium-laag hoge beschikbaarheid voor herstel na noodgevallen van metagegevens met behulp van primaire en secundaire naamruimten voor herstel na noodgevallen. |
Zorg ervoor dat gerelateerde berichten in gegarandeerde volgorde worden bezorgd. | Houd rekening met de vereiste om een partitiesleutel, sessie-id of bericht-id in te stellen voor elk bericht om ervoor te zorgen dat gerelateerde berichten naar dezelfde partitie in de berichtenentiteit worden verzonden. |
Evalueer verschillende JMS-functies via de JMS-API. | Functies die beschikbaar zijn via de JMS 2.0-API (en de bijbehorende Software Development Kit (SDK)) zijn niet hetzelfde als de functies die beschikbaar zijn via de systeemeigen SDK. Service Bus-sessies zijn bijvoorbeeld niet beschikbaar in JMS. |
Implementeer tolerantie voor het verwerken van tijdelijke fouten bij het verzenden of ontvangen van berichten. | Het is essentieel om geschikte tijdelijke foutafhandeling en foutafhandeling te implementeren voor verzend- en ontvangstbewerkingen om de doorvoer te behouden en berichtverlies te voorkomen. |
Implementeer automatisch schalen van berichteneenheden om ervoor te zorgen dat u voldoende resources beschikbaar hebt voor uw workloads. |
Bronartefacten
Gebruik de volgende query om premium Service Bus-exemplaren te identificeren die geen privé-eindpunten gebruiken:
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier == 'Premium' and isempty(properties.privateEndpointConnections)
Gebruik de volgende query om Service Bus-exemplaren te identificeren die zich niet in de Premium-laag bevinden:
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier != 'Premium'
Gebruik de volgende query om premium Service Bus-exemplaren te identificeren die niet zone-redundant zijn:
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier == 'Premium' and properties.zoneRedundant == 'false'