Я работаю над проектом, по сути, длинной цепочкой производителей / потребителей. Это означает, что 1-й процесс получает данные от пользователя (огромный CSV-файл), обрабатывает данные построчно, передает другому процессу / потоку, который потребляет эти данные, обрабатывает, а затем передает другому и т. Д.
Длина цепочки составляет около 8-10 единиц, каждая единица выступает в роли потребителя, а затем производителя.
Я думал об использовании AWS лямбда для этого. Я также мог бы использовать потоки Java. Преимущество AWS lambda в том, что вы можете установить индивидуальный лимит регулирования для каждого узла.
Таким образом, если работа вашего узла заключается в обновлении записи DynamodB, мы могли бы регулировать этот узел, чтобы он соответствовал единицам записи DynamodB и т. Д.
Другое преимущество, которое я вижу при использовании лямбды, заключается в том, что мне не нужно писать код для управления многопроцессорностью (или многопоточностью), и моя обработка данных не будет зависеть от выбранного оборудования - я также могу сэкономить, выбрав низкокачественное оборудование, единственной задачей которого было бы выступить в качестве первого производителя, но я все равно буду платить за AWS Lambda.
- Работает ли с потоками Java аналогично, если я использую лямбда-символы Java и использую их так же, как я бы использовал лямбда-лямбда AWS? Могу ли я использовать троттлинг в Java-лямбдах?
- Если я использую потоки Java, существует ли простой способ управления многопроцессорной обработкой (многопоточностью).
- Есть ли другие преимущества использования лямбды, кроме регулирования и управления пулами? Есть ли недостатки?
- Существуют ли другие альтернативы, кроме двух вышеупомянутых?
- Что делать, если мне нужно несколько потребителей для определенных узлов в цепочке? например Потребитель потребляет данные, обрабатывает и передает их следующему в цепочке, но мы также должны регистрировать данные или сохранять их в дБ.