干货:如何实现云上编排系统

本文探讨了云上编排系统的核心——工作流引擎,采用有向无环图(DAG)模型来控制流程执行顺序。介绍了如何通过DAG进行拓扑排序,确保元素按依赖关系创建。重点阐述了编排系统的并行执行原则和元素间信息传递的独立性,以及插件化设计,支持用户自定义扩展。最后,提及了TOSCA模型在模板语法中的应用,强调自动化能力对于云生态的重要性。
摘要由CSDN通过智能技术生成

随着云计算的普及,在云上的自动化需求是必然的结果。那么作为一个优秀的云平台,如何去实现一个可靠且便捷的编排系统呢?本文就跟大家分享并探讨我们这这方面的实践经验。
一个编排系统的核心就是一个工作流引擎,负责分析各个步骤间的依赖关系,并按照DAG(有向无环图)模型来控制这些流程的执行顺序。而云上的编排,更加的具化,就是按依赖顺序创建各个云服务。算法层面,我们可以称每个云服务为元素。创建各种云服务的过程,就是按顺序创建各个元素的过程。
有向无环图DAG
有向无环图(Directed Acyclic Graph, DAG), 是有向图的一种,字面意思的理解就是图中没有环。常常被用来表示事件之间的依赖关系,用于管理任务之间的调度。
一个有向无环图的例子
其中所有节点的拓扑排序是有向无环图中经常需要使用到的算法,我们的系统原型也是按照此理论基础进行实现的。就是把所有元素按照DAG依赖关系确定好谁先谁后的顺序,具体算法大家可以在网上或者资料中搜索获得,这里就不详细介绍了。排好序后,接下里的实现就是先完成底层的元素,再完成上层元素,直到所有元素都初始化完毕。以上就是我们的编排系统模型的理论参照。
编排系统原型
在这里我们假设有一个系统的初始化流程如下:
要实现所有元素按照设定好的顺序创建,我们遵从两个要点:
•默认并行执行。
•无依赖的先执行。
具体算法实现上,我们首先将元素启动顺序分解为有向图,并遍历计算得到每个节点的依赖数。如下:
注:依赖只需要计算临近的节点就可以
遵循之前的两个原则:那么元素B和元素D的依赖数是0,所以这两个元素可以先执行初始化

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值