Zadania i aplikacje do replikacji komunikatów

Jak wyjaśniono w artykule dotyczącym replikacji komunikatów i federacji między regionami, replikacja sekwencji komunikatów między parami jednostek usługi Service Bus i między usługą Service Bus a innymi źródłami komunikatów i elementami docelowymi zwykle opiera się na Azure Functions.

Azure Functions to skalowalne i niezawodne środowisko wykonywania do konfigurowania i uruchamiania aplikacji bezserwerowych, w tym replikacji komunikatów i zadań federacyjnych.

W tym omówieniu poznasz wbudowane funkcje Azure Functions dla takich aplikacji, bloki kodu, które można dostosować i zmodyfikować pod kątem zadań przekształcania oraz jak skonfigurować aplikację Azure Functions, tak aby była idealnie zintegrowana z usługą Service Bus i innymi usługami Azure Messaging. Aby uzyskać wiele szczegółów, ten artykuł wskaże dokumentację Azure Functions.

Co to jest zadanie replikacji?

Zadanie replikacji odbiera zdarzenia ze źródła i przekazuje je do obiektu docelowego. Większość zadań replikacji przekazuje zdarzenia bez zmian i w większości wykonuje mapowanie między strukturami metadanych, jeśli protokoły źródłowe i docelowe różnią się.

Zadania replikacji są zazwyczaj bezstanowe, co oznacza, że nie współużytkują stanu ani innych skutków ubocznych w sekwencyjnych lub równoległych wykonaniach zadania. Dotyczy to również przetwarzania wsadowego i tworzenia łańcuchów, które można zaimplementować na podstawie istniejącego stanu strumienia.

Dzięki temu zadania replikacji różnią się od zadań agregacji, które są ogólnie stanowe i są domeną struktur analitycznych i usług, takich jak Azure Stream Analytics.

Aplikacje i zadania replikacji w Azure Functions

W Azure Functions zadanie replikacji jest implementowane przy użyciu wyzwalacza, który uzyskuje komunikaty wejściowe ze skonfigurowanego źródła i powiązanie wyjściowe, które przekazuje komunikaty skopiowane ze źródła do skonfigurowanego obiektu docelowego.

Wyzwalacz Dane wyjściowe
wyzwalacz Azure Event Hubs powiązanie danych wyjściowych Azure Event Hubs
wyzwalacz Azure Service Bus powiązanie danych wyjściowych Azure Service Bus
wyzwalacz Azure IoT Hub powiązanie danych wyjściowych Azure IoT Hub
wyzwalacz Azure Event Grid powiązanie danych wyjściowych Azure Event Grid
Wyzwalacz usługi Azure Queue Storage Powiązanie wyjściowe usługi Azure Queue Storage
Wyzwalacz platformy Apache Kafka Powiązanie danych wyjściowych platformy Apache Kafka
Wyzwalacz RabbitMQ Powiązanie wyjściowe RabbitMQ
Powiązanie wyjściowe usługi Azure Notification Hubs
Powiązanie wyjściowe usługi Azure SignalR Service
Powiązanie wyjściowe usługi SendGrid usługi Twilio

Zadania replikacji są wdrażane w aplikacji replikacji za pomocą tych samych metod wdrażania co każda inna aplikacja Azure Functions. W tej samej aplikacji można skonfigurować wiele zadań.

W przypadku Azure Functions Premium wiele aplikacji replikacji może współużytkować tę samą podstawową pulę zasobów o nazwie plan App Service. Oznacza to, że można łatwo połączyć zadania replikacji napisane na platformie .NET z zadaniami replikacji napisanymi na przykład w języku Java. Będzie to miało znaczenie, jeśli chcesz skorzystać z określonych bibliotek, takich jak Apache Camel, które są dostępne tylko dla języka Java, a jeśli są to najlepsze opcje dla określonej ścieżki integracji, mimo że często wolisz inny język i środowisko uruchomieniowe dla innych zadań replikacji.

Zawsze, gdy jest dostępna, należy preferować wyzwalacze zorientowane wsadowo na wyzwalacze, które dostarczają pojedyncze zdarzenia lub komunikaty, i zawsze należy uzyskać pełną strukturę zdarzeń lub komunikatów, a nie polegać na wyrażeniach powiązań parametrów funkcji platformy Azure.

Nazwa funkcji powinna odzwierciedlać parę źródeł i obiektów docelowych, z którymi nawiązujesz połączenie, i należy prefiks odwoływać się do parametrów połączenia lub innych elementów konfiguracji w plikach konfiguracji aplikacji o tej nazwie.

Mapowanie danych i metadanych

Po wybraniu pary wyzwalacza wejściowego i powiązania wyjściowego konieczne będzie wykonanie mapowania między różnymi typami zdarzeń lub komunikatów, chyba że typ wyzwalacza i dane wyjściowe są takie same.

W przypadku prostych zadań replikacji, które kopiują komunikaty między usługą Event Hubs i usługą Service Bus, nie trzeba pisać własnego kodu, ale można opierać się na bibliotece narzędzi dostarczanej z przykładami replikacji.

Zasady ponawiania

Aby uniknąć utraty danych podczas zdarzenia dostępności po obu stronach funkcji replikacji, należy skonfigurować zasady ponawiania, aby zapewnić niezawodność. Zapoznaj się z dokumentacją Azure Functions dotyczącą ponownych prób, aby skonfigurować zasady ponawiania prób.

Ustawienia zasad wybrane dla przykładowych projektów w przykładowym repozytorium konfigurują strategię wycofywania wykładniczego z interwałami ponawiania prób od 5 sekund do 15 minut z nieskończonymi ponownymi próbami, aby uniknąć utraty danych.

Ogólnie dostępna wersja zasad ponawiania prób dla Azure Functions obsługuje tylko wyzwalacze usługi Event Hubs i czasomierza. Obsługa wersji zapoznawczej dla wszystkich innych wyzwalaczy została usunięta.

Konfigurowanie hosta aplikacji replikacji

Aplikacja replikacji jest hostem wykonywania dla co najmniej jednego zadania replikacji.

Jest to aplikacja Azure Functions, która jest skonfigurowana do uruchamiania w planie zużycia lub (zalecane) w planie Azure Functions Premium. Wszystkie aplikacje replikacji muszą być uruchamiane w ramach tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika.

Połączone szablony usługi Azure Resource Manager (ARM) tworzą i konfigurują aplikację replikacji przy użyciu następujących elementów:

  • Konto usługi Azure Storage do śledzenia postępu replikacji i dzienników.
  • Tożsamość zarządzana przypisana przez system.
  • Integracja usług Azure Monitor i Application Insights na potrzeby monitorowania.

Aplikacje replikacji, które muszą uzyskiwać dostęp do usługi Event Hubs powiązanej z siecią wirtualną platformy Azure, muszą używać planu Azure Functions Premium i konfigurować do dołączania do tej samej sieci wirtualnej, która jest również jedną z dostępnych opcji.

Wdróż Wizualizacja
plan zużycia Azure Functions Wdrażanie na platformie Azure Wizualizacja
plan Azure Functions Premium Wdrażanie na platformie Azure Wizualizacja
Azure Functions plan Premium z siecią wirtualną Wdrażanie na platformie Azure Wizualizacja

Przykłady

Repozytorium przykładów zawiera kilka przykładów zadań replikacji, które kopiują zdarzenia między usługą Event Hubs i/lub między jednostkami usługi Service Bus.

Do kopiowania danych zdarzeń między centrami zdarzeń należy użyć wyzwalacza usługi Event Hubs z powiązaniem wyjściowym usługi Event Hubs:

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

Do kopiowania komunikatów między jednostkami usługi Service Bus należy użyć wyzwalacza usługi Service Bus i powiązania wyjściowego:

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

Metody pomocnicze mogą ułatwić replikowanie między usługami Event Hubs i Service Bus:

Element źródłowy Cel Punkt wejścia
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

Monitorowanie

Aby dowiedzieć się, jak monitorować aplikację replikacji, zapoznaj się z sekcją monitorowania dokumentacji Azure Functions.

Szczególnie przydatne narzędzie wizualne do monitorowania zadań replikacji to mapa aplikacji usługi Application Insights, która jest automatycznie generowana na podstawie przechwyconych informacji monitorowania i umożliwia eksplorowanie niezawodności i wydajności źródła zadań replikacji i transferów docelowych.

Aby uzyskać natychmiastowe szczegółowe informacje diagnostyczne, możesz pracować z narzędziem portalu metryki na żywo, które zapewnia wizualizację szczegółów dziennika o małym opóźnieniu.

Następne kroki