精华内容
下载资源
问答
  • JobKeeper分布式调度引擎,分布式并行调度,动态兼容-@云创存储 JobKeeper分布式调度引擎,分布式并行调度,动态兼容-@云创存储 posted on...
    展开全文
  • 什么是分布式调度引擎? 大家在公司做项目的时候都应该有过这种task类型的工程吧? 下面我们通过一个简单的场景来了解下分布式调度引擎的!我们来看课件图一。 简单介绍下这个场景啊。场景的需求是这样的。每天...

    什么是分布式调度引擎?

    大家在公司做项目的时候都应该有过这种task类型的工程吧?

    下面我们通过一个简单的场景来了解下分布式调度引擎的!我们来看课件图一。

    简单介绍下这个场景啊。场景的需求是这样的。每天晚上凌晨12点到凌晨3点备份a表的数据都b表去!

    解决当前场景的方案有很多啊!我们先来看一个最简单,最原始的方案。叫

    单线程模式,就是写一个while true。不停的去比配两张表的数据,没有数据就让线程sleep一会,一select到数据就开始insert备份,这种模式只有一个线程在运行整个任务!并且只有一台主机!处理的比较慢。效率很低!

    为了更高效的处理task任务。于是推出了第二种方案,

    就是下面的多线程简单模式

    这种模式下有三个线程同时在跑这个任务。thread1线程不停的在数据库里查找要更新的数据。找到了就将数据放入队列queueA中。这个queueA是一个队列。thread2和thread3不停的在队列中取数据。将数据insert要备份的表中去!这是典型的队列的生产消费模式!3个线程同时运转这样就大大的加快了我们任务处理的效率了。这种模式下是多线程。单主机去处理。也是有缺陷的!比如说服务器A挂了!整个任务处理就停止了。存在着单点风险!还有一点就是。比如说A服务器创建线程的最高上限是3个!打个比方啊。如果我们需要6个线程来同时处理当前任务!那这个多线程简单模式就解决不了我们的问题了,于是就有了第三种方案。看下面的图

    分布式多线程多主机复杂模式

    这种模式下就是在多线程模式下扩展了服务器!图中的单主机变成了两台!主机扩展了。我们的线程数量是不是也随之可以增加了!处理任务的效率就更加的快了!但也会给我们带来新的问题!一个任务交给两台机器去执行!会出现重复数据!对不对!所以图中将我们的任务做了拆分。分成了两个小任务。每台机器执行一个小任务。这样就不会产生重复数据了,每个主机呢还是按照多线程简单模式来处理这些任务的!分别各自启动了4个线程配合队列的生产消费模式来处理小任务!

    回到我们之前的问题,什么是分布式调度引擎

    这个问题我们拆成两个问题来解释!1什么是分布式?2什么是调度引擎。

    什么是分布式?。这个分布式可以理解为将一个任务拆分,分给多台主机去处理!这个就叫分布式,那么调度引擎又是什么呢?图中多出了一个调度引擎!调度引擎在这个模式下是拿来干什么的?我们来分析下!它处理的工作我基本都写上去了!

     

     

    给机器器动态分配任务,实现⾃自动容错

    这个是什么意思呢?前面多线程简单模式我们有谈到过单点风险! 分布式多线程多主机复

    杂模式能解决这个单点的问题!它是怎么去解决的呢?比如说a挂了!B还在,这就叫解决单点问题了吗?。不是的。因为A的小任务没人处理了?对不对。所以说a挂了b还需要把a的任务给接过来。这样单点风险才算真正意义的解决!调度引擎其中的一个工作就是 会不停的检测每台主机的健康情况,给每台机器去动态的分配任务。比如说a挂了!它会检测到!它会把a的任务交给b去处理!这叫动态分配任务实现自动容错!不需要人工去干预。

    给机器器创建多线程执⾏小任务

    我们主机的多线程也是交给调度引擎去创建的.

    任务分片,其实就是任务的拆分!也是调度引擎去处理的。你只要告诉调度引擎拆分的规则就好了!

    因为我们这个模式下是多主机跑任务的!你的任务必须拆分!要不然多台机器跑一个任务会产生重复数据的

    给机器器分配调度器

    这个调度器是什么意思呢?调度器其实就是线程组!我们的多线程会分组!每个线程组称为一个调度器。一个线程组包含5个线程。

    每台机器创建多少个线程也是由我们的调度引擎去分配的。这是tbschedule的逻辑!好了。这就是我们的 分布式多线程多主机复杂模式。这种模式下会出现一个分布式调度引擎的角色用来解决我们分布式下作业的产生的各种问题!

    更多java底层源码知识分享    www.java52.com

     

    展开全文
  • 大家好,在讲tbschedule使用之前,我们先了解下tbschedule的调度原理,不然大家对tbschedule的配置会不太...还是我们前面讲过的分布式多线程多主机复杂模式。其实这是参照tbschedule的原理画出的一张模式图! 我们看...

    大家好,在讲tbschedule使用之前,我们先了解下tbschedule的调度原理,不然大家对tbschedule的配置会不太理解

    任务分片,调度器/线程组!我们前面对这些名词做一个大概的解释!

    今天针对这些名词我们来深入的讲解下tbschedule的调度原理。

    第一张图

    还是我们前面讲过的分布式多线程多主机复杂模式。其实这是参照tbschedule的原理画出的一张模式图!

    我们看课件的第二张图

    这张图是tbschedule的调度原理图!下面我们来讲下这张图!首先是我们最原始的大任务!将a表数据备份到b表去!总数据量是100万条!tbschedule会把copyTask这个任务做拆分。具体拆分出多少个小任务出来。这些在我们的管控台都是可配置的。图中是将大任务总共拆分出了10个小任务!每个小任务处理10w条数据。这样就分给多台机器执行就不会产生重复数据了。针对这个大任务!我们需要创建多少个线程来运行!这一点是在管控台去配置的!比如说我们需要创建25工作个线程来执行这10歌小任务!在tbschedule里面每5个线程被分为一组!这一组线程称为一个调度器!能明白这个意思吧!tbschedule里配置创建多少个线程来执行任务!它配置的单位是调度器!图中总共配了点5个调度器。那么tbschedule会创建25个线程来完成这些小任务!每个调度器被分到了2个小任务!调度器分配任务是由tbschedule来完成的。它有自己的一套算法!好了。线程最终是运行在服务器上的!对不对!图中我们有两台服务器!这两台服务器来分这5个调度器。这个分配也是由tbschedule完成实现的!机器1分到了3个调度器。机器2被分到了2个调度器!

    服务器多线程都已经创建好了!下一步是不是让这些多线程去运行程序了?

    我们处理任务的逻辑的代码都写在了DemoTask这个类里了!多线程需要去运行这个类的代码就等于在跑我们的任务了!

    来看我们的第三张图

    我们每个调度器,会去创建一个DemoTask类的对象,这里解释下我们DemoTask的代码!我们来看代码!DemoTask是包含在我们的test-tbschedule工程里面!核心的两个方法selectTasks,这个叫数据采集接口。意思就是查到我们要备份的数据,返回出去!tbschedule呢!会把返回的数据放到队列中去,每个调度器会有一个自己的队列!看图2。对不对!

    execute数据执行接口。tbschedule会从队列里取出数据传到这个方法的行参里,然后我们自己写代码逻辑,将数据insert到备份表中去

    每个调度器里包含5个线程。这5个线程是怎么去运行DemoTask对象的数据采集接口和数据执行接口的?看课件图

    数据采集接口。肯定不能多线程去采集!因为我们当前每个调度器执行的都是小任务,如果多线程去采集小任务的数据,采集到的数据会重复!对不对?所以呢只能允许一个线程去采集!采集到了放入缓存队列。最后全部线程,也就是5个线程从队列取。并发运行execute接口!这就是调度器的运行原理。调度器是怎么去采集到自己小任务的数据的?是通过selectTasks方法的形参queryCondition来获取的。任务怎么分的说到底还是通过参数来分的。比如我们当前的备份场景。1000w条数据!分片通过条件查询来分!每个小任务的查询条件不一样!这个条件会被传到queryCondition里来,它是一个list.因为我们一个调度器会处理多个小任务。看图2,现在一个调度器就是处理两个小任务。所以这里是一个list类型。如有任何问题请加qq群:751124494

    这就是我们tbschedule的调度原理!下章节我们开始实战配置

    淘宝分布式调度引擎tbschedule源码解析www.java52.com

    展开全文
  • BEH-EXECUTE是一个分布式的任务调度框架,可以帮助您更好地管理繁杂的任务。也让您能更好地利用分布式集群所带来的卓越性能。 主要技术特点如下: 流程任务:将一个任务划分成多个阶段,并通过DAG(有向无环图)...

     

    背景

    1.ssh安全性问题,

    2.docker,mesos云化系统支持问题

    3.执行效率问题,尤其是大规模集群(超过50台),比如服务启动,目前全部需要中心server调动。

    4.执行效果问题,目前的执行是触发式的(同步方式),只能获得ssh的执行结果,不能获得具体任务的执行结果。还是以服务启动为例,只能知道启动脚本的调用结果,无法获知每种角色的具体执行情况。

    一.说明

    BEH-EXECUTE是一个分布式的任务调度框架,可以帮助您更好地管理繁杂的任务。也让您能更好地利用分布式集群所带来的卓越性能。

    主要技术特点如下:

    1. 流程任务:将一个任务划分成多个阶段,并通过DAG(有向无环图)的方式指定阶段及其命令的执行顺序。
    2. 真正的分布式:将任务手动或自动分配到最合适的节点上执行。
    3. 简单又强大的 Web 界面。
    4. RESTful API:作为中间件,供其它服务接入。
    5. 任务管理:快速添加任务、任务分类管理、快速查找任务、任务执行状态、任务执行历史、任务执行日志、邮件消息通知等。

    二.技术框架

    StagePlanner 负责将任务编排成阶段。

    Coordinator 负责对注册的任务进行调度,调度主要根据阶段及阶段命令状态。

    FSM 有限状态机实现,负责命令,主机的状态切换,详情请见FSM说明

    ActionManager 主要负责管理任务相关数据,并提供RESTful API。

    下面以命令执行中的hadoop启动为例进行说明

    1.首先通过ActionManager注册hadoop启动任务信息;

    2.StagePlanner根据注册的任务信息进行编排,得出命令执行序列;

    任务主要分为四个阶段,

    第一个阶段主要是基础组件zookeeper启动,

    第二个阶段主要是辅助角色zkfc,jn启动,

    第三个阶段为主节点nn,rm启动,

    最后一个阶段为从节点dn,nm启动。

    具体执行序列如下图

    3.Coordinator根据命令执行序列信息,以及命令执行状态来进行命令调度;

    4.ActionManager将命令执行序列信息,以及命令执行状态存入数据库,并提供命令获取接口;

    5.Agent心跳线程获取执行命令,并定时将命令执行状态通过事件的形式反馈给ActionManager;

    6.FSM根据新的命令事件,触发命令状态切换;如原来是执行中状态,新收到执行失败事件,则FSM会将状态切换为执行失败状态。

    7.执行3,进行执行循环。

     

    三.FSM说明

     

    下面是组件安装的状态机流程图,

    图例中圆圈所在为状态,状态间为触发状态切换的时间。

    以初始状态INIT为例,如果接到HOST_SVCOMP_INSTALL事件,即安装时间,状态就会切换到INSTALLING。

     

     

    四. 任务编排实例

    下图为hadoop启动的任务编排,任务主要分为四个阶段,

    第一个阶段主要是基础组件zookeeper启动,

    第二个阶段主要是辅助角色zkfc,jn启动,

    第三个阶段为主节点nn,rm启动,

    最后一个阶段为从节点dn,nm启动。

     

    介绍完毕。

    展开全文
  • 在大数据平台中,也会有各式各样的任务需要按照一定的时间间隔和先后顺序有序进行,而管理这一切的就是调度引擎。它不仅要让任务按时按点的执行,更要面对种种复杂的场景,例如: 10分钟执行一次的周期任务执行了11...
  • 这个是分布式调度引擎的核心工程。核心调度逻辑都写在里面了!tbschedule-console也是依赖tbschedule-core这个jar的 tbschedule-example tbschedule-example是一个demo工程!它这个demo比较简单,实现是采用为...
  • 这些是tbschedule里针对分布式调度任务封装出来的角色!我们来简单理解下这三个名次。打个生活化的比喻! 古代赵大王发出攻打A城池的任务!攻打A城池的任务被细分为攻打正门,后门,西门!三个门,这就是任务拆分,...
  • Mesos(分布式资源调度引擎) Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用。Mesos是使用与Linux内核相同的...
  • 1.源码地址 http://code.taobao.org/p/tbschedule/src/ 2.系统概要 http://blog.csdn.net/strawbingo/article/details/51385553
  • 今天我们就来说说,数据工程师在使用数栈平台时,DAGScheduleX 调度引擎是如何承载数栈开发套件,帮助工程师更加快速地实现开发任务的。 什么是DAGScheduleX 调度引擎:对Task(任务)生成Job(实例)并对Job进行...
  • 文章目录SpringBoot2 集成 Quartz集成简单实现Pom依赖编码功能实现自动配置实现分析自动化配置分析 `QuartzAutoConfiguration`支持功能配置 `QuartzProperties`小结Quartz 实现分布式调度回顾分析配置简单实现Quartz...
  • 大数据分布式查询引擎--presto

    千次阅读 2019-01-16 18:44:57
    大数据分布式查询引擎–presto 一.名词解释: •Coordinator: Presto主角色,单一节点,负责接受客户端请求,SQL语句解析,生成执行计划,管理worker节点; •Worker: presto实际处理处理运行任务的节点,从...
  • Ray 是一个高性能的分布式执行引擎,开源的人工智能框架,目标之一在于:让开发者可以用一个运行在笔记本电脑上的原型算法,仅需添加数行代码就能轻松转为适合于计算机集群运行的(或单个多核心计算机的)高性能分布式...
  • 一个简洁的分布式任务调度引擎 官方出处 http://code.taobao.org/p/tbschedule/wiki/index/ 2. DISchedule 对TBSchedule分布式任务调度进行了简单改造 3. light-task-scheduler LTS是一个轻量级分布式任务调度...
  • ≡ 批处理数据批量处理,是一种适用于大规模并行批处理作业的分布式计算服务。BatchCompute可支持海量作业并发规模,系统自动完成资源管理,作业调度和数据加载,并按实际使用量计费。。未来的流计算引擎方向...
  • Ray 是一个高性能的分布式执行引擎,开源的人工智能框架,目标之一在于:让开发者可以用一个运行在笔记本电脑上的原型算法,仅需添加数行代码就能轻松转为适合于计算机集群运行的(或单个多核心计算机的)高性能分布式...
  • 我们热烈欢迎更多的用户和开发者加入到贡献的队伍中来,让我们国人开源的调度引擎在世界开源生态中占据一席之地。 特别感谢愿意给 DolphinScheduler 提供指导的 champion 和 mentors,以及数百位提出 issue 和建议...
  • 针对分布式搜索引擎的任务调度及负载均衡问题,提出了基于GNP算法的分布式爬虫调度策略和负载均衡的方法。利用网络距离预估取代大规模的网络距离测量,不仅提高了系统的响应速度,还减少了系统对广域网造成的压力。...
  • 例如一个应用的上线流程依次需要调用配置同步模块、监控模块、资源更新模块、冒烟模块、引擎创建模块,流程的运行中又有分支判断、上下文传递、失败重试等需求。基于这种需求,Maat将各类流程化的任务集中管理,各个...
  • JStorm 是一个分布式实时计算引擎。 JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间...
  • Golang具有热重载功能的可扩展分布式游戏服务器引擎 : 中文资料 游戏服务端开源引擎GoWorld教程 1.2. 3. 4.5.6. 7. 8.9. 10. 欢迎加入Go服务端开发交流群: 特征 空间和实体:借助AOI支持管理多个空间和实体 ...
  • 分布式工作流引擎的困惑?

    千次阅读 2007-07-24 21:00:00
    工作流机的执行分为集中式和分布式两种,对于分布式的工作流机,其分布式调度算法是关键所在。例如:一个process有以下几个Activity : Activity1-Activity2-Activity3-Activity4-Activity5 ,Workflow ...
  • Hadoop是Apache基金会下的一个...分布式计算引擎MapReduce,由JobTracker和TaskTracker组成。 Hadoop使得用户可以在不了解分布式系统底层细节的情况下,轻松地根据自己的业务需求,开发出分布式应用程序。在Hadoo...
  • liteflow是一个基于任务版本来实现的分布式任务流调度系统 1.实现任务在任务流间共享 2.任务/任务流的可视化配置 3.一键修复任务/任务流修复提高数据修复效率 4.动态表单+容器机制,提供一个可扩展性比较强的执行...
  • <div><p>http://git.oschina.net/calvinwilliams/dc4c https://github.com/calvinwilliams/dc4c</p><p>该提问来源于开源项目:alibaba/jstorm</p></div>
  • 基于异构服务组装的调度引擎设计与实现,陈硒,陈松乔,异构服务组装是指在分布式环境下,将基于不同架构标准的服务,根据统一的基于XML的服务组装描述文档进行自动组装,形成功能更强、
  • 2年前,本人在博客园大神张善友前辈的博文的牵桥搭线下,初识quartz调度引擎的.net开源版quarzt.net,并马上被其数据库支持,集群,插件,cron-like表达式等的亮点所吸引,后来基于Quartz.net 1.0的版本折腾出一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 560
精华内容 224
关键字:

分布式调度引擎