Направление задачи деятельности конкретному работнику в парке SWF

У меня есть группа из нескольких рабочих хостов, которые опрашивают следующие задачи моего SWF:

  1. Действие 1. Выполните некоторую бизнес-логику для создания большого файла.
  2. Действие 2. Подождите некоторое время (одобрение человека, таймер и т. Д.)
  3. Действие 3: Передайте файл, используя какой-либо протокол (регулируемый входными параметрами SWF).
  4. Действие 4: Очистите созданный локально файл.

Файл, созданный на шаге 1, необходимо снова использовать на шаге 3, а затем в конце рабочего процесса удалить.

Система будет работать нормально, если для всех задач будет опрашиваться только 1 хост. Однако, когда у меня несколько рабочих, я не могу гарантировать, что задача-1 и задача-3 окажутся на одном и том же хосте.

Я бы не хотел делать следующее:

  • Загрузка файла в центральный репозиторий (скажем, S3) на шаге 1 и загрузка его на шаге 3; или
  • Наличие единого действия для задачи-1 и задачи-3.

У меня следующие вопросы:

  • Можно ли контролировать, чтобы последующие действия выполнялись на одном и том же хосте, а не на любом случайном хосте в моем парке?
  • Каковы конкретные рекомендации / лучшие практики по повторному использованию ресурсов, созданных в различных действиях в рабочем процессе?

person John Bupit    schedule 14.02.2018    source источник


Ответы (1)


  • Можно ли управлять тем, что последующие действия будут выполняться на
    том же хосте, а не на любом случайном хосте в моем парке?

Да, конечно. Основная идея состоит в том, что списки задач SWF (очереди, используемые для доставки задач активности) являются динамическими. Таким образом, каждый хост может иметь свой собственный список задач, а рабочий процесс может указывать конкретное имя списка задач при вызове действия. См. пример обработки файлов, который выполняет загрузку на любом хосте из пула, затем преобразует файл и выгружает результат на тот же хост, что и первый.

  • Элемент списка Каковы конкретные рекомендации / передовые методы повторного использования ресурсов, созданных в различных действиях в рабочем процессе?

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

person Maxim Fateev    schedule 14.02.2018