Artifactory存储解决方案说明
为了以资源有效的方式存储工件,Artifactory执行基于校验和的存储。
工作原理
将文件部署到Artifactory时,其SHA-1校验和将作为第一个操作之一计算。然后使用校验和作为文件名将文件保存到服务器后端。
具体来说,文件被保存到Artifactory文件存储位置,使用一个目录结构,其中名称来自任何给定校验和的前两个字符。
例如,校验和为的文件ac3f5e56将存储在ac目录中,该文件的校验和为dfe12a4b将被存储为df等等。下面的例子显示了d4目录,其中包含两个校验和以d4开头的工件:
同时,Artifactory创建了一个数据库将文件的校验和映射到原始文件名及其在上传存储库中的路径的项。这种二进制存储方式优化了许多Artifactory操作,这些操作是通过简单的数据库事务实现的,而不是通过对文件的实际操作。由于校验和是每个二进制文件的唯一字符串,这种文件存储和管理方法可以防止文件重复和损坏。
垃圾收集
Artifactory使用基于校验和的存储来确保每个二进制文件都是唯一的存储一次.部署新文件时,Artifactory检查是否已经存在具有相同校验和的二进制文件,如果存在,则将存储库路径链接到该二进制文件。在删除对于存储库路径,Artifactory不会删除二进制文件,因为它可能被其他路径使用。然而,一旦所有指向二进制文件的路径都被删除,该文件实际上就不再被使用了。以确保系统不会变成堵塞对于未使用的二进制文件,Artifactory定期运行一个垃圾收集函数识别未使用的(即已删除的)二进制文件,并从文件存储中处理它们。默认情况下,这被设置为每四(4)小时运行一次,并由控件控制cron表达式。对于SaaS客户,默认情况下垃圾收集每12小时运行一次。
