Berichtreplicatietaken en -toepassingen
Zoals uitgelegd in het artikel berichtreplicatie en federatie tussen regio's, is replicatie van berichtenreeksen tussen paren van Service Bus-entiteiten en tussen Service Bus en andere berichtbronnen en doelen over het algemeen afhankelijk van Azure Functions.
Azure Functions is een schaalbare en betrouwbare uitvoeringsomgeving voor het configureren en uitvoeren van serverloze toepassingen, waaronder berichtreplicatie en federatietaken.
In dit overzicht krijgt u informatie over de ingebouwde mogelijkheden van Azure Functions voor dergelijke toepassingen, over codeblokken die u kunt aanpassen en wijzigen voor transformatietaken en over het configureren van een Azure Functions-toepassing, zodat deze het beste kan worden geïntegreerd met Service Bus en andere Azure Messaging-services. Voor veel informatie verwijst dit artikel naar de Azure Functions documentatie.
Wat is een replicatietaak?
Een replicatietaak ontvangt gebeurtenissen van een bron en stuurt deze door naar een doel. De meeste replicatietaken sturen gebeurtenissen ongewijzigd door en voeren maximaal toewijzingen uit tussen metagegevensstructuren als de bron- en doelprotocollen verschillen.
Replicatietaken zijn over het algemeen staatloos, wat betekent dat ze geen status of andere neveneffecten delen voor opeenvolgende of parallelle uitvoeringen van een taak. Dat geldt ook voor batchverwerking en ketenverwerking, die beide kunnen worden geïmplementeerd boven op de bestaande status van een stroom.
Hierdoor verschillen replicatietaken van aggregatietaken, die over het algemeen stateful zijn en het domein zijn van analyseframeworks en -services zoals Azure Stream Analytics.
Replicatietoepassingen en -taken in Azure Functions
In Azure Functions wordt een replicatietaak geïmplementeerd met behulp van een trigger die invoerberichten verkrijgt van een geconfigureerde bron en een uitvoerbinding waarmee berichten die zijn gekopieerd van de bron naar een geconfigureerd doel worden doorgestuurd.
Replicatietaken worden geïmplementeerd in de replicatietoepassing via dezelfde implementatiemethoden als elke andere Azure Functions toepassing. U kunt meerdere taken configureren in dezelfde toepassing.
Met Azure Functions Premium kunnen meerdere replicatietoepassingen dezelfde onderliggende resourcegroep delen, een App Service-plan genoemd. Dit betekent dat u eenvoudig replicatietaken die in .NET zijn geschreven, kunt samenvoegen met replicatietaken die bijvoorbeeld in Java zijn geschreven. Dat is van belang als u wilt profiteren van specifieke bibliotheken zoals Apache Camel die alleen beschikbaar zijn voor Java en of deze de beste optie zijn voor een bepaald integratiepad, ook al geeft u meestal de voorkeur aan een andere taal en runtime voor uw andere replicatietaken.
Indien beschikbaar, moet u de voorkeur geven aan de batchgeoriënteerde triggers boven triggers die afzonderlijke gebeurtenissen of berichten leveren. U moet altijd de volledige gebeurtenis- of berichtstructuur verkrijgen in plaats van te vertrouwen op de parameterbindingsexpressies van Azure Function.
De naam van de functie moet overeenkomen met het bron- en doelpaar waarmee u verbinding maakt, en u moet verwijzingen naar verbindingsreeksen of andere configuratie-elementen in de toepassingsconfiguratiebestanden met die naam voorvoegsel geven.
Toewijzing van gegevens en metagegevens
Zodra u een paar invoertriggers en uitvoerbindingen hebt gekozen, moet u enkele toewijzingen uitvoeren tussen de verschillende gebeurtenis- of berichttypen, tenzij het type van de trigger en de uitvoer hetzelfde zijn.
Voor eenvoudige replicatietaken die berichten kopiëren tussen Event Hubs en Service Bus, hoeft u niet uw eigen code te schrijven, maar kunt u gebruikmaken van een hulpprogrammabibliotheek die bij de replicatievoorbeelden wordt geleverd.
Beleid voor opnieuw proberen
Als u gegevensverlies wilt voorkomen tijdens beschikbaarheidsevenementen aan weerszijden van een replicatiefunctie, moet u het beleid voor opnieuw proberen zo configureren dat het robuust is. Raadpleeg de Azure Functions documentatie over nieuwe pogingen om het beleid voor opnieuw proberen te configureren.
De beleidsinstellingen die zijn gekozen voor de voorbeeldprojecten in de voorbeeldopslagplaats configureren een exponentieel uitstelstrategie met intervallen van 5 seconden tot 15 minuten met oneindige nieuwe pogingen om gegevensverlies te voorkomen.
De algemeen beschikbare versie van beleid voor opnieuw proberen voor Azure Functions ondersteunt alleen Event Hubs en Timer-triggers. De preview-ondersteuning voor alle andere triggers is verwijderd.
Een replicatietoepassingshost instellen
Een replicatietoepassing is een uitvoeringshost voor een of meer replicatietaken.
Het is een Azure Functions-toepassing die is geconfigureerd om te worden uitgevoerd in het verbruiksabonnement of (aanbevolen) op een Azure Functions Premium-abonnement. Alle replicatietoepassingen moeten worden uitgevoerd onder een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit.
Met de gekoppelde ARM-sjablonen (Azure Resource Manager) wordt een replicatietoepassing gemaakt en geconfigureerd met:
- Een Azure Storage-account voor het bijhouden van de replicatievoortgang en voor logboeken.
- Een door het systeem toegewezen beheerde identiteit.
- Integratie van Azure Monitor en Application Insights voor bewaking.
Replicatietoepassingen die toegang moeten hebben tot Event Hubs die zijn gebonden aan een virtueel Azure-netwerk (VNet), moeten het Azure Functions Premium-abonnement gebruiken en worden geconfigureerd om te worden gekoppeld aan hetzelfde VNet, wat ook een van de beschikbare opties is.
Implementeren | Visualiseren | |
---|---|---|
Azure Functions-verbruiksabonnement | ||
Azure Functions Premium-abonnement | ||
Azure Functions Premium-abonnement met VNet |
Voorbeelden
De opslagplaats met voorbeelden bevat verschillende voorbeelden van replicatietaken die gebeurtenissen kopiëren tussen Event Hubs en/of tussen Service Bus-entiteiten.
Voor het kopiëren van gebeurtenisgegevens tussen Event Hubs gebruikt u een Event Hubs-trigger met een Event Hubs-uitvoerbinding:
[FunctionName("telemetry")]
[ExponentialBackoffRetry(-1, "00:00:05", "00:05:00")]
public static Task Telemetry(
[EventHubTrigger("telemetry", ConsumerGroup = "$USER_FUNCTIONS_APP_NAME.telemetry", Connection = "telemetry-source-connection")] EventData[] input,
[EventHub("telemetry-copy", Connection = "telemetry-target-connection")] EventHubClient outputClient,
ILogger log)
{
return EventHubReplicationTasks.ForwardToEventHub(input, outputClient, log);
}
Voor het kopiëren van berichten tussen Service Bus-entiteiten gebruikt u de Service Bus-trigger en uitvoerbinding:
[FunctionName("jobs-transfer")]
[ExponentialBackoffRetry(-1, "00:00:05", "00:05:00")]
public static Task JobsTransfer(
[ServiceBusTrigger("jobs-transfer", Connection = "jobs-transfer-source-connection")] Message[] input,
[ServiceBus("jobs", Connection = "jobs-target-connection")] IAsyncCollector<Message> output,
ILogger log)
{
return ServiceBusReplicationTasks.ForwardToServiceBus(input, output, log);
}
Met de helpermethoden kunt u eenvoudig repliceren tussen Event Hubs en Service Bus:
Bron | Doel | Toegangspunt |
---|---|---|
Event Hubs | Event Hubs | Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToEventHub |
Event Hubs | Service Bus | Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToServiceBus |
Service Bus | Event Hubs | Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToEventHub |
Service Bus | Service Bus | Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToServiceBus |
Bewaking
Raadpleeg de sectie bewaking van de Azure Functions documentatie voor meer informatie over het bewaken van uw replicatie-app.
Een bijzonder handig visueel hulpprogramma voor het bewaken van replicatietaken is het Application Insights-toepassingsoverzicht, dat automatisch wordt gegenereerd op basis van de vastgelegde bewakingsinformatie en waarmee de betrouwbaarheid en prestaties van de bron- en doeloverdrachten van de replicatietaak kunnen worden verkend.
Voor onmiddellijke diagnostische inzichten kunt u werken met het portalhulpprogramma Live Metrics , dat een visualisatie met een lage latentie van logboekdetails biedt.
Volgende stappen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor