• 什么是分布式、什么是分布式调度、分布式调度要实现的目标


    什么是分布式、什么是分布式调度、分布式调度要实现的目标

    什么是分布式

    软件架构的发展过程,单体架构→单体集群架构→分布式架构→微服务架构。

    分布式架构就是将单体结构拆分为若干服务,服务之间通过网络交互来完成用户的业务处理,以广泛的电商来说,可以将一个单体架构拆分为下面的分布式架构。
    请添加图片描述
    分布式系统具有如下特点:

    • 分布性:每个部分都可以独立部署,服务之间交互通过网络进行通信,比如上图的订单服务和商品服务
    • 伸缩性:每个部分都可以集群方式部署,并可针对部分结点进行硬件及软件扩容,具有一定的伸缩能力
    • 高可用:每个部分都可以集群拆分,保证高可用

    什么是分布式调度

    通常任务调度的程序是集成在应用中的,比如优惠卷服务中,定义了发送优惠卷的调度程序,账单服务中定义了账单生成的调度程序,由于采用分布式架构,一个服务往往会部署多个冗余实例来运行我们的业务,在这种 分布式系统环境下的运行任务调度,就是分布式任务调度

    请添加图片描述

    分布式调度要实现的目标

    不管是任务调度程序集成在应用程序中,还是单独构建的任务调度系统,如果采用分布式调度任务的方式就相当于将任务调度程序分布式构建,这样就可以具有分布式系统的特点,并且提高任务的调度处理能力。

    1.并行任务调度
    并行任务调度实现靠多线程,如果有大量任务需要调度,此时光靠多线程就会有瓶颈了,因为一台计算机CPU的处理能力是有限的。
    如果将任务调度程序分布式部署,每个节点还可以部署伪集群,这样可以让多台计算机共同去完成任务调度
    2.高可用
    若某个实例宕机,不影响其它实例来执行任务
    3.弹性扩容
    当集群中增加实例就可以提高并执行任务的处理效率
    4.任务管理与监测
    对系统中存在的所有定时任务进行统一管理及监测。让开发人员及运维人员能够实时了解任务执行的情况
    5.避免任务重复执行
    当任务调度以集群方式部署,同一个任务调度可能会执行多次,比如发放优惠卷,发多了赔钱,所以需要控制相同的任务在多个实例上只执行一次,考虑采用下面的方法:

    • 分布式锁,多个实例在任务执行前需要获取锁,如果获取失败那么证明有其它服务已经在执行,如果获取成功,则当前无任务执行,则可以继续执行。分布式锁实现方式可采用数据库、redis、zookeeper等。
    • zookeeper选举,利用zookeeper对Leader实例执行任务,有其它业务已经使用了zk,那么执行定时任务的时候判断自己是否是Leader,如果不是则不执行,如果是Leader则执行定时任务,这样也可以实现避免重复执行。

    主流的分布式调度框架、Elastic-job简介、功能和常用介绍

  • 相关阅读:
    脱口秀演员入职华为?破案了:人家还是博士后研究员
    kafka 生产者 API 实践总结
    堆Pwn:House Of Storm利用手法
    [蓝桥杯 2019 省 A] 填空问题 E
    4D5D影院设备发展前景7D互动影院体验馆应用
    微信小程序云开发数据懒加载+打破云数据库返回数据条数限制
    Spring中接口 FactoryBean 作用
    python — 面向对象【1】
    Python 列表切片详解
    VSCode 使用CMakePreset找不到cl.exe编译器的问题
  • 原文地址:https://blog.csdn.net/qq_41929714/article/details/127784960