网易有数海量任务调度和智能运维实践
https://mp.weixin.qq.com/s/LJIS7xeHsiTpf12os3DtNw
- 根据依赖关系,智能推算出每个具体实例的完成时间。
实现:任务运维中心最核心的一个逻辑就是:根据依赖关系,智能推算出每个具体实例的完成时间。在推算前,需要先将跨流依赖打平,打平的主要目的是为了方便后面的推算。打平的逻辑也比较简单,就是将工作流依赖节点打平为节点依赖节点。如图所示,下游任务1依赖上游任务的c节点,经过打平后变成了下游任务1的a、b节点依赖上游任务的c节点。在依赖完全打平后,我们可以将实例及其依赖关系看成一个很大的dag,这样每个节点的预计完成时间就能比较容易的推算了,具体公式为:当前节点预计完成时间 = 所有上游节点预计完成时间的最大值 + 预计运行时长。这里的预计完成时长可以通过近14天的实例运行时长取平均值计算出来。
拓展:
1)实例运行概况大盘。通过大盘可以宏观展示项目下所有任务的产出进度,它可以显示当前未完成任务数量,完成率,以及预计完成时间等信息。可以方便项目的管理者把控当前项目的产出进度。
2)关键路径的功能。引入了基线的概念,业务团队可以将一些比较核心的任务挂在到基线上,基线具备预警时间与破线时间,如果基线上的所有实例的最晚预计完成时间超过基线所设置的预警或破线时间,就会触发报警,将延迟信息告知到项目值班组的成员。借此可以使得业务团队可以提前感知预警信息,已达到提前解决的目的,最终将事故扼杀在摇篮中。
针对每个基线或者任务,我们还提供了关键路径的功能,通过关键路径可以找到影响该基线、任务产出的最长链路,从图中