Sdílet prostřednictvím


Úlohy a aplikace replikace zpráv

Jak je vysvětleno v článku replikace zpráv a federace mezi oblastmi, replikace sekvencí zpráv mezi dvojicemi entit služby Service Bus a mezi Service Bus a dalšími zdroji zpráv a cíli se obecně spoléhá na Azure Functions.

Azure Functions je škálovatelné a spolehlivé spouštěcí prostředí pro konfiguraci a spouštění bezserverových aplikací, včetně replikace zpráv a úloh federace .

V tomto přehledu se dozvíte o integrovaných funkcích Azure Functions pro takové aplikace, o blocích kódu, které můžete přizpůsobit a upravit pro úlohy transformace, a o tom, jak nakonfigurovat aplikaci Azure Functions tak, aby se ideálně integruje se službou Service Bus a dalšími službami zasílání zpráv Azure. V mnoha podrobnostech tento článek odkazuje na dokumentaci ke službě Azure Functions.

Co je úloha replikace?

Úloha replikace přijímá události ze zdroje a předává je do cíle. Většina úloh replikace předá události beze změny a na většině případů provede mapování mezi strukturami metadat, pokud se zdrojový a cílový protokol liší.

Úlohy replikace jsou obecně bezstavové, což znamená, že nesdílejí stav ani jiné vedlejší účinky napříč sekvenčními nebo paralelními prováděními úlohy. To platí také pro dávkování a řetězení, které je možné implementovat nad stávající stav datového proudu.

Díky tomu se úlohy replikace liší od úloh agregace, které jsou obecně stavové a jsou doménou analytických architektur a služeb, jako je Azure Stream Analytics.

Aplikace a úlohy replikace ve službě Azure Functions

Ve službě Azure Functions se úloha replikace implementuje pomocí triggeru, který získává vstupní zprávy z nakonfigurovaného zdroje a výstupní vazbu, která předává zprávy zkopírované ze zdroje do nakonfigurovaného cíle.

Trigger Výstup
Trigger služby Azure Event Hubs Výstupní vazba služby Azure Event Hubs
Trigger služby Azure Service Bus Výstupní vazba služby Azure Service Bus
Trigger služby Azure IoT Hub Výstupní vazba azure IoT Hubu
Trigger služby Azure Event Grid Výstupní vazba Azure Event Gridu
Trigger Azure Queue Storage Výstupní vazba azure Queue Storage
Trigger Apache Kafka Výstupní vazba Apache Kafka
Trigger RabbitMQ Výstupní vazba RabbitMQ
Výstupní vazba služby Azure Notification Hubs
Výstupní vazba služby Azure SignalR
Výstupní vazba Twilio SendGrid

Úlohy replikace se nasazují do aplikace replikace prostřednictvím stejných metod nasazení jako jakákoli jiná aplikace Azure Functions. Do stejné aplikace můžete nakonfigurovat více úloh.

S Azure Functions Premium může více aplikací replikace sdílet stejný základní fond zdrojů, označovaný jako plán služby App Service. To znamená, že můžete snadno sloučit úlohy replikace napsané v .NET pomocí úloh replikace, které jsou napsané v Javě, například. To bude důležité, pokud chcete využít konkrétní knihovny, jako je Apache Camel, které jsou k dispozici pouze pro Javu, a pokud jsou to nejlepší možnost pro konkrétní cestu integrace, i když byste pro ostatní úlohy replikace běžně preferoval jiný jazyk a modul runtime.

Kdykoli je k dispozici, měli byste upřednostnit dávkové triggery před aktivačními událostmi, které doručují jednotlivé události nebo zprávy, a měli byste vždy získat úplnou událost nebo strukturu zpráv, a nespoléhat se na výrazy vazby parametrů funkce Azure Functions.

Název funkce by měl odrážet dvojici zdroje a cíle, který připojujete, a měli byste předponovat odkazy na připojovací řetězec nebo jiné konfigurační prvky v konfiguračních souborech aplikace s tímto názvem.

Mapování dat a metadat

Jakmile se rozhodnete pro dvojici vstupních triggerů a výstupních vazeb, budete muset provést určité mapování mezi různými typy událostí nebo zpráv, pokud typ triggeru a výstup není stejný.

U jednoduchých úloh replikace, které kopírují zprávy mezi službou Event Hubs a Service Bus, nemusíte psát vlastní kód, ale můžete se spoléhat na knihovnu nástrojů, která je součástí ukázek replikace.

Zásady opakování

Pokud se chcete vyhnout ztrátě dat během události dostupnosti na obou stranách funkce replikace, musíte nakonfigurovat zásady opakování tak, aby byly robustní. Informace o konfiguraci zásad opakování najdete v dokumentaci ke službě Azure Functions.

Nastavení zásad zvolených pro ukázkové projekty v ukázkovém úložišti konfiguruje exponenciální strategii zpětného ukončení s intervaly opakování od 5 sekund do 15 minut s nekonečnými opakováními, aby nedošlo ke ztrátě dat.

Obecně dostupná verze zásad opakování pro Azure Functions podporuje pouze triggery služby Event Hubs a Časovač. Byla odebrána podpora náhledu pro všechny ostatní triggery.

Nastavení hostitele replikační aplikace

Aplikace replikace je hostitel spouštění pro jednu nebo více úloh replikace.

Jedná se o aplikaci Azure Functions, která je nakonfigurovaná tak, aby běžela buď v plánu Consumption, nebo (doporučeno) v plánu Azure Functions Premium. Všechny aplikace replikace musí běžet pod spravovanou identitou přiřazenou systémem nebo přiřazenou uživatelem.

Propojené šablony Azure Resource Manageru (ARM) vytvoří a nakonfigurují replikační aplikaci pomocí:

  • Účet Služby Azure Storage pro sledování průběhu replikace a protokolů.
  • Spravovaná identita přiřazená systémem
  • Integrace služby Azure Monitor a Application Insights pro monitorování

Aplikace replikace, které musí přistupovat ke službě Event Hubs vázané na virtuální síť Azure, musí používat plán Azure Functions Premium a musí být nakonfigurované pro připojení ke stejné virtuální síti, což je také jedna z dostupných možností.

Nasadit Vizualizace
Plán Consumption služby Azure Functions Nasadit do Azure Vizualizace
Plán Azure Functions Premium Nasadit do Azure Vizualizace
Plán Azure Functions Premium s virtuální sítí Nasadit do Azure Vizualizace

Příklady

Úložiště ukázek obsahuje několik příkladů úloh replikace, které kopírují události mezi službami Event Hubs a/nebo mezi entitami služby Service Bus.

Ke kopírování dat událostí mezi centry událostí použijete trigger služby Event Hubs s výstupní vazbou služby 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);
}

Ke kopírování zpráv mezi entitami služby Service Bus použijte aktivační událost a výstupní vazbu služby Service Bus:

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

Pomocné metody můžou snadno replikovat mezi Event Hubs a Service Bus:

Source Cíl Vstupní bod
Event Hubs Event Hubs Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToEventHub
Centra událostí Service Bus Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToServiceBus
Service Bus Centra událostí Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToEventHub
Service Bus Service Bus Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToServiceBus

Sledování

Informace o tom, jak monitorovat aplikaci replikace, najdete v části monitorování v dokumentaci ke službě Azure Functions.

Zvlášť užitečný vizuální nástroj pro monitorování úloh replikace je mapa aplikace Application Insights, která se automaticky generuje z zachycených informací o monitorování a umožňuje zkoumat spolehlivost a výkon zdroje úloh replikace a cílových přenosů.

Pro okamžité diagnostické přehledy můžete pracovat s nástrojem portálu Live Metrics , který poskytuje vizualizaci podrobností protokolu s nízkou latencí.

Další kroky