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