Каков хороший вариант использования дочернего рабочего процесса в Uber Cadence?

Я пытаюсь понять варианты использования дочернего рабочего процесса с Uber Cadence. В чем преимущество дочернего рабочего процесса по сравнению с простым разделением рабочего процесса на функции? У меня есть довольно сложный рабочий процесс, который я рассматриваю для разделения на несколько дочерних рабочих процессов, но я не уверен в плюсах и минусах этого.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
1 602
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • Дочерний рабочий процесс может размещаться в отдельном наборе рабочих процессов, не содержащих код родительского рабочего процесса. Таким образом, он будет действовать как отдельная служба, которую можно вызывать из нескольких других рабочих процессов.
  • Один рабочий процесс имеет ограниченный размер. Например, он не может выполнять 100 тыс. действий. Дочерние рабочие процессы можно использовать для разделения проблемы на более мелкие фрагменты. Один родитель с 1000 детей, каждый из которых выполняет 1000 действий, дает 1 миллион выполненных действий.
  • Дочерний рабочий процесс можно использовать для управления некоторым ресурсом, используя его идентификатор, чтобы гарантировать уникальность. Например, рабочий процесс, управляющий обновлениями узла, может иметь дочерний рабочий процесс для каждого узла (имя узла является идентификатором рабочего процесса) и использовать их для обеспечения сериализации всех операций на узле.
  • Дочерний рабочий процесс можно использовать для выполнения некоторой периодической логики, не увеличивая размер родительской истории. Родитель запускает дочерний процесс, который выполняет периодические логические вызовы continue as new столько раз, сколько необходимо, а затем завершает работу. С родительской точки зрения это всего лишь один вызов дочернего рабочего процесса.

Основным ограничением дочернего рабочего процесса по сравнению с размещением всей логики приложения в одном рабочем процессе является отсутствие общего состояния. Родитель и ребенок могут общаться только через асинхронные сигналы. Но если между ними существует тесная связь, может быть проще использовать единый рабочий процесс и просто полагаться на общее состояние объекта.

Я лично рекомендую начинать с реализации одного рабочего процесса, если ваша проблема имеет ограниченный размер с точки зрения количества выполненных действий и обработанных сигналов. Это просто проще, чем несколько асинхронно взаимодействующих рабочих процессов.

Также часто наблюдают, что рабочие процессы — это не просто функции, в них можно использовать всю мощь объектно-ориентированного программирования. Используйте структуры, интерфейсы и другие методы объектно-ориентированного программирования, чтобы разбить логику на более управляемые абстракции.

Другие вопросы по теме