При масштабировании следует учитывать параллелизацию как запроса, так и обработки.Если требования к упорядочению отсутствуют или обработка всех записей займет больше времени, чем 10-минутный тайм-аут функции.Или если вы хотите выполнить некоторую настройку / преобразование данных в полете, или если у вас есть разные пункты назначения для разных типов данных.Или, если вы хотите быть изолированы от сбоя - например, ваша функция не работает в середине обработки, и вы не хотите повторно запрашивать API.Или вы получаете данные другим способом и хотите начать обработку на определенном этапе процесса (а не запускаться с точки входа).Все виды причин.
Я хотел бы здесь сказать, что наилучшая степень параллелизма и сложности в значительной степени зависит от вашего уровня комфорта и требований.Приведенный ниже пример является своего рода «крайним» примером разделения процесса на отдельные этапы и использования функции для каждого;в некоторых случаях может не иметь смысла разделять отдельные шаги и объединять их в один. Durable Functions также помогают упростить управление этим процессом.
- Функция, управляемая таймером, которая запрашивает API, чтобы определить глубину требуемых страниц, или ставит в очередь дополнительные страницы для второй функции, которая фактически вызывает вызов API с постраничным вызовом
- Эта функциязатем запрашивает API и записывает в пустую область (например, Blob) или помещает каждую строку в очередь для записи / обработки (например, что-то вроде очереди хранения, так как они дешевы и быстры, или очередь шины интеграции, еслизаинтересованные стороны (например, pub / sub)
- При записи в «блоб-блоб» функция, запускаемая BLOB-объектами, считывает BLOB-объекты и ставит в очередь отдельные записи в очередь (например, очередь хранения, так как очередь хранениябыло бы дешево и быстро для чего-то подобного)
- Другая функция, запускаемая очередью, фактически обрабатывает запись отдельных строк в следующую систему в строке, SQL или как угодно.
Вы будетеполучить некоторое распараллеливание этого, плюс возможность начать с любого шага в процессе, с правильно отформатированным сообщением.Отказчики сталкиваются с неверными данными, такие вещи, как отравленные очереди / очереди недоставленных писем, могли бы помочь в случаях исключений, поэтому вместо завершения всего процесса вы можете вручную исправить ошибочные данные.