Swift/ideas/task-execution
目标
将任务执行扩展到数据所在的位置(对象过期器、容器同步、自动分层、元数据索引等)。
任务注册
任务由 item-server 注册到特殊账户的容器中。对于每一对(item, partition),都有一个账户,因此每个 item-server 只请求其持有的数据对应的任务。容器名称依赖于功能
.tasks-objects-42 object-expirer-<timestamp> auto-tiering-<timestamp> metadata-indexation
任务执行
每个 item-server 获取其持有的 partition 的任务并执行它们
- account-server 从 .tasks-account-<part number> 获取任务
- container-server 从 .tasks-container-<part number> 获取任务
- object-server 从 .tasks-object-<part number> 获取任务
回填
对于在账户或容器级别启用的功能(例如:元数据索引),在功能激活时会执行一个回填任务。例如:对于元数据索引,它会创建一个容器任务,请求为 N 到 M 行创建元数据索引任务
.tasks-container-<container partition>
metadata-indexation
account/container/start_row-end_row
执行后,我们会得到一批任务
.tasks-object-<object partition>
metadata-indexation
account/container/object/timestamp
同样适用于容器同步。