Freigeben über


Tasks und Anwendungen für die Nachrichtenreplikation

Wie im Artikel Nachrichtenreplikation und regionsübergreifender Verbund erläutert, basiert die Replikation von Nachrichtensequenzen zwischen Service Bus-Entitätspaaren sowie zwischen Service Bus und anderen Nachrichtenquellen und -zielen in der Regel auf Azure Functions.

Azure Functions ist eine skalierbare und zuverlässige Ausführungsumgebung zum Konfigurieren und Ausführen serverloser Anwendungen. Hierzu zählen auch Tasks für Nachrichtenreplikation und Verbund.

In dieser Übersicht erfahren Sie mehr über die integrierten Funktionen von Azure Functions für solche Anwendungen, über Codeblöcke, die Sie für Transformationsaufgaben übernehmen und ändern können, sowie darüber, wie Sie eine Azure Functions-Anwendung so konfigurieren, dass sie ideal in Service Bus und andere Azure-Messagingdienste integriert werden kann. Bei vielen Details wird in diesem Artikel auf die Dokumentation von Azure Functions verwiesen.

Was ist eine Replikationsaufgabe?

Eine Replikationsaufgabe empfängt Ereignisse von einer Quelle und leitet Sie an ein Ziel weiter. Die meisten Replikationsaufgaben leiten Ereignisse unverändert weiter und führen höchstens eine Zuordnung zwischen Metadatenstrukturen aus, wenn sich die Quell- und Zielprotokolle unterscheiden.

Replikationsaufgaben sind in der Regel zustandslos, was bedeutet, dass sie keinen Status oder andere Nebeneffekte über sequenzielle oder parallele Ausführungen einer Aufgabe hinweg weitergeben. Dies trifft auch auf Batchverarbeitung und Verkettung zu, die beide auf Grundlage des vorhandenen Zustands eines Datenstroms implementiert werden können.

Dadurch unterscheiden sich Replikationsaufgaben von Aggregationsaufgaben, die im allgemeinen zustandsbehaftet sind und die Domäne von Analyseframeworks und -diensten wie Azure Stream Analytics sind.

Replikationsanwendungen und -aufgaben in Azure Functions

In Azure Functions wird eine Replikationsaufgabe mit einem Trigger implementiert, der Eingabemeldungen von einer konfigurierten Quelle erfasst, und eine Ausgabebindung, die von der Quelle kopierte Meldungen an ein konfiguriertes Ziel weiterleitet.

Trigger Output
Azure Event Hubs-Trigger Azure Event Hubs-Ausgabebindung
Azure Service Bus-Trigger Azure Service Bus-Ausgabebindung
Azure IoT Hub-Trigger Azure IoT Hub-Ausgabebindung
Azure Event Grid-Trigger Azure Event Grid-Ausgabebindung
Azure Queue Storage-Trigger Azure Queue Storage-Ausgabebindung
Apache Kafka-Trigger Apache Kafka-Ausgabebindung
RabbitMQ-Trigger RabbitMQ-Ausgabebindung
Azure Notification Hubs-Ausgabebindung
Azure SignalR-Dienstausgabebindung
Twilio SendGrid-Ausgabebindung

Replikationsaufgaben werden mithilfe derselben Bereitstellungsmethoden in der Replikationsanwendung bereitgestellt wie jede andere Azure Functions-Anwendung. Sie können mehrere Aufgaben in derselben Anwendung konfigurieren.

Mit Azure Functions Premium können mehrere Replikationsanwendungen denselben zugrunde liegenden Ressourcenpool gemeinsam nutzen, der als App Service Plan bezeichnet wird. Dies bedeutet, dass Sie in .NET geschriebene Replikationsaufgaben problemlos mit Replikationsaufgaben zusammenstellen können, die beispielsweise in Java geschrieben sind. Dies ist wichtig, wenn Sie bestimmte Bibliotheken, wie z. B. Apache Camel, nutzen möchten, die nur für Java verfügbar sind, und wenn diese die beste Option für einen bestimmten Integrationspfad darstellen, auch wenn Sie prinzipiell eine andere Sprache und Laufzeit für Ihre anderen Replikationsaufgaben bevorzugen würden.

Wann immer möglich, sollten Sie die batchorientierten Trigger den Triggern vorziehen, die einzelne Ereignisse oder Nachrichten übermitteln, und Sie sollten immer die gesamte Ereignis- oder Nachrichtenstruktur abrufen, anstatt sich auf die Parameterbindungsausdrücke der Azure-Funktion zu verlassen.

Der Name der Funktion sollte das Paar aus Quelle und Ziel widerspiegeln, mit dem Sie eine Verbindung herstellen, und Sie sollten Verweise auf Verbindungszeichenfolgen oder andere Konfigurationselemente in den Anwendungskonfigurationsdateien mit diesem Namen als Präfix angeben.

Zuordnung von Daten und Metadaten

Nachdem Sie sich für ein Paar aus Eingabetrigger und Ausgabebindung entschieden haben, müssen Sie eine Zuordnung zwischen den verschiedenen Ereignis- oder Nachrichtentypen durchführen, es sei denn, der Typ Ihres Triggers und die Ausgabe sind identisch.

Bei einfachen Replikationsaufgaben, die Nachrichten zwischen Event Hubs und Service Bus kopieren, müssen Sie keinen eigenen Code schreiben, sondern können eine Hilfsprogrammbibliothek verwenden, die zusammen mit den Replikationsbeispielen bereitgestellt wird.

Wiederholungsrichtlinie

Um Datenverluste während eines Verfügbarkeitsereignisses auf beiden Seiten einer Replikationsfunktion zu vermeiden, müssen Sie die Wiederholungsrichtlinie so konfigurieren, dass sie robust ist. Informationen zum Konfigurieren der Wiederholungsrichtlinie finden Sie in der Azure Functions-Dokumentation zu Wiederholungen.

Die für die Beispielprojekte im Beispielrepository gewählten Richtlinieneinstellungen konfigurieren eine exponentielle Backoff-Strategie mit Wiederholungsintervallen zwischen 5 Sekunden und 15 Minuten mit unendlichen Wiederholungen, um Datenverluste zu vermeiden.

Die allgemein verfügbare (GA) Version von Wiederholungsrichtlinien für Azure Functions unterstützt nur Event Hubs und Zeitgebertrigger. Der Vorschausupport für alle anderen Trigger wurde entfernt.

Einrichten eines Replikationsanwendungshosts

Eine Replikationsanwendung ist ein Ausführungshost für eine oder mehrere Replikationsaufgaben.

Es handelt sich um eine Azure Functions-Anwendung, die so konfiguriert ist, dass sie entweder im Verbrauchsplan oder in einem Premium-Plan für Azure Functions (empfohlen) ausgeführt wird. Alle Replikationsanwendungen müssen unter einer systemseitig oder benutzerseitig zugewiesenen verwalteten Identität ausgeführt werden.

Die verknüpften Azure Resource Manager-Vorlagen (ARM) erstellen und konfigurieren eine Replikationsanwendung mit:

  • Einem Azure-Speicherkonto für die Nachverfolgung des Replikationsfortschritts und für Protokolle.
  • Eine systemseitig zugewiesene verwaltete Identität.
  • Azure Monitor und Application Insights-Integration zur Überwachung.

Replikationsanwendungen, die auf Event Hubs zugreifen müssen, die an ein virtuelles Azure-Netzwerk (VNet) gebunden sind, müssen den Premium-Plan für Azure Functions verwenden und so konfiguriert sein, dass sie demselben VNet angefügt werden, das ebenfalls eine der verfügbaren Optionen ist.

Bereitstellen Visualisieren
Azure Functions-Nutzungsplan In Azure bereitstellen Visualisieren
Premium-Plan In Azure bereitstellen Visualisieren
Premium-Plan für Azure Functions mit VNet In Azure bereitstellen Visualisieren

Beispiele

Das Repository mit Beispielen enthält mehrere Beispiele für Replikationsaufgaben, die Ereignisse zwischen Event Hubs und/oder zwischen Service Bus-Entitäten kopieren.

Zum Kopieren von Ereignisdaten zwischen Event Hubs verwenden Sie einen Event Hub-Trigger mit einer Event Hubs-Ausgabebindung:

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

Zum Kopieren von Nachrichten zwischen Service Bus-Entitäten verwenden Sie den Service Bus-Trigger und eine Service Bus-Ausgabebindung:

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

Die Hilfsmethoden können die Replikation zwischen Event Hubs und Service Bus vereinfachen:

`Source` Ziel Einstiegspunkt
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

Überwachung

Informationen dazu, wie Sie Ihre Replikations-App überwachen können, finden Sie im Abschnitt „Überwachung“ der Azure Functions-Dokumentation.

Ein besonders nützliches visuelles Tool für die Überwachung von Replikationsaufgaben ist die Anwendungsübersicht von Application Insights, die automatisch aus den erfassten Überwachungsinformationen generiert wird und das Untersuchen der Zuverlässigkeit und Leistung der Übertragungen zwischen Replikationsaufgabenquelle und -Ziel ermöglicht.

Für sofortige Diagnoseerkenntnise können Sie mit dem Portaltool Livemetriken arbeiten, das Visualisierung von Protokolldetails mit geringen Wartezeiten bereitstellt.

Nächste Schritte