Я нахожусь в процессе разработки системы, в которой есть основной поток объектов, и есть несколько рабочих, которые производят некоторый результат из этого объекта.Наконец, есть некоторый специальный / уникальный работник (своего рода «сток», с точки зрения теории графов), который берет все результаты и обрабатывает их в некотором конечном объекте, который записывается в некоторую БД.
Itвозможно, что работник зависит от результатов других работников (следовательно, ждет их результатов)
Теперь я сталкиваюсь с несколькими проблемами:
- Это может бытьтот один работник намного медленнее другого.Как ты с этим справляешься?Добавление большего количества рабочих (= масштабирование) более медленного типа?(возможно динамически)
- Предположим, W_B зависит от W_A.Если W_B по какой-то причине не работает, поток останавливается, и система перестает работать.Поэтому я бы хотел, чтобы система как-то обошла этого работника.
- Более того, как конечный работник решает, когда работать с набором результатов?Предположим, что у него есть результаты A и B, но нет результата C. Может быть, C не работает или просто очень медленно в данный момент.Как это может принять решение?
Стоит отметить, что это не приложение реального времени, а автономная система обработки (т. Е. Вы можете получить доступ к БД и изменить запись), но в то же время она имеет дело с относительнобольшое количество объектов в «быстром темпе».
Что касается технологий,
Я занимаюсь разработкой системы с использованием Java, но не привязан к конкретной технологии.
I 'Буду рад, если вы поможете мне с общим дизайном системы.
Большое спасибо!