Я работаю над проектом с длинной цепочкой производитель / потребитель. Это означает, что 1-й процесс принимает данные от пользователя (огромный файл csv), обрабатывает данные построчно, переходит к другому процессу / потоку, который потребляет эти данные, обрабатывает, а затем переходит к другому и так далее. Цепочка составляет около 8-10 единиц, каждая из которых выступает в роли потребителя, а затем производителя. Я подумал об использовании лямбда-выражений AWS для этого. Я также мог использовать потоки Java. Преимущество, которое я вижу в лямбда-выражении AWS, заключается в том, что вы можете установить индивидуальный лимит регулирования для каждого узла. Итак, если задача вашего узла заключается в обновлении записи Dynamodb, мы могли бы регулировать этот узел, чтобы он соответствовал блокам записи Dynamodb и так далее. Еще одно преимущество, которое я вижу при использовании лямбда, заключается в том, что мне не нужно писать код для управления многопроцессорностью (или многопоточностью), и моя обработка данных не будет зависеть от выбранного мной оборудования - я также мог бы сэкономить, выбрав низкокачественное оборудование, единственной задачей которого будет выступать в качестве первого производителя, но я все равно буду платить за aws lambda.
Похоже, вам следует использовать пошаговые функции, чтобы связать лямбда-выражения.
Похоже, что reactive streams
(а не потоки Java или лямбды AWS) - лучший инструмент для вашей задачи. Они предоставляют:
Существует ряд реализаций reactive streams
: JavaRx2, Project Reactor (включен в Spring 5), Akka Streams и другие.