Задачи и приложения репликации событий с использованием функций Azure

Совет

Для всех задач репликации с отслеживанием состояния, в которых рассматриваются полезные данные событий, а также выполняются операции их преобразования, объединения, расширения или уменьшения, используйте вместо функций Azure службу Azure Stream Analytics.

Как объясняется в статье о репликации событий и федерации между регионами, репликация потоков событий между парами концентраторов событий и между концентраторами событий и другими исходными и целевыми потоками событий в службе "Функции Azure" осуществляется без отслеживания состояния.

Функции Azure — это масштабируемая и надежная среда выполнения для настройки и запуска бессерверных приложений, включая репликацию событий и задачи федерации.

В этом обзоре вы узнаете о встроенных возможностях Функций Azure для таких приложений, о блоках кода, которые можно адаптировать и изменить для задач преобразования, а также о том, как настроить приложение с Функциями Azure, чтобы оптимальным образом интегрировать его с Концентраторами событий и другими службами Azure для обмена сообщениями. Эта статья содержит много отсылок к документации по Функциям Azure с дополнительными сведениями.

Что такое задача репликации?

Задача репликации получает события из источника и переадресовывает их в целевой объект. Большинство задач репликации переадресовывают события без изменений и в лучшем случае выполняют сопоставление структур метаданных, если исходный и целевой протоколы различаются.

Задачи репликации обычно не отслеживают состояние. Это означает, что они не предоставляют сведения о состоянии или других побочных эффектах при последовательном или параллельном выполнении задачи. Это также справедливо для пакетной обработки и связывания, которые могут быть реализованы поверх существующего состояния потока.

Это отличает задачи репликации от задач статистической обработки, для которых обычно отслеживается состояние и которые представляют собой предметную область платформ и служб аналитики, таких как Azure Stream Analytics.

Приложения и задачи репликации в Функциях Azure

В Функциях Azure задача репликации реализуется с помощью триггера, который получает входные сообщения из настроенного источника и выходную привязку, переадресовывающую сообщения, скопированные из источника, в настроенный целевой объект.

Триггер Выходные данные
Триггер Центров событий Azure Выходная привязка Центров событий Azure
Триггера Служебной шины Azure Выходная привязка служебной шины Azure
Триггер Центра Интернета вещей Azure Выходная привязка Центра Интернета вещей Azure
Триггер Сетки событий Azure Выходная привязка Сетки событий Azure
Триггер хранилища очередей Azure Выходная привязка Хранилища очередей Azure
Триггер Apache Kafka Выходная привязка Apache Kafka
Триггер RabbitMQ Выходная привязка RabbitMQ
Выходная привязка для Центров уведомлений Azure
Выходная привязка службы Azure SignalR
Выходная привязка Twilio SendGrid

Задачи репликации развертываются в приложении репликации с помощью тех же методов развертывания, которые используются для любых других приложений Функций Azure. В одном приложении можно настроить несколько задач.

При использовании плана ценовой категории "Премиум" решения "Функции Azure" несколько приложений репликации могут совместно использовать один и тот же базовый пул ресурсов, называемый планом службы приложений. Это означает, что можно легко выровнять задачи репликации, написанные на .NET, с задачами репликации, которые написаны, например, на Java. Это имеет значение, если вы хотите воспользоваться определенными библиотеками, такими как Apache Camel, которые доступны только для Java, а также если это лучший вариант для конкретного пути интеграции, несмотря на то, что для выполнения других задач репликации обычно выбирают другой язык и среду выполнения.

Если таковые имеются, рекомендуется использовать триггеры, ориентированные на пакетную обработку, вместо триггеров, которые доставляют отдельные события или сообщения. Вы также всегда должны получать полную структуру события или сообщения, а не полагаться на выражения привязки параметров Функций Azure.

Имя функции должно отражать пару источника и целевого объекта, к которому выполняется подключение. Следует также добавить в качестве префикса ссылки на строки подключения или другие элементы конфигурации в файлах конфигурации приложения с таким именем.

Сопоставление данных и метаданных

После выбора пары входного триггера и выходной привязки необходимо выполнить сопоставление между различными типами событий или сообщений, за исключением случая, когда типы триггера и результата совпадают.

Для простых задач репликации, которые копируют сообщения между Центрами событий и служебной шиной, писать собственный код не нужно, зато можно использовать служебную библиотеку, в которой есть примеры репликации.

Политика повтора

Чтобы избежать потери данных во время события доступности на обеих сторонах функции репликации, необходимо настроить надежность политики повтора. Сведения о настройке политики повтора см. в документации по повторам для Функций Azure.

Параметры политики, выбранные для примеров проектов в образце репозитория, настраивают стратегию экспоненциальной задержки с интервалами повтора от 5 секунд до 15 минут и бесконечным числом повторных попыток, что позволяет избежать потери данных.

Общедоступная версия политик повтора для Функций Azure поддерживает только триггеры Центров событий и таймера. Поддержка всех остальных триггеров, доступная в предварительной версии, была удалена.

Настройка узла приложения репликации

Приложение репликации — это узел выполнения для одной или нескольких задач репликации.

Это приложение Функций Azure, которое настроено для запуска либо в плане потребления, либо (рекомендуется) в плане ценовой категории "Премиум" решения "Функции Azure". Все приложения репликации должны выполняться с управляемым удостоверением, назначаемым системой или пользователем.

Связанные шаблоны Azure Resource Manager (ARM) создают и настраивают приложение репликации с помощью:

  • учетной записи хранения Azure для отслеживания хода выполнения репликации и ведения журналов;
  • Управляемое удостоверение, назначаемое системой.
  • интеграции мониторинга Azure и Application Insights для мониторинга.

Приложения репликации, которые должны обращаться к Центрам событий, привязанным к виртуальной сети Azure, должны использовать план ценовой категории "Премиум" решения "Функции Azure" и настраиваться для подключения к той же виртуальной сети, что также входит в число доступных вариантов.

Развертывание Визуализация
План потребления службы "Функции Azure" Развертывание в Azure Визуализация
План ценовой категории "Премиум" решения "Функции Azure" Развертывание в Azure Визуализация
План ценовой категории "Премиум" решения "Функции Azure" с виртуальной сетью Развертывание в Azure Визуализация

Примеры

Репозиторий примеров содержит несколько примеров задач репликации, которые копируют события между центрами событий и (или) между сущностями служебной шины.

Для копирования данных событий между Центрами событий используется триггер Центров событий с выходной привязкой к Центрам событий:

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

Для копирования сообщений между сущностями служебной шины используются триггер и выходная привязка служебной шины.

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

Вспомогательные методы позволяют упростить репликацию между центрами событий и служебной шиной:

Источник Назначение Точка входа
Центры событий Центры событий Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToEventHub
Центры событий Служебная шина Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToServiceBus
Служебная шина Центры событий Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToEventHub
Служебная шина Служебная шина Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToServiceBus

Наблюдение

Сведения о мониторинге приложения репликации см. в разделе "Мониторинг" документации по Функциям Azure.

Особенно полезным визуальным инструментом для мониторинга задач репликации является схема приложений Application Insights, которая автоматически создается на основе захваченных данных мониторинга и позволяет изучить надежность и производительность источника задачи репликации и операций передачи данных целевому объекту.

Для немедленного получения аналитических сведений по диагностике можно воспользоваться представленным на портале инструментом Интерактивные метрики, который выполняет визуализацию подробных сведений журнала с низкой задержкой.

Дальнейшие действия