原文: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也会相应的升级。
分享到:
相关推荐
nexus-indexer-1.2.3.jar
组要是看到下载一个这个工具居然需要50积分?!!!! 下载地址: ...里面有各个版本的工具;...附上:...命令:java -jar indexer-cli-6.0.0.jar -u nexus-maven-repository-index.gz -d indexer
Vim索引器 一个Vim插件,可以轻松生成透明标签,并使标签保持最新状态。 有关Indexer + Vimprj的高级用法的深入讨论,请参见文章。
mycpan-indexer:(Perl)索引一个Perl发行版
该示例中DotLucene版本为 1.3,Highlighter版本为1.3.2.1,如果下载最新的lucene(Lucene.Net-2.0-004) 【该源码由51aspx提供】 源码 " width="468" resize="true" onerror="this.src='/images/ifnoimg....
indexer-cli-5.1.1.jar,用于解压maven中央库索引文件,解压后的索引文件可用于搭建nexus2私有库。需配合nexus-maven-repository-index.gz与nexus-maven-repository-index.properties使用。
eth-indexer是一个以太坊区块链索引器项目,用于将每个块/地址的块,事务和状态差异爬到MySQL数据库中。 入门 该项目包含3个主要组成部分: geth:修改geth以获取每个块/地址的状态差 idx-database:MySQL存储所有...
介绍这是一个java文件夹索引器。 它基于 Lucene 5.1.0。 它索引一个文件夹,然后打开一个端口,您可以在该端口... 您可以使用java -jar folder-indexer-version.jar-with-dependencies.jar [OPTIONS]启动它。开始命令行
groovy-crypto-extensions.zip,使crypto groovier的groovy扩展。使crypto groovier的groovy扩展。
贡献给 您已发现错误或对超酷的新功能有任何想法? 贡献代码是将某些东西还给开源社区的好方法。 在深入研究代码之前,我们需要一些准则供贡献者遵循,以便我们有机会掌握最新知识。入门确保您拥有。...
accelon3 的这个制作工具 indexer.exe 消失已久,挖出来看有没有人要 免积分
提供一个 Facade 对象fr.inria.aviz.elasticindexer.Indexer来执行几个操作: 使用(扩展)Tika 的结果来解析文件并返回文本内容和元数据。 结果将转换为 DocumentInfo 类型。 通过发送到elasticsearch来索引...
索引器在制品安装从下载用法FIXME:说明通过:exec-fn直接运行项目: $ clojure -X:run-xHello, Clojure!运行项目,覆盖要问候的名称: $ clojure -X:run-x :name '"Someone"'Hello, Someone!通过:main-opts ( -m ...
用法索引编制初始化./indexer.js --init [--es elasticsearch_address:port] [--couchdbouchdb_address:port / database] [--freq refresh_frequency_secs]更新./indexer.js [--es elasticsearch_address:port] ...
Nginx索引器由Tuxy编码Nginx Indexer用HTML / CSS编码,并使用PNG 16x16图标。...} #indexer将.nginx文件夹复制到您的/home/web目录中。 演示: : 前后附加图标欢迎您为问题跟踪器中的任何MIME类型请求其他图标
在这里,您可以找到一些很棒的代码片段,可用于使用Video Indexer API并将Video Indexer小部件集成到您的网站中。 内容 在这里,您可以找到有关如何使用Video Indexer,将其与您的产品集成以及通过与其他产品集成来...
使用可下载的URI将视频索引到存储在云中的视频文件 获取视频索引结果 获取任何见解项目/模型的视频缩略图 使用Jest测试框架添加测试。 添加其他API调用的处理程序-可以根据请求实现 添加示例 范例/用法 import ...
go-warc-indexer:将WARC文件转换为CDXJ格式并将其内容存储在IPFS上的索引器
################################## 偶像影像索引器项目 this spring-boot 2.1.0.BUILD-SNAPSHOT project, provides REST endpoints for: - indexing BINARY (Base64Enc) files to a remote IDOL Server database...
norch-indexer Norch.js 的索引工具 $ norch-indexer --help Usage: norch-indexer [options] Options: -h, --help output usage information -V, --version output the version number -d, --document...