zoukankan      html  css  js  c++  java
  • Elastic-Job介绍

    1 什么是分布式任务调度

    什么是分布式?
    当前软件的架构正在逐步转变为分布式架构,将单体结构分为若干服务,服务之间通过网络交互来完成用户的业务
    处理,如下图,电商系统为分布式架构,由订单服务、商品服务、用户服务等组成:

    分布式系统具体如下基本特点:
    1、分布性:每个部分都可以独立部署,服务之间交互通过网络进行通信,比如:订单服务、商品服务。
    2、伸缩性:每个部分都可以集群方式部署,并可针对部分结点进行硬件及软件扩容,具有一定的伸缩能力。
    3、高可用:每个部分都可以集群部分,保证高可用。
    什么是分布式调度?
    通常任务调度的程序是集成在应用中的,比如:优惠卷服务中包括了定时发放优惠卷的的调度程序,结算服务中包
    括了定期生成报表的任务调度程序,由于采用分布式架构,一个服务往往会部署多个冗余实例来运行我们的业务,
    在这种分布式系统环境下运行任务调度,我们称之为分布式任务调度,如下图:

    分布式调度要实现的目标:
    不管是任务调度程序集成在应用程序中,还是单独构建的任务调度系统,如果采用分布式调度任务的方式就相当于
    将任务调度程序分布式构建,这样就可以具有分布式系统的特点,并且提高任务的调度处理能力:
    1、并行任务调度
    并行任务调度实现靠多线程,如果有大量任务需要调度,此时光靠多线程就会有瓶颈了,因为一台计算机CPU的处
    理能力是有限的。
    如果将任务调度程序分布式部署,每个结点还可以部署为集群,这样就可以让多台计算机共同去完成任务调度,我
    们可以将任务分割为若干个分片,由不同的实例并行执行,来提高任务调度的处理效率。
    2、高可用
    若某一个实例宕机,不影响其他实例来执行任务。
    3、弹性扩容
    当集群中增加实例就可以提高并执行任务的处理效率。
    4、任务管理与监测
    对系统中存在的所有定时任务进行统一的管理及监测。让开发人员及运维人员能够时刻了解任务执行情况,从而做
    出快速的应急处理响应。
    5、避免任务重复执行
    当任务调度以集群方式部署,同一个任务调度可能会执行多次,比如在上面提到的电商系统中到点发优惠券的例
    子,就会发放多次优惠券,对公司造成很多损失,所以我们需要控制相同的任务在多个运行实例上只执行一次,考
    虑采用下边的方法:


    分布式锁,多个实例在任务执行前首先需要获取锁,如果获取失败那么久证明有其他服务已经再运行,如果
    获取成功那么证明没有服务在运行定时任务,那么就可以执行。


    ZooKeeper 选举,利用ZooKeeper对Leader实例执行定时任务,有其他业务已经使用了ZK,那么执行定时任
    务的时候判断自己是否是Leader,如果不是则不执行,如果是则执行业务逻辑,这样也能达到我们的目的。

    2 Elastic-Job介绍
    针对分布式任务调度的需求市场上出现了很多的产品:
    1)Elastic-job:当当网基于quartz 二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分
    布式协调,实现任务高可用以及分片。
    2)Saturn: 唯品会开源的一个分布式任务调度平台,可以全域统一配置,统一监控,任务高可用以及分片并发处
    理。它是在elastic-job基础之上改良出来的。
    3)xxl-job:大众点评的分布式任务调度平台,是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学
    习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
    4)TBSchedule:淘宝的一款非常优秀的高性能分布式调度框架,目前被应用于阿里、京东、支付宝、国美等很多
    互联网企业的流程调度系统中。
    Elastic-Job是一个分布式调度的解决方案,由当当网开源,它由两个相互独立的子项目Elastic-Job-Lite和Elastic-
    Job-Cloud组成,使用Elastic-Job可以快速实现分布式任务调度。
    Elastic-Job的github地址:https://github.com/elasticjob
    功能列表:
    分布式调度协调
    在分布式环境中,任务能够按指定的调度策略执行,并且能够避免同一任务多实例重复执行。
    丰富的调度策略:
    基于成熟的定时任务作业框架Quartz cron表达式执行定时任务。
    弹性扩容缩容
    当集群中增加某一个实例,它应当也能够被选举并执行任务;当集群减少一个实例时,它所执行的任务能被转移到别的实例来执行。
    失效转移
    某实例在任务执行失败后,会被转移到其他实例执行。
    错过执行作业重触发
    若因某种原因导致作业错过执行,自动记录错过执行的作业,并在上次作业完成后自动触发。
    支持并行调度
    支持任务分片,任务分片是指将一个任务分为多个小任务项在多个实例同时执行。
    作业分片一致性
    当任务被分片后,保证同一分片在分布式环境中仅一个执行实例。
    支持作业生命周期操作
    可以动态对任务进行开启及停止操作。
    丰富的作业类型
    支持Simple、DataFlow、Script三种作业类型,后续会有详细介绍。
    Spring 整合以及命名空间支持
    对Spring支持良好的整合方式,支持spring自定义命名空间,支持占位符。
    运维平台
    提供运维界面,可以管理作业和注册中心。

  • 相关阅读:
    数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);
    jsonp的三种跨域方式
    Python函数的参数
    Python 函数
    collection 类
    字符串,列表,元组,字典基本函数
    图像处理------图像加噪 分类: 视频图像处理 2015-07-24 09:26 24人阅读 评论(0) 收藏
    图像处理------理解卷积 分类: 视频图像处理 2015-07-24 09:25 24人阅读 评论(0) 收藏
    图像处理------颜色梯度变化 (Color Gradient) 分类: 视频图像处理 2015-07-24 09:23 27人阅读 评论(0) 收藏
    图像处理------噪声之美
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12056764.html
Copyright © 2011-2022 走看看