Úlohy replikace událostí a aplikace s Azure Functions

Tip

Pro všechny úlohy stavové replikace, kde potřebujete vzít v úvahu datové části vašich událostí a transformovat je, agregovat, rozšířit nebo omezit, použijte místo Azure Functions Azure Stream Analytics.

Jak je vysvětleno v článku o replikaci událostí a federaci mezi oblastmi, bezstavová replikace datových proudů událostí mezi dvojicemi služby Event Hubs a mezi službou Event Hubs a dalšími zdroji a cíli streamu událostí se 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 událostí a úloh federace.

V tomto přehledu se dozvíte o integrovaných funkcích Azure Functions pro tyto aplikace, o blocích kódu, které můžete přizpůsobit a upravit pro úlohy transformace, a o tom, jak nakonfigurovat Azure Functions aplikaci tak, aby se ideálně integrovali se službou Event Hubs a dalšími službami Azure Messaging. Mnoho podrobností najdete v tomto článku v dokumentaci k Azure Functions.

Co je úloha replikace?

Úloha replikace přijímá události ze zdroje a předává je cíli. Většina úloh replikace bude předávat události beze změny a 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 v rámci sekvenčního nebo paralelního provádění úkolu. 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.

Replikace aplikací a úloh v Azure Functions

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

Trigger Výstup
trigger Azure Event Hubs Azure Event Hubs výstupní vazby
trigger Azure Service Bus Azure Service Bus výstupní vazby
trigger Azure IoT Hub Azure IoT Hub výstupní vazby
trigger Azure Event Grid Azure Event Grid výstupní vazby
Trigger Azure Queue Storage Výstupní vazba služby 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 replikační aplikace pomocí stejných metod nasazení jako jakékoli jiné Azure Functions aplikace. 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ů, který se označuje jako plán App Service. To znamená, že úlohy replikace napsané v .NET můžete snadno sloučit například s úlohami replikace napsanými v Javě. To bude důležité, pokud chcete využít konkrétní knihovny, jako je Apache Camel, které jsou k dispozici pouze pro Javu, a jestli jsou nejlepší volbou pro konkrétní cestu integrace, i když byste obvykle upřednostňovali jiný jazyk a modul runtime pro ostatní úlohy replikace.

Kdykoli je k dispozici, měli byste upřednostňovat dávkové triggery před triggery, 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ů služby Azure Functions.

Název funkce by měl odrážet dvojici zdroje a cíle, které připojujete, a před odkazy na připojovací řetězce 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í aktivační události a výstupní vazby, budete muset provést mapování mezi různými typy událostí nebo zpráv, pokud typ triggeru a výstup nejsou stejné.

Pro jednoduché úlohy 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 opřít o knihovnu nástrojů, která je součástí ukázek replikace.

Zásady opakování

Abyste zabránili ztrátě dat během události dostupnosti na obou stranách replikační funkce, musíte nakonfigurovat zásady opakování tak, aby byly robustní. Informace o konfiguraci zásad opakování najdete v dokumentaci k Azure Functions opakování.

Nastavení zásad zvolené pro ukázkové projekty v ukázkovém úložišti konfiguruje exponenciální strategii backoffu s intervaly opakování od 5 sekund do 15 minut s nekonečnými opakováními, aby se zabránilo ztrátě dat.

Obecně dostupná verze zásad opakování pro Azure Functions podporuje jenom triggery služby Event Hubs a Časovač. Podpora všech ostatních triggerů ve verzi Preview byla odebrána.

Nastavení hostitele replikační aplikace

Replikační aplikace je hostitel provádění pro jednu nebo více úloh replikace.

Jedná se o Azure Functions aplikaci, 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 uživatelem.

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

  • Účet služby Azure Storage pro sledování průběhu replikace a pro protokoly.
  • 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é tak, aby se připojily ke stejné virtuální síti, což je také jedna z dostupných možností.

Nasadit Vizualizace
plán Azure Functions Consumption Nasazení do Azure Vizualizace
plán Azure Functions Premium Nasazení do Azure Vizualizace
plán Azure Functions Premium s virtuální sítí Nasazení 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 službami Event Hubs 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);
}

Pro 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 usnadňují replikaci mezi službami Event Hubs a Service Bus:

Zdroj Cíl Vstupní bod
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

Monitorování

Informace o tom, jak můžete monitorovat aplikaci replikace, najdete v části monitorování v dokumentaci k Azure Functions.

Obzvláště užitečným vizuálním nástrojem pro monitorování úloh replikace je mapa aplikace Application Insights, která se automaticky generuje ze 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