JFrog Artifactory副本分布

JFrog Artifactory replica distribution

据我所知,Artifactory 为每个工件保留两个副本。

1. 在具有本地存储(无共享文件系统)的 N 个节点的集群中,Artifactory 如何在第一次将 artifact 部署到 Artifactory 时选择哪些节点将获得两个副本?
2. 当客户端请求工件 X 时,Artifactory 如何确定哪些节点托管给定的工件,以及它如何决定哪个节点将为该请求提供工件?
3. 工件与节点是否有亲和力?换句话说,如果 node1 和 node2 有工件 X 的两个副本,并且我手动将工件从 node1 移动到 node7,Artifactory 会尝试恢复此移动吗?如果有这个affinity,是不是存到DB里了?可以修改吗?我问的原因是在 N 个节点的集群中,所有 N 个节点上都存在一些工件哈希,所以我有 N 个副本。我想删除其中一些以减少磁盘 space 压力。

谢谢。如有必要,我可以提供更多详细信息。

AFAIK, Artifactory keeps two replicas of each artifact

这仅适用于您使用分片类型配置的情况。例如,double or redundant shards or a clustered filesystem。在任何一种情况下,副本的数量都是可配置的。

  1. In a cluster of N nodes with local storage (no shared filesystem), how does Artifactory pick which nodes will get the two replicas when artifact is first deployed to Artifactory?

收到请求的节点将获得一个副本,然后需要任何其他数量的节点来满足冗余要求。

对于分片,这可以使用 writeBehavior 进行配置(您可以在其中指定循环法、freePercentageSpace 或 freeSpace)

  1. When a client requests artifact X, how does Artifactory determine which nodes host given artifact and how does it decide which node will provide the artifact for this request?

  2. Is there artifact-to-node affinity? In other words, if node1 and node2 have two replicas of artifact X, and I manually move the artifact from node1 to node7, will Artifactory attempt to revert this move?

没有亲和力。

收到请求的节点将响应它。如果它没有二进制文件,它将从有二进制文件的节点流式传输,然后将其发送给用户。