有问题吗?想要报告问题?联系JFrog技术支持

跳到元数据的末尾
转到元数据的开始

概述

从4.6版开始,Artifactory提供了一个Sharding Binary Provider,可以让你在一个Sharding文件存储库中管理二进制文件。分片文件存储是在多个物理挂载(M)上实现的存储,它存储具有冗余(R)的二进制对象,其中R <= M。

例如,下图表示一个M=3, R=2的分片文件存储。换句话说,文件存储库由3个物理挂载组成,它们将每个二进制文件存储在两个副本中。

Artifactory的分片二进制提供程序提供了几个好处:

无与伦比的稳定性和可靠性

由于二进制文件的冗余存储,只要M >= R,系统就可以承受任何挂载故障。

无限的可扩展性

如果底层可用存储接近耗尽,您只需要添加另一个挂载;这个过程需要不停机文件存储的。一旦挂载启动并运行,系统就会根据您控制的配置参数重新生成文件存储库冗余。

文件存储性能优化

Sharding Binary Provider提供了几个配置参数,允许您根据特定系统的需求优化从文件存储读取或写入二进制文件的方式。

需要企业许可证

Sharded文件存储可用于使用企业许可证激活的Artifactory安装。

页面内容


配置分片二进制提供程序

分片二进制提供程序是一个二进制提供程序,如配置文件存储基本分片配置用于为Artifactory Pro的实例配置分片二进制提供程序。

Sharding基本配置

以下参数可用于基本分片配置:

readBehavior

该参数规定了从组成分片文件存储的挂载中读取二进制文件的策略。

可能的值有:

设置轮流捡取(默认):使用轮询策略从每个挂载读取二进制文件。

writeBehavior

该参数规定了将二进制文件写入组成分片文件存储的挂载的策略。可能的值有:

设置轮流捡取(默认):使用轮询策略将二进制文件写入每个挂载。

空闲空间:将二进制文件写入具有最大可用自由空间绝对容量的挂载。

percentageFreeSpace:二进制文件写入挂载时使用可用的空闲空间百分比。

冗余
默认值:r = 1

应该在文件存储库中为每个二进制文件存储的副本数量。注意,冗余必须小于或等于系统中的挂载数量,Artifactory才能使用此配置。

concurrentStreamWaitTimeout

默认值:30,000毫秒

为了支持指定的冗余,在缓冲区中累积写流,并使用“r”线程(根据指定的冗余)对正在写入的二进制文件的每个冗余副本进行写入。只有当所有冗余线程完成了它们的写操作后,二进制文件才能被认为是已写的。由于所有线程都在争夺写流缓冲区,因此每个线程将在不同的时间完成写操作。该参数指定任何线程等待所有其他线程完成写操作所需的时间(毫秒)。

如果写操作失败,可以尝试增加该参数的值。

concurrentStreamBufferKb

默认值:32 Kb
在复制写入二进制文件的“r”个冗余副本之前,用于累积写流的写缓冲区的大小。

如果写操作失败,可以尝试增加该参数的值。

maxBalancingRunTime

默认值:3,600,000毫秒(1小时)
一旦恢复了失败的挂载,此参数指定每个平衡会话在失效之前可以运行多长时间,直到下一次垃圾收集完成。更多关于平衡的细节,请参考使用平衡恢复挂载失败

为了在挂载失败后更快地将系统恢复到完全冗余,可以增加此参数的值。如果您发现这会导致整体系统性能的不可接受的下降,您可以考虑降低此参数的值,但这意味着Artifactory恢复完全冗余所花费的总时间将更长。
freeSpaceSampleInterval

默认值:3,600,000毫秒(1小时)

为了实现它的写行为,Artifactory需要定期查询碎片文件存储中的挂载,以检查是否有空闲空间。由于此检查可能是资源密集型操作,因此可以使用此参数来控制空闲空间检查之间的时间间隔。

如果您预计会有一段时间需要密集地上传大量二进制文件,那么您可以考虑降低这个参数的值,以减少系统中挂载之间的短暂不平衡。
minSpareUploaderExecutor

默认值:2

Artifactory维护一个线程池,用于执行对每个冗余存储单元的写操作。根据写活动的强度,最终,一些线程可能会变得空闲,然后成为被终止的候选线程。然而,Artifactory确实需要在写活动再次开始时维护一些线程。该参数指定应该保持活动以提供冗余存储单元的最小线程数。

uploaderCleanupIdleTime

默认值:120,000 ms(2分钟)

线程在成为被杀死的候选对象之前可能保持空闲的最大时间。

示例1

下面的代码片段是以下设置的示例配置:

  • 一个缓存的分片二进制提供程序,具有3个挂载和2个冗余
  • 每个挂载“X”都写入一个名为/的目录filestoreX。
  • 提供程序的读取策略为设置轮流捡取
  • 提供程序的写入策略为percentageFreeSpace
            //指定分片二进制provider的读写策略和冗余度 roundRobin percentageFreeSpace 2  //对于每个子provider(挂载),指定文件存储位置 filestore1   filestore2   filestore3  
示例2

下面的代码片段显示了“double-shards”模板,它可以用于二进制存储配置。

   shard-fs-1  shard-fs-2  

双碎片模板使用一个缓存提供程序,有两个挂载和冗余1,即每个工件只存储一个副本。

        

要修改模板的参数,可以修改模板定义中元素的值。例如,要将配置的冗余度增加到2,只需要修改> <冗余标记,如下所示。

        


使用平衡恢复挂载失败

在挂载失败的情况下,系统中的实际冗余将相应减少。与此同时,二进制文件将继续写入剩余的活动挂载。一旦故障挂载被恢复,系统需要重新平衡写入剩余活动挂载的二进制文件,以完全恢复(即平衡)系统中配置的冗余。根据失败挂载处于非活动状态的时间长短,这可能涉及大量二进制文件,现在需要将它们写入恢复的挂载,这可能需要花费大量时间。由于恢复完全冗余是一项资源密集型操作,因此平衡操作在一系列不同的会话中运行,直到完成。类之后会自动调用它们垃圾收集系统中存在运行的进程。


恢复非平衡冗余存储单元的均衡

在导致系统冗余不平衡的自愿操作的情况下,例如在执行文件存储迁移时,您可以使用优化系统存储REST API端点。应用此端点会引发Artifactory在下一次垃圾收集之后运行再平衡的标志。注意,为了加快再平衡,您可以从Artifactory UI手动调用垃圾收集。


优化系统存储

Artifactory REST API提供了一个端点,允许您提出一个标志,指示Artifactory应该在下一次垃圾收集之后调用分片文件存储的冗余存储单元之间的平衡。详情请参阅优化系统存储


  • 没有标签