Это большая проблема сочетания дизайна и кода.
Случай использования
. При наличии множества файлов журналов в диапазоне (2 МБ–2 ГБ) мне нужно проанализировать каждый из этих журналов и применить некоторую обработку, сгенерировав Java POJO
.
– Для этой проблемы давайте предположим, что у нас всего 1
файла журнала
. Кроме того, идея состоит в том, чтобы наилучшим образом использовать System. Доступно несколько ядер.
Вариант 1
– открыть файл (синхронно), прочитать каждую строку, сгенерировать POJO
s
FileActor -> read each line -> List<POJO>
Плюсы: простота понимания
Минусы: последовательный процесс, не использующий преимущества нескольких ядер в системе
Вариант 2
– открыть файл (синхронно), прочитать N
строк (N
можно настроить), передать другим участникам для обработки
/ LogLineProcessActor 1
FileActor -> LogLineProcessRouter (with 10 Actors) -- LogLineProcessActor 2
\ LogLineProcessActor 10
Плюсы Некоторое распараллеливание за счет использования разных акторов для обработки части строк. Актеры будут использовать доступные ядра в системе (? как, может быть?)
Минусы Все еще последовательный, потому что файл читается в последовательном режиме
Вопросы
. Является ли любой из вышеперечисленных вариантов хорошим выбором?
. Есть ли альтернативы получше?
Пожалуйста, предоставьте ценные мысли здесь
Большое спасибо
Storm
выполнимо. - person daydreamer   schedule 07.05.2015