Artifactory HA环境中带定时执行的用户插件执行节点咨询
Artifactory HA集群中定时用户插件的执行机制
默认情况下,不带额外集群协调配置的定时用户插件,会在HA集群的所有节点上并发执行。每个节点都会独立加载插件并触发定时任务,Artifactory没有内置的分布式锁来阻止多节点同时执行。
如果要确保任务仅在单个节点上运行,需要手动实现集群协调逻辑:
- 借助Artifactory的分布式锁API:通过
context.distributedLock获取全局锁,只有成功拿到锁的节点才执行任务,其他节点直接跳过。 - 示例代码片段:
def lock = context.distributedLock.acquireLock("my-scheduled-task-lock", 10000) try { if (lock) { // 此处编写定时任务的核心逻辑 } } finally { if (lock) { context.distributedLock.releaseLock("my-scheduled-task-lock") } }
- 也可以通过判断节点角色(比如仅主节点执行),但这种方式可靠性较低,因为集群主节点可能发生切换。
另外,Artifactory 7.x及以上版本中,官方更推荐使用内置任务调度框架替代传统定时插件,它原生支持HA集群下的单节点执行,无需手动处理锁机制。
内容的提问来源于stack exchange,提问作者Glenn Lane
相关产品推荐
相关产品推荐

