Почему поведение «воспроизведения» обеспечивает надежное выполнение в долговременных функциях Azure? - PullRequest
0 голосов
/ 16 марта 2019

Я думаю, что поведение «воспроизведения» обеспечивает надежное выполнение в долговременных функциях Azure, как описано в следующей ссылке.

https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-checkpointing-and-replay

Однако я не знаю, почему этоозначает надежный, и разница между «воспроизведением» и отсутствием «воспроизведения».

Поведение ответа очень сложно. Я думаю, что не использовать ответ проще, чем использовать воспроизведение.

Почему долговечные функциииспользовать воспроизведение? Почему поведение "воспроизведения" обеспечивает надежное выполнение в надежных функциях Azure?

1 Ответ

0 голосов
/ 26 марта 2019

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

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

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

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

Но для того, чтобы это было возможно, ваш код оркестратора имеет некоторые ограничения, которые вы должны соблюдать, как документировано .Для справки:

  • Детерминированный - Не используйте функции, которые дают разные выходы при каждом воспроизведении.Если вам нужны такие функции, переместите их в свои собственные функции деятельности
  • Неблокирующая
  • Нет асинхронных операций , кроме тех, которые были выполнены с использованиемБиблиотека Durable Functions
  • Избегайте бесконечных циклов

Подробнее о базовом шаблоне, который реализует Durable Functions, можно узнать - Event Sourcing - длябольше информации.

...