搜索

第 9 章 命名空间自动运行架构

download PDF

对于命名空间 auto-pruning 功能,创建数据库模式中的两个不同的数据库表:一个用于 namespaceautoprunepolicy,另一个用于 autoprunetaskstatus。自动修剪 worker 会执行配置策略。

命名空间自动修剪策略数据库表

namespaceautoprunepolicy 数据库表包含单个命名空间的策略配置。每个命名空间只有一个条目,但每个 namespace_id 支持多个行。policy 字段包含策略详情,如 {method: "creation_date", olderThan: "2w"}{method: "number_of_tags", numTags: 100}

表 9.1. namespaceautoprunepolicy 数据库表
字段类型属性描述

uuid

character varying (225)

unique, indexed

此策略的唯一标识符

namespace_id

整数

外键

策略属于的命名空间

policy

text

JSON

策略配置

自动修剪任务状态数据库表

autoprunetaskstatus 表注册由自动修剪 worker 执行的任务。任务在单个命名空间上下文中执行。每个命名空间只有一个任务。

表 9.2. autoprunetaskstatus 数据库表
字段类型属性描述

namespace_id

整数

外键

此任务所属的命名空间

last_ran_ms

大整数(bigint)

nullable, indexed

worker 为此命名空间执行策略最后一次的时间

status

text

nullable

最后一次执行任务的详情

9.1. 自动修剪 worker

以下小节详细介绍了自动修剪 worker 的信息。

9.1.1. Auto-prune-task-creation

namespaceautoprunepolicy 数据库表中创建新策略时,也会在 autoprunetask 表中创建一个行。这在同一事务中完成。auto-prune worker 使用 autoprunetask 表中的条目来识别它应该执行策略的命名空间。

9.1.2. 自动修剪 worker 执行

auto-pruning worker 是一个执行配置策略的异步作业。其工作流基于 autoprunetask 表中的值。当任务启动时,会出现以下情况:

  • 自动修剪 worker 以集合间隔启动,默认值为 30 秒。
  • auto-prune worker 从 autoprunetask 中选择一个行,其中至少为 null,last_ran_msFOR UPDATE SKIP LOCKED

    • null last_ran_ms 表示任务从未运行。
    • 尚未运行任务的时间最长,或者尚未完全运行,则优先选择。
  • auto-prune worker 从 namespaceautoprunepolicy 表中获取策略配置。

    • 如果没有策略配置,则会为这个命名空间删除 autoprunetask 的条目,这个过程会立即停止。
  • 自动修剪 worker 开始机构下所有存储库的分页循环。

    • 自动修剪工作程序根据 policy.method 确定要使用的大量修剪方法。
  • auto-prune worker 使用前面检索到的策略配置来执行修剪方法。

    • 使用标签数量进行修剪: auto-pruner worker 获取当前按创建日期排序的活动标签数量,并将旧的标签删除到配置的数量。
    • 要按日期进行修剪: auto-pruner worker 获取超过指定时间范围的活跃标签,返回的任何标签都会被删除。
  • auto-prune worker 添加已删除标签的审计日志。
  • 选择 autoprunetask 行后,last_ran_ms 会被更新。
  • 自动修剪 worker 结束。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.