`
juvenshun
  • 浏览: 1588566 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Nexus Indexer 2.0:增量下载

阅读更多

原文:http://www.sonatype.com/people/2009/05/nexus-indexer-20-incremental-downloading/

 

Nexus Indexer已经变得十分流行,它已经成为了索引Maven仓库的事实标准(包括大个子,中央仓库)。随着仓库变得越来越大,索引的大小也随之增长。从最初几百kb的文件,渐渐得增长至20-30mb的文件。大家看到索引是仓库内容的一个很好的入口(不仅有Maven使用仓库,用户也直接使用仓库),于是索引文件成了被下载得最多的文件,中央仓库中这个20mb的文件每天被数千的用户下载,带宽消耗十分巨大。为了解决这个问题,我们为Nexus Indexer引入了增量索引处理机制。这包括两个部分,生产者构建增量索引为消费者提供下载,以及消费者从生产者处获取增量索引。

 

构建增量索引

当中央仓库的每日执行任务创建索引的时候,最近的内容被存储到nexus-maven-repository-index.gz文件中(所有全部内容)。这个文件只是作为一个后备,为了防止万一:1,消费者没有正确的处理增量索引;2,用户落后太久了,而生产者不再拥有用户需要的增量部分。除了这个文件,每个增量索引的生成包含了自上次索引生成的所有变化(添加/更新/删除)。增量文件很小,与完整索引相比,大部分情况基于天的增量索引大约就10kb。增量文件在文件nexus-maven-repository-index.properties中列出,伴随有一个chain-id。这个chain-id是用来“重置”增量链,用来判断是否由于某些原因需要下载完整索引。

 

获取增量索引

如果消费者程序和Nexus Indexer集成了(至少要2.0版),那么就没什么可担心了,Nexus Indexer会管理下载其缺失的增量索引片段,如果索引混乱了(请求一个生产者不再支持的增量片段,或者chain-id不同),indexer就会下载完整索引文件,然后在下次更新的时候开始检查增量变化。

 

这是所有文件the nexus-maven-repository-index.properties处理的内容:

  • nexus.index.chain-id: 这是当前所有增量条目的chain-id。如果什么时候该值变化了,造成与消费者本地properties文件不一致,那么消费者就需要触发一次完整的.gz索引下载(当然同时更新properties文件)
  • nexus.index.last-incremental: 这是可用的最新增量条目,只是简单的一个插入到下载文件名中的整数。如果消费者本地properties文件中拥有同样的值,就不需要下载任何增量。
  • nexus.index.incremential-X: 这是为每个可用增量条目罗列的值。第一个条目(X=0)是生产者仍然维护的最旧的增量片段。如果消费者本地properties文件的last-incremental的值小于这里第一个条目的值,就需要下载完整.gz索引(以及properties文件)。否则,就只需要下载生产者提供的每一个nexus-maven-repository-index.X.gz文件(X大于消费者本地的last-incremental值,小于等于远程的last-incremental值)。


支持遗留索引应用

当然我们不希望将所有遗留应用拒之门外,因此旧的基于时间戳的properties同样可用:

  • nexus.index.time: 遗留.zip索引上次创建的时间戳。如果该时间戳和你本地属性文件的不同,就需要下载完整.zip索引。
  • nexus.index.timestamp: 遗留.gz索引上次创建的时间戳。如果该时间戳和你本地属性文件中的不同,就需要下载完整.gz索引。


因此为了简单明了的用好增量索引这个特性,如果你的引用已经和Nexus Indexer集成了,那么你绝对应该更新到版本2.0.0,以节省巨大的带宽消耗。最新的m2eclipse 0.9.8已经完成了这一步,Nexus 1.4也会相应的升级。

9
0
分享到:
评论
6 楼 aiafei0001 2014-09-19  
我下载了那个文件,133m,但是照样不能自动更新jar
5 楼 张宗耀 2013-02-28  
经过测试,生成索引的方式是,下载nexus-maven-repository-index.gz文件,地址为,http://repo.maven.apache.org/maven2/.index/,将nexus-maven-repository-index.gz和nexus-maven-repository-index.properties复制到maven本地仓库的repo\.cache\m2e\1.3.1\XXX\下,启动eclipse,一次选择Windows->Show Views->Other..->Maven->Maven Repositories,打开后,打开Global Repositories会看到Central(http://repo.maven.org/maven2/),右键单击选择Minimum Index Enabled或者Enable Full Index,eclipse会卡一段时间,然后就会在maven本地仓库的repo\.cache\m2e\1.3.1\XXX\生成一个文件夹,里面就是nexus熟悉的索引文件,全部复制到
nexus-2.3.1-01\sonatype-work\nexus\indexer\central-ctx下即可。
4 楼 loomz 2012-08-04  
loomz 写道
请问楼主,现在无法下载到nexus-maven-repository-index.zip,手工怎么下载都下载不到,能给个地址不

socket timeout异常
3 楼 loomz 2012-08-04  
请问楼主,现在无法下载到nexus-maven-repository-index.zip,手工怎么下载都下载不到,能给个地址不
2 楼 lovefly_zero 2009-10-12  
Nexus
killvin 写道
惨了!看不懂


这无非是对m2eclipse 中Archetypes下的Indexer进行一下说明而已。呵呵。
1 楼 killvin 2009-05-19  
惨了!看不懂

相关推荐

Global site tag (gtag.js) - Google Analytics