跳到元数据的末尾
进入元数据的开始

概述

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

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

Artifactory的分片二进制提供程序有以下几个优点:

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

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

无限的可扩展性

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

对于一个独立的Artifactory设置
需要重新启动才能将更改应用到您的binarystore.xml设置。

对于高可用性设置
分别重新启动每个集群以将更改应用到您的binarystore.xml设置将不会导致停机。

文件存储性能优化

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

需要企业执照

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

页面内容



配置分片二进制提供程序

分片二进制提供程序是中所描述的二进制提供程序配置文件存储基本分片配置用于为Artifactory Pro的实例配置分片二进制提供程序。

Sharding基本配置

sharding基本配置有以下参数:


lenientLimit

默认值:1(从版本5.4开始。注意,对于配置了自定义链且不使用内置模板的文件存储,的默认值为lenientLimit参数为0,与以前的版本保持一致。)

最低成功写这个的数量必须维护什么才能成功上传.下一个平衡周期(由GC机制触发)将最终将二进制文件传输到足够多的节点,以保留冗余承诺。
换句话说,当冗余承诺暂时没有被履行时,宽大性规定了允许的最小冗余。

例如,如果lenientLimit设置为3,我的设置包括4个文件存储,其中一个被关闭,写入将继续。如果第二个文件存储发生故障,写入将停止。

当前活动节点的数量必须总是大于或等于配置的lenientLimit。如果设置为0,则必须保留冗余值。

readBehavior

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

可能取值为:

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

writeBehavior

此参数指定将二进制文件写入组成分片文件存储的挂载的策略。可能取值为:

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

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

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

冗余
默认值:r = 1

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

concurrentStreamWaitTimeout

默认值:30,000 ms

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

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

concurrentStreamBufferKb

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

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

maxBalancingRunTime

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

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

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

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

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

默认值:2

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

uploaderCleanupIdleTime

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

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

示例1

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

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

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

   分片-fs-1   分片-fs-2  

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

   1     

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

   2     

跨分区分片配置

在HA Artifactory集群中跨多个区域进行分片,允许您创建分片数据的区域或区域,以便在某个区域不可用时提供额外的冗余。您可以确定在两个区域之间写入数据的顺序,也可以设置在向相邻区域中的挂载写入数据时建立空闲空间的方法。

中的跨分区分片配置可使用以下参数binarystore.xml文件

readBehavior

此参数指定从构成跨区域分片文件存储的挂载中读取二进制文件的策略。
可能取值为:

区:根据分区设置从每个挂载中读取二进制文件。

writeBehavior

该参数指定了将二进制文件写入跨区域分片挂载的策略:

可能取值为:

zonePercentageFreeSpace:二进制文件被写入可用空闲空间百分比最高的相关区域的挂载。

zoneFreeSpace:B二进制数被写入可用空闲空间绝对容量最大的区域中的挂载。


添加到ha-node。属性文件

中的跨分区分片配置可使用以下参数ha-node.properties文件

node.id

此服务器的唯一描述性名称。

独特性

确保每个节点都有一个在整个网络中惟一的id。

cross.zone.order
此参数设置数据写入挂载的区域顺序。在下面的例子中,

“cross.zone.order = " us-east1us-east2”,分片将写入US-EAST-1区,然后写入US-EAST-2区。


可以使用ha-node向现有分片集群动态添加节点。属性文件。要做到这一点,您需要您的集群已经配置了分片,并通过添加' cross.zone.order=us-east-1us-east-2财产,新节点将能够写入现有的集群节点,而无需更改binarstore .xml文件。

例子:

本例展示了一个跨区域分片场景,其中Artifactory集群配置了2个冗余,包括以下步骤:

  1. 开发人员首先将包部署到最近的Artifactory节点。
  2. 然后,包自动部署到“US-EAST-1”区域,部署到“S1”碎片中空闲空间百分比最高的碎片(空闲空间为51%)。
  3. 该包使用与“S3”碎片相同的方法进行部署,该碎片在“US-EAST-2”区域中也具有最高百分比的空闲空间。

    下面的代码片段是跨区域设置的示例配置:

    • 1人工集群横跨2个区域:“us-east-1”和“us-east-2”。
    • 4个HA节点,每个分区2个。
    • 4个坐骑(碎片),每个区域2个坐骑。
    • 提供程序的写策略为zonePercentageFreeSpace

    例如:ha-node.properties中的跨分区分片配置

    node.id=west-node-1 cross.zone.order=”us-east-1,us-east-2”

    例如:binarstore .xml文件中的跨分区分片配置

             2 zone zonePercentageFreeSpace  mount1 us-east-1   mount2 us-east-1   mount3 us-east-2   mount4us-east-2  

使用平衡从挂载失败中恢复

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


恢复不平衡的冗余存储单元平衡

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


优化系统存储

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















  • 没有标签