Taskflow 集成¶
https://blueprints.launchpad.net/glance/+spec/taskflow-integration
添加一个新的任务执行器,使用 taskflow 库。
“TaskFlow 是一个用于 OpenStack(和其他项目)的 Python 库,旨在使任务执行变得简单、一致、可扩展和可靠。它允许创建轻量级的任务对象和/或函数,以声明方式组合成流程(又称:工作流)。”: Taskflow Wiki
问题描述¶
Glance 目前自带一个 eventlet 执行器,该执行器本质上不易扩展,并且不支持 taskflow 开箱即用支持的许多功能,例如在远程工作器上执行。
提议的变更¶
我们在此提出一个新的执行器(自包含),实现执行器 API 的接口。该执行器会将任务路由到 taskflow 的 eventlet 执行器。我们将使用 Taskflow Green Thread Pool Executor,确保在使用 taskflow 引擎时使用 eventlet green 线程。初始实现应提供与 Glance 中已有的 eventlet 执行器相同的结果。但是,后续蓝图将利用更高级的功能。
备选方案¶
使用现有的 eventlet 执行器。这种方法很可能会变成重写 taskflow。
数据模型影响¶
无。
REST API 影响¶
无。
安全影响¶
无。
通知影响¶
此规范没有依赖。但是,将来可以连接到 taskflow 通知引擎,并可能将其消息放到通知总线上。
其他最终用户影响¶
最终用户应该能够透明地使用所有执行器执行任务。
性能影响¶
对于任务的串行执行,eventlet 执行器和 taskflow 执行器的性能应该大致相同。但是,对于更复杂的工作流,我们应该能够通过并行化工作以及使用 taskflow 进行分布式处理来提高性能。
其他部署者影响¶
部署者需要更新 glance-api.conf 并将 ‘taskflow’ 指定为执行器。此外,还可以选择引擎模式 ‘serial’ 或 ‘parallel’ 以及最大工作器数量。远程工作器(此规范不支持)需要更多的基础设施。
开发人员影响¶
无。
实现¶
负责人¶
- 主要负责人
arnaud
- 其他贡献者
harlowja
评审人员¶
- 核心评审人
nikhil, zhiyan
- 其他审核员
harlowja
工作项¶
实现 taskflow 执行器并进行单元测试。
依赖项¶
无。
测试¶
可以在 DevStack 中添加特定的配置以利用这个新的执行器。最终,这应该是 gate 使用的执行器。
文档影响¶
最初,文档应该解释如何配置 glance-api.conf 以及什么是 taskflow。稍后,应该解释如何实现更复杂的场景。
参考资料¶
https://review.openstack.org/#/c/85211/14 (需要在规范批准后重新基于)
在巴黎 OpenStack Summit 上的讨论