使用最新版本?
JFrog平台用户指南
JFrog Artifactoryx文档
要获取最新版本,请访问JFrog统一平台
重复数据删除
Artifactory只存储一次二进制文件。这就是我们所说的“一次且仅一次存储”。第一次上传文件时,Artifactory在存储文件时运行所需的校验和计算,但是,如果再次上传文件(例如,上传到不同的位置),则上传被实现为一个简单的数据库事务,该事务创建另一个记录,将文件的校验和映射到它的新位置。实际上不需要将文件再次存储在存储器中。无论上传文件多少次,文件存储库都只承载该文件的一个副本。
复制和移动文件
复制和移动文件是通过简单地添加和删除数据库引用来实现的,相应地,这些操作的性能是数据库事务的性能。
删除文件
删除文件也是一个简单的数据库事务,其中删除相应的数据库记录。文件本身不会被直接删除,即使指向它的最后一个数据库条目被删除。所谓的“孤儿”文件在后台被Artifactory的垃圾收集进程删除。
上传、下载和复制
在将文件从一个位置移动到另一个位置之前,Artifactory发送校验和头。如果这些文件已经存在于目标中,那么即使它们存在于不同的路径下,也不会传输它们。
文件系统性能
文件系统的性能得到了极大的提高,因为文件存储库上的操作是作为数据库事务实现的,因此不需要在文件系统上执行写锁。
校验和搜索
通过校验和搜索文件非常快,因为Artifactory实际上是在数据库中搜索指定的校验和。
灵活的布局
由于数据库是文件存储和显示布局之间的间接层,因此可以支持任何布局,无论是标准打包格式之一,如Maven1, Maven2, npm, NuGet等,还是任何自定义布局。
sha - 256支持
从5.5版本开始,Artifactory原生支持SHA-256。工件的SHA-256校验和在部署到Artifactory时计算,并作为数据库的一部分在持久存储中进行维护。的设置项目SHA256校验和REST API端点(将工件的SHA-256校验和设置为其属性之一)仍然支持向后兼容性,但是,该端点最终将被弃用。
Artifactory对SHA-256校验和的支持是全功能的,并且在几个方面是明显的:
- 它们可以用在AQL查询,并在相应的响应中返回
- 它们是作为下载头信息包含的
- 它们可以用在部署的工件和通过校验和部署工件REST API端点。
- 它们包括在下载文件夹
- 显示在一般信息选项卡
- 可以在各种REST API端点中使用搜索
在升级到5.5(或更高版本)之后,Artifactory将完全能够利用工件的SHA-256校验和来实现上面提到的任何特性。
充分利用Artifactory对SHA256的原生支持
上传的新工件将自动计算其SHA-256校验和,但是,在升级之前已经在Artifactory中托管的工件在数据库中还没有其SHA-256校验和。
要充分利用Artifactory的SHA-256功能,您需要运行以下进程迁移Artifactory的数据库确保每个工件的记录包含其SHA-256校验和。
迁移数据库到包含SHA-256
迁移数据库可能是一项资源密集型操作
根据数据库的大小,此过程可能是资源密集型的。为了减轻系统上可能出现的负载,您可以使用下面列出的几个系统属性来配置进程REST api。我们强烈建议您通读整个流程迁移过程,以确保系统的最佳配置。
通过a配置迁移Artifactory的属性集artifactory.system.properties
文件如下所述,或使用启动SHA256迁移任务和停止SHA256迁移任务REST API端点,本质上,做以下事情:
- 搜索没有SHA-256值的所有数据库记录。
- 对于每个这样的记录,在数据库中查找具有相同SHA1校验和值的所有其他记录
- 如果其中任何一个已经计算出SHA-256,使用它来更新所有其他的
- 如果它们都没有计算出SHA-256,那么计算它,然后使用它来更新所有其他的
- 如果没有相同SHA1值的记录,则计算SHA-256
首先运行垃圾收集以优化迁移过程
一旦用SHA-256值填充了所有数据库条目,迁移过程就完成了。因为您的数据库可能包含已删除的工件的条目,但是还没有被物理地删除垃圾收集,我们强烈建议在调用数据库迁移之前手动调用垃圾收集。通过减少迁移生成的下载次数,删除已删除的构件可以极大地提高迁移的性能和总运行时间。
配置迁移流程
迁移过程可以通过以下方式配置系统属性,或使用启动SHA256迁移任务和停止SHA256迁移任务REST API端点
默认情况下,迁移将在主节点上运行,但是,使用forceRunOnNodeId
属性,则可以将其配置为在辅助节点上运行。
属性名 |
函数 |
|
[默认值:false] 如果为true,则在节点重新启动时将调用迁移数据库以包含所有工件的SHA-256校验和的进程。 |
|
[默认值:null]
仅对HA安装有效。
默认情况下,迁移过程在主节点上运行。要在任何其他节点上运行该进程,请将此值设置为相应节点的ID(在node.id属性美元ARTIFACTORY_HOME / etc / ha-node.properties文件)。 在专用节点上运行迁移 这使您可以选择指定一个特定的节点来运行迁移,并分配额外的资源,使其能够更快地完成迁移过程。2022世界杯阿根廷预选赛赛程 在主节点和相应的辅助节点上设置该属性 要在辅助节点上运行迁移过程,需要执行以下操作在主节点和相应的辅助节点上设置此属性。Artifactory仍然只在相应的辅助节点上运行进程。 |
artifactory.migration.job.dbQueryLimit |
[默认值:100] 指定每次迁移作业查询数据库中缺少SHA-256值的条目时应该检索的行数。 |
|
[默认值:10] 使用新的SHA-256值分批并发地更新工件,然后启动一个睡眠周期。这个性质是指定每个批处理中工件的数量。 |
|
[默认值:2]
指定应该执行实际工件更新的并发线程的数量。 为了计算其SHA-256校验和,每个并发工件更新可能会导致下载。但是,工件只会被下载一次,这是在第一次为它找到没有SHA-256值的数据库条目时。同一工件的后续数据库条目(因此具有相同的SHA1值)将重用已经计算过的SHA-256值。 |
|
(默认值:5000毫秒]
指定在每批更新之后启动的睡眠周期的持续时间。 |
下面是一个可以粘贴到artifacts .system.properties中的示例代码片段,根据I/O和CPU利用率适当调整worker的数量:
##SHA2迁移块artifactory.sha2.migration.job。启用= true artifactory.sha2.migration.job.queue.workers = 5
重新启动要求
要使对迁移配置的更改生效,需要重新启动将运行迁移配置的实例(在HA安装的情况下是节点)。设置上面指定的默认值是为了在迁移过程中保持系统的最佳性能。为了加快迁移过程,您可以调整这些值(牢记硬件限制),但是这可能以牺牲系统性能为代价。
监控迁移过程
根据存储的大小和已配置的迁移参数,迁移过程可能需要很长时间。为了方便监控过程,状态和错误信息被打印到专用日志文件中。ARTIFACTORY_HOME /日志/ sha256_migration.log。
此外,一些消息(进程初始化、启动错误)也被记录在ARTIFACTORY_HOME /日志/ artifactory.log
文件。
SHA256后迁移
虽然不是强制性的,但建议在迁移完成后删除所有与SHA256相关的系统属性并重新启动。