调度思路

概念

Build 一次完整的构建 整个流水线

Task(BuidStep) 流水线中的某一个步骤单元

先假设对于一个Build(流水线)而言里面所有Task是串行执行的

并且各Task之间不需要文件共享

前端:

  1. 创建一个Build及Build里的所有Task 先持久化,然后将Build的ID发送给调度服务。

调度:

2.调度服务:

收到一个Buildid,取出Build信息
查看有没有空闲的机器
有空闲的机器
查看是否有需要执行的Build(先检查传入的Build,如果传入的Build并不需要执行了,则再看有没有其他要执行的Build,此处容易产生竞争):
有要执行的Build:
有要执行的Task:
调用BuildService(发送taskId)执行对应的任务,在Task上记录执行者的id.
没有要执行的任务:
更新Build的状态,回到检查是否有要执行的Build
没有要执行的Build:
什么也不做
没有空闲的机器:
则什么也不做 收到一个taskId,通过taskId取出Build信息,执行与收到Build相同的逻辑。

构建服务:

收到一个taskId

将这个task标记为正在执行的状态,如果发现这个task已经被别人执行,则什么也不用做.

执行这个任务  将自己标记为忙的状态
任务执行完毕后异步更新任务的状态,并且通知调度服务该taskid执行完毕. 将自己标记为空闲的状态.

问题:

中间出现异常时,可能导致后续的任务也没有执行,或过了很久才被别的条件给触发。

可能需要更多的规则.

如何实现异步持久化数据:

将sheduleBuild的FutureTask保存到容器对象中,使用定时器检查该对象的状态。如果对象为isDone则持久化相关的数据.

DiscoveryManager.getInstance().discoveryClient.instanceInfo.getInstanceId()

调度思路+EurekaServer获得当前机器的instanceid的更多相关文章

  1. rt-thread的位图调度算法分析

    转自:http://blog.csdn.net/prife/article/details/7077120 序言 期待读者 本文期待读者有C语言编程基础,后文中要分析代码,对其中的一些C语言中的简单语 ...

  2. 【转】rt-thread的位图调度算法分析

    序言 期待读者 本文期待读者有C语言编程基础,后文中要分析代码,对其中的一些C语言中的简单语句不会介绍,但是并不要求读者有过多的C基础,比如指针和链表等不会要求太多,后面在分析代码时,会附带地介绍相关 ...

  3. Skynet服务器框架(八) 任务和消息调度机制

    引言: 在我看来,消息和任务调度应该是skynet的核心,整个skynet框架的核心其实就是一个消息管理系统.在skynet中可以把每个功能都当做一个服务,整个skynet工程在执行过程中会创建很多个 ...

  4. 调度器&负载均衡调度算法整理

    一.Linux 调度器   Linux中进程调度器已经经过很多次改进了,目前核心调度器是在CFS(Completely Fair Scheduler),从2.6.23开始被作为默认调度器.用作者Ing ...

  5. RT-Thread的位图调度算法分析(最新版)

    RT-Thread的内核调度算法 rt-thread的调度算法为基于优先级调度和基于时间片轮转调度共存的策略.rt-thread内核中存在多个线程优先级,并且支持多个线程具有同样的线程优先级.线程级别 ...

  6. [转帖]单集群10万节点 走进腾讯云分布式调度系统VStation

    单集群10万节点 走进腾讯云分布式调度系统VStation https://www.sohu.com/a/227223696_355140 2018-04-04 08:18 云计算并非无中生有的概念, ...

  7. linux 进程优先级 调度 nice pri

    转:http://www.linuxidc.com/Linux/2016-05/131244.htm 深入 Linux 的进程优先级 [日期:2016-05-11] 来源:liwei.life  作者 ...

  8. 机器突然宕机导致hdfs启动一直超时的行为

    今天手里其中一个集群几个机器突然宕机,启动hdfs一直超时. clouder-scm-agent主要报了这个错RROR: Unexpected error 'getpwuid(): uid not f ...

  9. TKE 用户故事 | 作业帮 Kubernetes 原生调度器优化实践

    作者 吕亚霖,2019年加入作业帮,作业帮架构研发负责人,在作业帮期间主导了云原生架构演进.推动实施容器化改造.服务治理.GO微服务框架.DevOps的落地实践. 简介 调度系统的本质是为计算服务/任 ...

随机推荐

  1. mysql 5.7新数据库sys解析(一)

    mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息 这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助   这个库在mysql5.7中是默认存在 ...

  2. 【16】成对使用new和delete时要采取相同形式

    简而言之,new时不带[],delete时也不带[]:new时带[],delete时也要带[].如果不匹配,要么造成多销毁对象,导致未定义行为:要么导致少销毁对象,导致内存泄漏.

  3. 秋叶PPT-三分钟教程

    http://yuedu.baidu.com/ebook/0596e5f858f5f61fb73666be <说服力-让你的PPT会说话>原创PPT分享 http://www.docin. ...

  4. [Webpack 2] Ensure all source files are included in test coverage reports with Webpack

    If you’re only instrumenting the files in your project that are under test then your code coverage r ...

  5. [Whole Web, Node.js, PM2] Configuring PM2 for Node applications

    In this lesson, you will learn how to configure node apps using pm2 and a json config file. Let's sa ...

  6. qt 共享内存(QSharedMemory)

    ——————————————————写入部分—————————————————— (本次程序基于控制台程序) 首先 使用共享内存得召唤一下: #include <QSharedMemory> ...

  7. Android主题换肤 无缝切换

    2016年7月6日 更新:主题换肤库子项目地址:ThemeSkinning,让app集成换肤更加容易.欢迎star以及使用,提供改进意见. 更新日志: v1.3.0:增加一键切换切换字体(初版)v1. ...

  8. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)

    在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些 ...

  9. PHP第四章数组2

    $str =array("dd"=>"d","dc"=>"ds","dd"=>&q ...

  10. [翻译]Python with 语句

    With语句是什么? Python's with statement provides a very convenient way of dealing with the situation wher ...