调度思路

概念

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. Add-VMNetworkAdapterAcl(添加访问控制列表)

    Add-VMNetworkAdapterAclCreates an ACL to apply to the traffic through a virtual machine network adap ...

  2. Android实时监听网络状态(1)

    其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就可以实现网络的监听. 1.添加访问网络和获 ...

  3. 结构体数组(C++)

    1.定义结构体数组 和定义结构体变量类似,定义结构体数组时只需声明其为数组即可.如: struct Student{ int num; char name[20]; char sex[5]; int ...

  4. Edit显示行号

    Edit显示代码行号 关键点 使用这个类然后关联Edit的变量为 LineNumberEdit类型的 实现过程 //////////////////////////////////////////// ...

  5. struts2 struts.xml配置文件详解

    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quo ...

  6. oracle db mos文章 翻译系列

    http://blog.csdn.net/msdnchina/article/details/38377125

  7. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  8. [Form Builder]APP_ITEM_PROPERTY.SET_PROPERTY 用法

    ORACLE 推荐使用此种方法来控制ITEM属性,虽然实质也是调用set_item_instance_property和set_item_property ALTERABLE app_item_pro ...

  9. acmer -- 最美的情书

    2014-09-29 20:51:45 POJ 2482 Fleeting time does not blur my memory of you. Can it really be 4 years ...

  10. 安卓项目-利用Sqlite数据库,开发新闻发布系统

    本教程致力于程序员可以快速的学习安卓移动端手机开发. 适合于已经习得一种编程语言的同仁. 更多志同道合,想要学习更多编程技术的大神们. 小弟不才,麻烦关注一下我的今日头条号-做全栈攻城狮. 本文章是基 ...