openstack taskflow

Taskflow是OpenStack中的一个Python库, 它主要是可以使task的执行变得更加容易、一致和可靠,这对于openstack中各种长流程任务来说应该十分有好处,当前已经使用在cinder中,下一步是neutron。

它 执行flows,可以停止、重新开始和以安全的方式恢复flows。它与RDBMS动作保护有点类似。当一个flow被中断时,动作可以恢复,甚至可以自动回滚。

概念上的例子

下面的伪代码说明一个flow是如何以类似SQL 事务的方式工作的。

START TRANSACTION
   task1: call nova API to launch a server || ROLLBACK
   task2: when task1 finished, call cinder API to attach block storage to the server || ROLLBACK
   ...perform other tasks...
COMMIT
上的例子可以用于Heat 编排的一部分,添加一个挂载了卷的实例。这个编排可以并行的生成大量的类似的实例。

Why

OpenStack 的代码正在有组织的增长,但是如果进程被意外中断,却没有一个可以安全恢复或回滚代码的标准;大多数项目并没有使task可以重启或恢复,简单的挑高或恢复的场景在今天的代码里已几乎不可能。
Goal:通过Taskflow的推广,使OpenStack变的可信和可靠,甚至在没有HA的情况下。
 

Further use-cases

Orphaned resources(僵尸资源)
由于现在OpenStack的项目缺乏事务语义,所以会留下一些资源成为孤儿状态,或ERROR的状态,在自动化系统(Heat)
情况下,这种状况是非常不能令人接收的,因为非常难分析哪些是要被清除的孤儿资源。Taskflow提供其以任务为导向的模型
将能正确地追踪资源的变动,这就容许在一些资源上的动作可以自动地被撤销,以确定没有资源被称为“僵尸”。

Metrics and history(度量和历史)
当OpenStack服务被组织进task 和 flow 的对象和模式时,他们获得自动地能力,可以简单的增加度量报告和历史操作,这些
服务用taskflow可以记录这些度量/历史,并与task 和 flow的运行进行关联。在多种OpenStack服务中,有多种方法

Design


架构

Tasks



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将JSON转换为DAG(有向无环图),您可以按照以下步骤进行操作: 1. 首先,解析JSON数据并将其换为Python对象。您可以使用`json`模块中的`loads`函数来完成此操作,例如: ```python import json json_data = '{"A": ["B", "C"], "B": ["D"], "C": ["E"], "D": [], "E": ["F"], "F": []}' data = json.loads(json_data) ``` 2. 创建一个空的DAG数据结构,可以使用字典来表示节点和其对应的子节点。例如: ```python dag = {} ``` 3. 使用迭代的方法遍历JSON数据中的每个节点,并将其添加到DAG中。对于每个节点,将其子节点添加到DAG的对应列表中。例如: ```python for node, children in data.items(): dag[node] = children ``` 4. 确认DAG是否是有向无环图。可以使用拓扑排序算法来检查是否存在环路。如果存在环路,则说明JSON数据不是一个有效的DAG。以下是一个示例的拓扑排序算法实现: ```python def topological_sort(dag): visited = set() stack = [] def dfs(node): visited.add(node) if node in dag: for child in dag[node]: if child not in visited: dfs(child) stack.append(node) for node in dag: if node not in visited: dfs(node) return stack[::-1] sorted_nodes = topological_sort(dag) ``` 5. 如果排序后的节点列表与原始JSON数据中的节点列表相同,则表示转换成功,DAG是有效的。否则,可能存在循环依赖或其他错误。 请注意,这只是一个简单的示例,实际情况可能更复杂。您可能需要根据JSON数据的结构和要求进行适当的调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值