Skip to content

mrunix/top-k

Repository files navigation

简单说明

用最小堆去统计前100的URI,用文件方式和RocksDB两种方式实现URI的统计:

  1. 扫描文件算每个URI的Hashcode,通过Hashcode除100取余,将余数相同的URI进行,以追加的方式存储在一起;然后第二遍扫描分组文件,统计每个分组前100URI,扫描下一个分组的结果再与前面的前100结果比较,所有分组扫描完成,则得出最终的结果。
  2. 通过RocksDB去存储,URI为KEY,其统计数为VALUE,采用get -> modify -> set流程去更新每个扫描到的URI的频率,RocksDB的get操作比较慢,差不多是文件方式的两倍多时间。

可以优化的地方

  1. 可以采用专门的磁盘IO线程来对磁盘进行读写;
  2. 增加磁盘的顺序读写操作,IO操作增加缓存,提高效率;
  3. 每次多读一些数据进来,读取的内容通知对应的线程去处理;
  4. 写的内容也是存入缓存,通知IO线程去处理;
  5. 如果可以把不同的文件存储到不同的硬盘,利用磁盘之间的并发效率;
  6. RocksDB可以采用merge方式,每次追加,减少get的操作时间;
  7. RocksDB别的可以提高IO的优化方法。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors