Вариант использования:
У меня есть файл с идентификаторами в нем (около 500 КБ)
Мое приложение читает эти файлы и обрабатывает их (обработка каждого идентификатора огромна). В целом, для этой обработки требуется много времени и памяти.
Что нам нужно сделать, так это увеличить число процессов (запустить процессы Java на отдельных компьютерах / блоках) и разделить весь список идентификаторов на несколько фиксированных размеров пакетов, чтобы 5 процессов начинали обрабатывать элементы из файла и выбирать до следующей партии всякий раз, когда ее обработка заканчивается.
например. если общее количество элементов в файле равно 100, а размер пакета равен 5, а общее количество процессов - 3, то обработка должна быть такой, как
- Процесс 1: 1-5
- Процесс 2: 6-10
- Процесс 3: 11-15
так, что если процесс 2 завершается раньше других процессов, он начинает обработку 16-20 и уведомляет об этом других, так что следующий доступный процесс выбирает пункты 21-25.
Обратите внимание, что из-за ограничений памяти мы не можем сделать это, используя несколько потоков на одном процессе / хосте.
Может кто-нибудь, пожалуйста, предложить решения / ссылки, как это может быть достигнуто.