21 декабря 2020 года
Когда речь идет о работе с функциями Azure в безсерверной среде, не редко возникает ощущение некоторого озадаченности. Внутреннее устройство приложений функций и то, как они обрабатывают запросы от приложений фронт-энда, могут быть загадкой. В этой статье блога мы рассмотрим концепции, лежащие в основе функций Azure, и то, как они могут использоваться в сочетании с Azure Data Factory.
Функции Azure предоставляют возможность запускать ваш код в облачной среде без необходимости управления серверами. Когда приложение фронт-энда отправляет запрос на выполнение вашего функционального кода, он проходит через прочный функциональный фреймворк, состоящий из стартера, оркестратора и активных функций. Azure Data Factory выступает в качестве интерфейса для выполнения вашей функции Azure, и результат вывода может быть дополнительно обработан в рабочем процессе вашей Data Factory.
Одним из ключевых аспектов функций Azure является их способность масштабироваться динамически в зависимости от спроса. По мере того, как вы отправляете больше параллельных запросов функций Azure из вашей Data Factory, приложение функций масштабируется от “готовых к работе всегда” экземпляров до “предварительно подогретых” экземпляров и, в конечном итоге, до “максимальных экземпляров”, доступных для вашего приложения функций. Эта масштабируемость обеспечивает эффективную обработку высоких нагрузок вашими функциями.
При работе с прочными функциями PowerShell важно установить доверие к поддерживаемой версии времени выполнения и возможностям обмена данными между оркестратором и активными функциями. Хотя последние могут быть плохо задокументированы, исследование и экспериментирование с этими возможностями могут привести к ценным идеям.
В моем путешествии использования функций Azure в Data Factory я столкнулся с двумя вехами. Первой вехой было получение начального обзора того, что возможно с функциями Azure в Azure Data Factory. Второй вехой было включение длительных процессов функций для предотвращения сбоев Data Factory. Эти вехи помогли мне понять мощь и гибкость функций Azure в сценарии интеграции данных.
Недавно я обнаружил более простой подход к опросу статуса длительных процессов функций в Data Factory. Ранее я использовал комбинацию контейнера Until loop, ожидания и активностей Web call для проверки статуса выполнения моего приложения функций. Однако я понял, что это можно заменить одной активностью Web call. При первоначальном выполнении вашей прочной функции Azure она мгновенно предоставляет код состояния выполнения HTTP 202 (Принято). Активность Web в Azure Data Factory может затем опрашивать URI statusQueryGetUri вашей функции Azure, пока код состояния HTTP не станет 200 (OK). Это позволяет избежать сложной логики и упрощает процесс.
Параллельное выполнение функций Azure является обычным требованием во многих проектах. Однако могут возникать случаи, когда определенные операции должны быть ограничены и последовательно выполнены. В таких сценариях важно обеспечить, чтобы экземпляры функций не стали недоступными для существующих рабочих процессов Data Factory. Перемещая логику ограничения из активности функции Azure в Data Factory, вы можете предотвратить эту проблему и поддерживать доступность ваших функций.
Новый подход предполагает завершение экземпляра функции Azure с кодом состояния HTTP 200 (OK), когда возникает ситуация ограничения. Он также предоставляет дополнительный статус выполнения вывода, указывающий, что его необходимо повторно выполнить. Контейнер Until loop в Data Factory может обрабатывать два сценария: когда код состояния HTTP равен 200 (OK) и пользовательский статус вывода равен “OK”, он выходит из контейнера loop и продолжает работу с следующей активностью. Если код состояния HTTP равен 200 (OK), но пользовательский статус вывода не равен “OK”, выполнение продолжается с новым вызовом прочной функции Azure и проверкой текущего статуса функции.
С помощью этого нового подхода конфликты в выполнении функций могут быть гармонично обработаны, и рабочий процесс Data Factory может соответствующим образом адаптироваться. Функция Azure теперь имеет два уровня опроса HTTP: естественное сбор статуса webhook и пользовательская логика в Data Factory для проверки того, является ли полученный статус OK статусом действительно OK.
Понимание функций Azure и их интеграция с Azure Data Factory открывает мир возможностей для интеграции и обработки данных. Используя масштабируемость и гибкость функций Azure, вы можете создавать надежные и эффективные рабочие процессы, обрабатывающие сложные сценарии данных.
Следите за новыми статьями о SQL Server и технологиях Azure!