Udostępnij za pośrednictwem


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 usłudze Azure Functions.

Usługa 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 dowiesz się więcej o wbudowanych funkcjach usługi Azure Functions dla takich aplikacji, o blokach kodu, które można dostosować i zmodyfikować pod kątem zadań przekształcania, oraz o sposobie konfigurowania aplikacji usługi Azure Functions, tak aby integrował się idealnie z usługą Service Bus i innymi usługami Azure Messaging. Aby uzyskać wiele szczegółów, ten artykuł zawiera dokumentację usługi 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ą zazwyczaj stanowe, i są domeną struktur analitycznych i usług, takich jak Azure Stream Analytics.

Replikacja aplikacji i zadań w usłudze Azure Functions

W usłudze 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 Wyjście
Wyzwalacz usługi Azure Event Hubs Powiązanie wyjściowe usługi Azure Event Hubs
Wyzwalacz usługi Azure Service Bus Powiązanie wyjściowe usługi Azure Service Bus
Wyzwalacz usługi Azure IoT Hub Powiązanie wyjściowe usługi Azure IoT Hub
Wyzwalacz usługi Azure Event Grid Powiązanie wyjściowe usługi Azure Event Grid
Wyzwalacz usługi Azure Queue Storage Powiązanie danych wyjściowych usługi Azure Queue Storage
Wyzwalacz platformy Apache Kafka Powiązanie wyjściowe 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
Powiązanie wyjściowe usługi Twilio SendGrid

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

Dzięki usłudze Azure Functions Premium wiele aplikacji replikacji może współdzielić tę samą podstawową pulę zasobów, nazywaną planem usługi 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 rozwiązanie 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 na partie za pośrednictwem wyzwalaczy, 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 odwoływać się do prefiksów do parametry połączenia lub innych elementów konfiguracji w plikach konfiguracji aplikacji o tej nazwie.

Mapowanie danych i metadanych

Po podjęciu decyzji o połączeniu wyzwalacza wejściowego i powiązania wyjściowego trzeba będzie wykonać pewne mapowanie 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ą usługi 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 z zakresu 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 usługi 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 usługi Azure Functions skonfigurowana do uruchamiania w planie zużycia lub (zalecana) w planie Premium usługi Azure Functions. Wszystkie aplikacje replikacji muszą działać 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 za pomocą 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 Usługi Azure Functions w warstwie Premium i być skonfigurowane do dołączania do tej samej sieci wirtualnej, która jest również jedną z dostępnych opcji.

Wdróż Wizualizacja
Plan użycia usługi Azure Functions Wdróż na platformie Azure Wizualizacja
Azure Functions Premium Plan Wdróż na platformie Azure Wizualizacja
Plan premium usługi Azure Functions z siecią wirtualną Wdróż 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);
}

W przypadku 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:

Lokalizacja źródłowa Target Punkt wejścia
Event Hubs Event Hubs Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToEventHub
Centra zdarzeń Usługa Service Bus Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToServiceBus
Service Bus Centra zdarzeń Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToEventHub
Usługa Service Bus Service Bus Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToServiceBus

Monitorowanie

Aby dowiedzieć się, jak monitorować aplikację replikacji, zapoznaj się z sekcją dotyczącą monitorowania dokumentacji usługi 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 zadania replikacji i transferów docelowych.

Aby uzyskać natychmiastowe szczegółowe informacje diagnostyczne, możesz pracować z narzędziem portalu Metryk na żywo, które zapewnia wizualizację szczegółowych informacji dziennika o małych opóźnieniach.

Następne kroki