У меня сейчас есть приложение, которое представляет собой проект трубопровода. На первом этапе он считывает некоторые данные и файлы в поток. Есть несколько промежуточных этапов, которые делают вещи для потока данных. И затем есть заключительная стадия, которая записывает поток куда-то. Все это происходит поочередно, один этап завершается, а затем переходит к следующему этапу.
Все это работало просто замечательно, но теперь объем данных начинает немного увеличиваться (потенциально сотни ГБ). Поэтому я думаю, что мне нужно будет что-то сделать, чтобы облегчить это. Моя первоначальная мысль - это то, что я ищу для обратной связи (будучи независимым разработчиком, мне просто некуда отразить эту идею).
Я думаю о создании параллельного конвейера. Объект, который запускается с конвейера, создает все этапы и запускает каждый в своем собственном потоке. Когда на первом этапе поток достигает некоторого определенного размера, он передает этот поток на следующий этап для обработки и запускает новый собственный поток для продолжения заполнения. Идея заключается в том, что на последнем этапе будут закрываться потоки, так как на первом этапе строятся новые, поэтому использование памяти будет ниже.
Итак, вопросы:
1) Есть мысли высокого уровня о направлениях для этого дизайна?
2) Есть ли более простой подход, который вы можете себе представить, который может применяться здесь?
3) Существует ли что-нибудь, что может сделать что-то подобное, что я мог бы использовать повторно (не продукт, который я должен купить)?
Спасибо
MikeD