文件下载神器之aria2(强烈推荐)

文章目录

  • 1. 业务诉求
  • 2. 初次筛选
  • 3. 鹿死谁手
  • 4. aria2大获全胜
  • 5. 欢迎留言

1. 业务诉求

  最近在工作过程中,得知了一个新的需求,就是需要每天去FTP服务器下载指定的文件,其中每天的下载量大约是百万级。经理要求在一天内得到比wget更加有效更加优雅的落地方案。这可真是压力山大啊!
文件下载神器之aria2(强烈推荐)_第1张图片
  由于时间紧,任务重。没有时间去自己造轮子,所以就调研使用已有的高效的工具去解决上述问题。

  那么问题来了,如何去寻找最高效的工具呢?用什么样的数据来证明哪个工具是最优的呢?
文件下载神器之aria2(强烈推荐)_第2张图片

2. 初次筛选

  通过搜索引擎搜寻了一番,得到了以下三个候选者:aria2、axel、mwget。那如何进行评判呢?翻来覆去,苦思冥想,最终还是打开每日必上网站:全球最大同性交友网站之github。那就不妨看看这三个软件的评分数据吧(其中Star表示点赞数,Fork表示复制数):

软件 Star Fork
aria2 22600 2700
axel 1800 197
mwget 15 4

  容易看出,软件与软件之间的差别真的比人与人之间的差别还要大。所以就先把最弱的mwget排除掉,再用实践证明aria2和axel到底哪个是真正的“屠龙刀”。
文件下载神器之aria2(强烈推荐)_第3张图片

3. 鹿死谁手

  由于下载数据量为百万级,但是由于时间有限,所以无法进行当天全量数据测试,随机抽样选择了一万数据进行测试。简单起见,用默认参数进行测试比较,另外为了证明是否比wget有提升,则同时加上wget的测评,结果如下所示:

软件 1W文件下载时间(s)
aria2 225s
wget 387s
axel 756s

  让人大跌眼镜的是,axel比wget还差,可能是因为每个文件大小比较小。换个业务场景,axel效果可能就很好呢。

4. aria2大获全胜

  那能否在aria2的基础上,优化参数从而达到最佳的效果呢?

  通过不断优化参数,最终最优的命令为:aria2c -j 10 -i test_url.csv -s 1 -q,其中-j 10表示10个进程同时下载,-i test_url.csv表示从文件中逐行读取URL进行下载,-s 1表示单个线程(主要是由于文件小,如果大文件则选用多线程会更快),-q表示静默模式(不会逐行打印下载信息,节约时间)。优化后的参数如下所示:

软件 1W文件下载时间(s)
aria2 优化前 225s
aria2 优化后 190s
文件下载神器之aria2(强烈推荐)_第4张图片

  虽然优化后提升不是特别明显,但这只是对于1W数据而言的。而生产环境是每天一百万的数据,所以差别就不小了。aria2其他参数可见链接https://aria2.github.io/manual/en/html/aria2c.html

  由于自己是在Centos环境下安装使用aria2,它的安装命令很简单,如下所示:

yum install aria2

5. 欢迎留言

  大家还有其他推荐的下载软件吗?适合于大量文件的神器嘛?有的话欢迎推荐,没有的话也可以聊聊自己有没有别的类似的需求呢。

你可能感兴趣的:(实用工具,工具,aria2,开发工具)