场景设计 - 大文件小内存排序

2021-04-23  本文已影响0人  夹胡碰

1. 场景描述

16G内存,32核CPU,2T的硬盘,实现500G文件的排序处理,你怎么设计

2. 考察要点

  1. 内存不足
  2. 并行执行、压榨CPU
  3. 空间复杂度支持O(n)-可归并
  4. 要求时间复杂度尽量低

3. 解决方法

步骤

  1. 500个文件分成 50份 每个10G内部归并排序
  2. 采用归并的思想,每次读取两个文件的头数字(已经有序)进行排序,合并成一个大文件。
  3. 多线程去执行归并操作

4. 性能提升

1). 2步骤每次可以批量取出多个,减少IO,但是额外占用的空间就会多,需要和多线程资源进行权衡。
2). 批量写,同批量读一样,需要额外占用空间

上一篇 下一篇

猜你喜欢

热点阅读