• 定时任务


    定时任务,顾名思义,不必多释。

    crontab命令

    Linux系统分为两种任务调度。

    1、系统任务调度

    2、用户任务调度

    *   *   *   *   *   command

        星期

         月

      日

     时

    “,”表示列表范围。1,2,3,7,8

    “ - ”表示值的范围。1-6

    “ * ”表示任意可能的值。

    “ / ”表示时间的间隔频率。例如“0-23/2”,表示每两个小时执行一次

    JDK Timer

    时间不准确延迟:单线程。如果存在多个任务,某个任务因为某种原因导致线程任务执行过久,超过了间隔时间,就会导致任务延迟了。

    异常终止:会终止所有任务,未执行的timerTask也不会执行了。

    依赖系统时间;会因为时间出现问题。

    ScheduledExecutor

    任务多并发

    只是如果执行过程中抛出异常,那么会终止,之后也不会周期性进程

    Spring Scheduler

    Quartz

    分布式定时任务

    指的是讲集群中分散的可靠性差的定时任务统一化管理和调度,并实现分布式部署的管理方式。

    “抢占式”:谁先获得资源谁能运行

    “协同式”:单个任务处理的数据分到多个jvm中处理,提高数据的并行处理能力

    一般策略:

    1、只在一台服务器上运行

    2、通过配置参数分散运行

    3、通过全局锁互斥执行

    分布式定时任务的特点:

    高可用:

    可伸缩:

    负载均衡:

    失效转移:

    分布式锁的实现方式:

    (1)基于数据库:当想要执行任务,先往数据库插入一条数据,插入成功就可以获得,执行完毕后删除对应的行数据。

    (2)基于redis:基于setnx实现,当缓存中的key不存在时,才会设置成功。

    (3)基于zooKeeper:创建一个锁目录lock,如果线程A需要获得锁就在lock目录下创建临时顺序节点,在查询锁目录下所有子节点,寻找比自己小的兄弟节点,不存在则说明当前线程顺序号最小,则可以获得锁。线程B如果想获得锁同样查询所有的节点,判断自己是不是最小的,如果不是,则监听比自己值小的。线程A处理完成,删除自己的节点,线程B监听到变更事件,判断自己是不是最小的节点,如果是,则获得锁。

  • 相关阅读:
    [BAT] 以当前时间为名创建文件夹,将本地文件夹里的文件拷贝到远程共享目录,而且保证本地和Jenkins上运行都成功
    [Jenkins] 执行SoapUI的task,设置邮件内容为HTML+CSS
    bzoj 2435 dfs处理
    Gym 100989E 字符串
    Codeforces Beta Round #95 (Div. 2) C 组合数学
    Gym 100989F 水&愚&vector
    Gym 100971C 水&愚&三角形
    Gym 100971B 水&愚
    HDU 5696 RMQ+滑窗
    UVA 1619/POJ2796 滑窗算法/维护一个单调栈
  • 原文地址:https://www.cnblogs.com/hekiraku/p/12058722.html
Copyright © 2020-2023  润新知