原文: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
7. **RESTful API**:Nexus提供RESTful API,允许通过编程方式与仓库进行交互,如上传、下载组件。 源码包"nexus-2.2-01"包含了以下主要模块: - **Sonatype Aether**:Aether是Maven库解析和操作的API,Nexus使用...
- 将central-ctx.zip解压到C:\Users\root\sonatype-work\nexus\indexer\central-ctx目录。 - 将本地仓库解压后的内容覆盖到C:\用户\sonatype-work\nexus\storage\central目录。 #### 二、Maven配置 1. **配置...
标题 "nexus-indexer-lucene-plugin-2.6.1-01.zip" 提供的信息表明,这是一个与Nexus仓库管理器相关的Lucene插件。Nexus是Sonatype公司提供的一个强大的Maven、NPM、Yarn、RubyGems、Python、Composer等软件包仓库...
本文将深入探讨如何使用Vim插件`Indexer`来创建和维护项目的索引,以便更有效地浏览和导航源代码。`Indexer`配合`Vimprj`使用,能为项目提供实时更新的标签,提高开发效率。 `ctags`是一个常用的工具,用于生成源...
《深入理解Lucene-2.0:从源码到应用》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。它为Java开发者提供了强大的文本搜索功能,广泛应用于各种信息检索系统中。本篇文章将围绕"Lucene-2.0学习...
包括属性(Property)、索引器(Indexer)、委托(Delegate)、事件(Event)等,都是C# 2.0中重要的编程概念。 通过《完全手册:C#2.0程序设计详解电子教程》,开发者不仅能学习到C# 2.0的基本语法,还能深入理解...
该示例中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]启动它。开始命令行
贡献给 您已发现错误或对超酷的新功能有任何想法? 贡献代码是将某些东西还给开源社区的好方法。 在深入研究代码之前,我们需要一些准则供贡献者遵循,以便我们有机会掌握最新知识。入门确保您拥有。...
"java-Email-indexer" 是一个基于 Java 开发的电子邮件搜索和索引工具,专门设计用于提高电子邮件的检索效率。它利用了 Lucene 库进行高效的全文索引,使得用户能够快速地查找和定位电子邮件内容。 **描述详解:** ...
提供一个 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 ...
**Log-Indexer: 使用RavenDb构建的日志索引器** 日志索引器是IT运维中的关键工具,它能够高效地收集、存储和分析应用程序产生的日志数据。`Log-Indexer`是一个基于RavenDb的小型日志管理解决方案,特别适合处理大量...
PDF-Indexer是一个基于JavaScript开发的虚拟简单PDF索引器工具。这个工具的主要目标是帮助用户更有效地管理和搜索PDF文档中的内容。JavaScript是一种广泛应用于Web开发的编程语言,因此PDF-Indexer通常作为Web应用...
用法索引编制初始化./indexer.js --init [--es elasticsearch_address:port] [--couchdbouchdb_address:port / database] [--freq refresh_frequency_secs]更新./indexer.js [--es elasticsearch_address:port] ...
【标题】:“indexer:刮网。 转到每个看不见的链接” 【描述】:“索引器,刮网,转到每个看不见的链接”这一描述暗示了一个项目或工具,它专注于通过网络爬虫技术抓取和处理互联网上的数据,包括那些在普通浏览时...