并行清理镜像

https://blueprints.launchpad.net/glance/+spec/scrub-images-in-parallel

此变更提案引入了一种方法,当启用延迟删除时,清理器可以并行清理镜像。

问题描述

目前,当启用延迟删除时,镜像正在串行清理,而镜像位置(如果多个)正在并行清理。对于一般情况,这可能不会带来太多的性能提升,因为镜像的数量可能大于每个镜像的镜像位置数量。因此,当待删除镜像的数量增加时,清理器可能会落后。

提议的变更

此变更将尝试并行化镜像清理,同时保持镜像位置的串行清理。

将引入一个新的配置选项,以提供在串行或并行清理之间进行选择的灵活性。此外,使用此配置选项,可以调节并行度的级别。

备选方案

  • 可以运行多个清理器以跟上待删除镜像数量的增加。但是,在这种情况下,清理器可能会竞争,因为它们都从注册表中获取相同的镜像集合。如果可以忽略日志中的所有错误,这可能不是一个坏的选择。然而,串行清理镜像仍然效率低下。

数据模型影响

REST API 影响

安全影响

如性能影响部分所述,在设置并行度时,应考虑后端存储强制执行的任何速率限制。如果并行度设置为超出速率限制,攻击者可以通过在短时间内创建和删除多个镜像来强制清理器达到速率限制。

通知影响

其他最终用户影响

性能影响

在使用并行清理时,必须考虑后端存储上的任何速率限制。根据所需的并行程度,清理器可能会达到后端存储的速率限制,并最终减慢速度或失败。

其他部署者影响

部署者需要设置此变更提案引入的新配置选项,才能并行清理镜像。

开发人员影响

实现

负责人

主要负责人

hemanth-makkapati

其他贡献者

jesse-j-cook

评审人员

核心评审人

nikhil-komawar

其他审核员

flaper87 brian-rosmaita

工作项

  • 使用 eventlet 并行化镜像清理

  • 为 eventlet 打补丁所需的模块

  • 在 devstack 上进行测试

依赖项

测试

文档影响

新的配置选项需要文档说明。

参考资料