使用最新版本?
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端点。
- 它们包括在下载文件夹
- 显示在一般信息Artifact Repository Browser的选项卡
- 可以在各种REST API端点中使用搜索
在升级到5.5版本(或更高版本)之后,Artifactory将完全能够利用工件的SHA-256校验和来实现上述任何特性。
充分利用Artifactory对SHA256的原生支持
上传的新工件将自动计算其SHA-256校验和,但是,在升级之前已经托管在Artifactory中的工件将不会在数据库中有其SHA-256校验和。
为了充分利用Artifactory的SHA-256功能,您需要运行一个进程迁移Artifactory的数据库确保每个工件的记录都包含其SHA-256校验和。
将数据库迁移到包含SHA-256
迁移数据库可能是一项资源密集型操作
根据数据库的大小,这个过程可能是资源密集型的。为减轻系统上可能的负载,可以使用下面列出的几个系统属性或REST api.我们强烈建议通读整个流程迁移过程,以确保您的系统具有最佳配置。
迁移是通过在Artifactory的属性集artifactory.system.properties
文件如下面所述,或使用启动SHA256迁移任务而且停止SHA256迁移任务REST API端点,本质上做以下工作:
- 搜索所有没有SHA-256值的数据库记录。
- 对于每个这样的记录,在数据库中找到具有相同SHA1校验和值的所有其他记录
- 如果它们中的任何一个已经计算了SHA-256,那么使用它来更新所有其他的
- 如果它们中没有一个已经计算过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毫秒]
指定在每批更新之后启动的睡眠周期的持续时间。 |
下面是一个你可以粘贴到你的artifact .system.properties的示例代码片段,根据I/O和CPU利用率适当调整worker的数量:
##SHA2迁移块。启用= true artifactory.sha2.migration.job.queue.workers = 5
重新启动要求
要使对迁移配置的更改生效,您需要重新启动将运行它的实例(在HA安装的情况下是节点)。设置上面指定的默认值是为了在迁移过程中保持系统的最佳性能。为了加快迁移过程,您可以调整这些值(记住硬件限制),但是这可能会以系统性能为代价。
监控迁移过程
根据存储的大小和已配置的迁移参数,迁移过程可能需要很长时间。为了便于监控进程,状态和错误消息被打印到一个专用的日志文件中,ARTIFACTORY_HOME /日志/ sha256_migration.log。
此外,一些消息(进程启动、启动错误)也被记录在ARTIFACTORY_HOME /日志/ artifactory.log
文件。
SHA256后迁移
虽然这不是强制性的,但建议在迁移完成后删除所有与SHA256相关的系统属性并重新启动。