Dela via


Uppgifter och program för händelsereplikering med Azure Functions

Tips

Använd Azure Stream Analytics i stället för att Azure Functions för alla tillståndskänsliga replikeringsuppgifter där du behöver ta hänsyn till nyttolasten för dina händelser och transformera, aggregera, utöka eller minska dem.

Som förklaras i artikeln om händelsereplikering och federation mellan regioner lutar sig tillståndslös replikering av händelseströmmar mellan par i Event Hubs och mellan Event Hubs och andra källor och mål för händelseströmmen på Azure Functions.

Azure Functions är en skalbar och tillförlitlig körningsmiljö för att konfigurera och köra serverlösa program, inklusive händelsereplikering och federationsuppgifter.

I den här översikten får du lära dig mer om Azure Functions inbyggda funktioner för sådana program, om kodblock som du kan anpassa och ändra för omvandlingsuppgifter och om hur du konfigurerar ett Azure Functions program så att det integreras idealiskt med Event Hubs och andra Azure Messaging-tjänster. För många detaljer pekar den här artikeln på Azure Functions dokumentationen.

Vad är en replikeringsaktivitet?

En replikeringsaktivitet tar emot händelser från en källa och vidarebefordrar dem till ett mål. De flesta replikeringsuppgifter vidarebefordrar händelser oförändrade och utför högst mappning mellan metadatastrukturer om käll- och målprotokollen skiljer sig åt.

Replikeringsuppgifter är vanligtvis tillståndslösa, vilket innebär att de inte delar tillstånd eller andra biverkningar över sekventiella eller parallella körningar av en uppgift. Det gäller också för batchbearbetning och länkning, som båda kan implementeras ovanpå det befintliga tillståndet för en dataström.

Detta gör att replikeringsuppgifter skiljer sig från aggregeringsuppgifter, som vanligtvis är tillståndskänsliga och är domänen för analysramverk och tjänster som Azure Stream Analytics.

Replikeringsprogram och uppgifter i Azure Functions

I Azure Functions implementeras en replikeringsaktivitet med en utlösare som hämtar indatameddelanden från en konfigurerad källa och en utdatabindning som vidarebefordrar meddelanden som kopierats från källan till ett konfigurerat mål.

Utlösare Resultat
Azure Event Hubs utlösare Azure Event Hubs utdatabindning
Azure Service Bus utlösare Azure Service Bus utdatabindning
Azure IoT Hub utlösare Azure IoT Hub utdatabindning
Azure Event Grid utlösare Azure Event Grid utdatabindning
Azure Queue Storage-utlösare Azure Queue Storage-utdatabindning
Apache Kafka-utlösare Apache Kafka-utdatabindning
RabbitMQ-utlösare RabbitMQ-utdatabindning
Azure Notification Hubs-utdatabindning
Utdatabindning för Azure SignalR-tjänsten
Twilio SendGrid-utdatabindning

Replikeringsuppgifter distribueras till replikeringsprogrammet via samma distributionsmetoder som andra Azure Functions program. Du kan konfigurera flera uppgifter i samma program.

Med Azure Functions Premium kan flera replikeringsprogram dela samma underliggande resurspool, som kallas en App Service plan. Det innebär att du enkelt kan samordna replikeringsuppgifter som skrivits i .NET med replikeringsuppgifter som till exempel är skrivna i Java. Det spelar roll om du vill dra nytta av specifika bibliotek som Apache Camel som bara är tillgängliga för Java och om de är det bästa alternativet för en viss integrationsväg, även om du ofta föredrar ett annat språk och en annan körning för dina andra replikeringsuppgifter.

När det är tillgängligt bör du föredra batchorienterade utlösare framför utlösare som levererar enskilda händelser eller meddelanden och du bör alltid hämta hela händelse- eller meddelandestrukturen i stället för att förlita dig på Azure Functions parameterbindningsuttryck.

Namnet på funktionen bör återspegla det käll- och målpar som du ansluter, och du bör prefixreferenser till anslutningssträngar eller andra konfigurationselement i programkonfigurationsfilerna med det namnet.

Data- och metadatamappning

När du har bestämt dig för ett par indatautlösare och utdatabindning måste du utföra viss mappning mellan de olika händelse- eller meddelandetyperna, såvida inte typen av utlösare och utdata är samma.

För enkla replikeringsuppgifter som kopierar meddelanden mellan Event Hubs och Service Bus behöver du inte skriva egen kod, utan kan luta dig mot ett verktygsbibliotek som medföljer replikeringsexemplen.

Återförsöksprincip

För att undvika dataförlust under tillgänglighetshändelsen på båda sidor av en replikeringsfunktion måste du konfigurera återförsöksprincipen så att den är robust. Se Azure Functions dokumentation om återförsök för att konfigurera återförsöksprincipen.

De principinställningar som valts för exempelprojekten på exempellagringsplatsen konfigurerar en exponentiell backoff-strategi med återförsöksintervall från 5 sekunder till 15 minuter med oändliga återförsök för att undvika dataförlust.

Den allmänt tillgängliga versionen av återförsöksprinciper för Azure Functions stöder endast Event Hubs- och Timer-utlösare. Förhandsversionsstödet för alla andra utlösare har tagits bort.

Konfigurera en programvärd för replikering

Ett replikeringsprogram är en körningsvärd för en eller flera replikeringsuppgifter.

Det är ett Azure Functions program som är konfigurerat att köras antingen på förbrukningsplanen eller (rekommenderas) på en Azure Functions Premium-plan. Alla replikeringsprogram måste köras under en systemtilldelad eller användartilldelad hanterad identitet.

De länkade ARM-mallarna (Azure Resource Manager) skapar och konfigurerar ett replikeringsprogram med:

  • Ett Azure Storage-konto för att spåra replikeringsförloppet och för loggar.
  • En systemtilldelad hanterad identitet.
  • Azure Monitor- och Application Insights-integrering för övervakning.

Replikeringsprogram som måste ha åtkomst till händelsehubbar som är bundna till ett virtuellt Azure-nätverk (VNet) måste använda Azure Functions Premium-planen och konfigureras för att ansluta till samma virtuella nätverk, vilket också är ett av de tillgängliga alternativen.

Distribuera Visualisera
Azure Functions förbrukningsplan Distribuera till Azure Visualisera
Azure Functions Premium-plan Distribuera till Azure Visualisera
Azure Functions Premium-plan med VNet Distribuera till Azure Visualisera

Exempel

Exempellagringsplatsen innehåller flera exempel på replikeringsuppgifter som kopierar händelser mellan Event Hubs och/eller mellan Service Bus-entiteter.

För att kopiera händelsedata mellan händelsehubbar använder du en Event Hubs-utlösare med en Event Hubs-utdatabindning:

[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);
}

För att kopiera meddelanden mellan Service Bus-entiteter använder du Service Bus-utlösaren och utdatabindningen:

[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);
}

Hjälpmetoderna kan göra det enkelt att replikera mellan Event Hubs och Service Bus:

Källa Mål Startpunkt
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

Övervakning

Information om hur du kan övervaka replikeringsappen finns i övervakningsavsnittet i Azure Functions dokumentationen.

Ett särskilt användbart visuellt verktyg för att övervaka replikeringsuppgifter är Application Insights-programkartan, som automatiskt genereras från den insamlade övervakningsinformationen och gör det möjligt att utforska tillförlitligheten och prestandan för replikeringsaktivitetens källa och målöverföringar.

För omedelbara diagnostikinsikter kan du arbeta med verktyget Live Metrics-portalen , som ger visualisering av logginformation med kort svarstid.

Nästa steg