这是设计和代码问题的大量组合。
用例
- 给定范围内(2MB - 2GB)的许多日志文件,我需要解析每个日志并应用一些处理,生成 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
优点一些并行化,通过使用不同的参与者来处理部分行。Actors 将利用系统中的可用内核(?如何,可能是?)
缺点仍然是串行的,因为文件以串行方式读取
问题
- 上述任何一个选择是一个不错的选择吗?
- 有更好的选择吗?
请在这里提供有价值的想法
非常感谢