Задачи и приложения репликации событий с использованием функций Azure
Совет
Для всех задач репликации с отслеживанием состояния, в которых рассматриваются полезные данные событий, а также выполняются операции их преобразования, объединения, расширения или уменьшения, используйте вместо функций Azure службу Azure Stream Analytics.
Как объясняется в статье о репликации событий и федерации между регионами, репликация потоков событий между парами концентраторов событий и между концентраторами событий и другими исходными и целевыми потоками событий в службе "Функции Azure" осуществляется без отслеживания состояния.
Функции Azure — это масштабируемая и надежная среда выполнения для настройки и запуска бессерверных приложений, включая репликацию событий и задачи федерации.
В этом обзоре вы узнаете о встроенных возможностях Функций Azure для таких приложений, о блоках кода, которые можно адаптировать и изменить для задач преобразования, а также о том, как настроить приложение с Функциями Azure, чтобы оптимальным образом интегрировать его с Концентраторами событий и другими службами Azure для обмена сообщениями. Эта статья содержит много отсылок к документации по Функциям Azure с дополнительными сведениями.
Что такое задача репликации?
Задача репликации получает события из источника и переадресовывает их в целевой объект. Большинство задач репликации переадресовывают события без изменений и в лучшем случае выполняют сопоставление структур метаданных, если исходный и целевой протоколы различаются.
Задачи репликации обычно не отслеживают состояние. Это означает, что они не предоставляют сведения о состоянии или других побочных эффектах при последовательном или параллельном выполнении задачи. Это также справедливо для пакетной обработки и связывания, которые могут быть реализованы поверх существующего состояния потока.
Это отличает задачи репликации от задач статистической обработки, для которых обычно отслеживается состояние и которые представляют собой предметную область платформ и служб аналитики, таких как Azure Stream Analytics.
Приложения и задачи репликации в Функциях Azure
В Функциях Azure задача репликации реализуется с помощью триггера, который получает входные сообщения из настроенного источника и выходную привязку, переадресовывающую сообщения, скопированные из источника, в настроенный целевой объект.
Задачи репликации развертываются в приложении репликации с помощью тех же методов развертывания, которые используются для любых других приложений Функций Azure. В одном приложении можно настроить несколько задач.
При использовании плана ценовой категории "Премиум" решения "Функции Azure" несколько приложений репликации могут совместно использовать один и тот же базовый пул ресурсов, называемый планом службы приложений. Это означает, что можно легко выровнять задачи репликации, написанные на .NET, с задачами репликации, которые написаны, например, на Java. Это имеет значение, если вы хотите воспользоваться определенными библиотеками, такими как Apache Camel, которые доступны только для Java, а также если это лучший вариант для конкретного пути интеграции, несмотря на то, что для выполнения других задач репликации обычно выбирают другой язык и среду выполнения.
Если таковые имеются, рекомендуется использовать триггеры, ориентированные на пакетную обработку, вместо триггеров, которые доставляют отдельные события или сообщения. Вы также всегда должны получать полную структуру события или сообщения, а не полагаться на выражения привязки параметров Функций Azure.
Имя функции должно отражать пару источника и целевого объекта, к которому выполняется подключение. Следует также добавить в качестве префикса ссылки на строки подключения или другие элементы конфигурации в файлах конфигурации приложения с таким именем.
Сопоставление данных и метаданных
После выбора пары входного триггера и выходной привязки необходимо выполнить сопоставление между различными типами событий или сообщений, за исключением случая, когда типы триггера и результата совпадают.
Для простых задач репликации, которые копируют сообщения между Центрами событий и служебной шиной, писать собственный код не нужно, зато можно использовать служебную библиотеку, в которой есть примеры репликации.
Политика повтора
Чтобы избежать потери данных во время события доступности на обеих сторонах функции репликации, необходимо настроить надежность политики повтора. Сведения о настройке политики повтора см. в документации по повторам для Функций Azure.
Параметры политики, выбранные для примеров проектов в образце репозитория, настраивают стратегию экспоненциальной задержки с интервалами повтора от 5 секунд до 15 минут и бесконечным числом повторных попыток, что позволяет избежать потери данных.
Общедоступная версия политик повтора для Функций Azure поддерживает только триггеры Центров событий и таймера. Поддержка всех остальных триггеров, доступная в предварительной версии, была удалена.
Настройка узла приложения репликации
Приложение репликации — это узел выполнения для одной или нескольких задач репликации.
Это приложение Функций Azure, которое настроено для запуска либо в плане потребления, либо (рекомендуется) в плане ценовой категории "Премиум" решения "Функции Azure". Все приложения репликации должны выполняться с управляемым удостоверением, назначаемым системой или пользователем.
Связанные шаблоны Azure Resource Manager (ARM) создают и настраивают приложение репликации с помощью:
- учетной записи хранения Azure для отслеживания хода выполнения репликации и ведения журналов;
- Управляемое удостоверение, назначаемое системой.
- интеграции мониторинга Azure и Application Insights для мониторинга.
Приложения репликации, которые должны обращаться к Центрам событий, привязанным к виртуальной сети 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);
}
Вспомогательные методы позволяют упростить репликацию между центрами событий и служебной шиной:
Оригинал | Target | Точка входа |
---|---|---|
Event Hubs | Event Hubs | Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToEventHub |
Концентраторы событий | Служебная шина | Azure.Messaging.Replication.EventHubReplicationTasks.ForwardToServiceBus |
Cлужебная шина | Концентраторы событий | Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToEventHub |
Служебная шина | Cлужебная шина | Azure.Messaging.Replication.ServiceBusReplicationTasks.ForwardToServiceBus |
Наблюдение
Сведения о мониторинге приложения репликации см. в разделе "Мониторинг" документации по Функциям Azure.
Особенно полезным визуальным инструментом для мониторинга задач репликации является схема приложений Application Insights, которая автоматически создается на основе захваченных данных мониторинга и позволяет изучить надежность и производительность источника задачи репликации и операций передачи данных целевому объекту.
Для немедленного получения аналитических сведений по диагностике можно воспользоваться представленным на портале инструментом Интерактивные метрики, который выполняет визуализацию подробных сведений журнала с низкой задержкой.