码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 定时任务之基础实现方式(分布式任务调度)


    在我们的项目中,经常会用到定时任务,尤其是大公司,使用到任务调度的可能性几乎是百分之百,举几个例子:
    1、我是美团,每天定时上午10点发限量优惠券,要怎么定时实现呢?
    2、签约免密支付(拼多多、淘宝、美团外卖),签约之后,刷新结果,(假设)每5秒刷新一次,刷新所有状态为“签约中”的签约订单
    3、分布式集群机器,每天晚上12点同步数据,又或者每隔一个小时拉取一次数据。
    这样的例子比比皆是,我们在开发中必然会使用到定时任务,我们这一篇先讲讲那些传统的、基础的、单机的定时任务实现方式

    一、使用线程的sleep()方法来实现定时任务

    java中,Thread线程可以实现睡眠N秒,然后执行,我们就可以利用这一点,设置一个while(true)的死循环,每多少时间执行一次,一天,一小时,一分钟,5秒钟执行一次
    在这里插入图片描述

    二、使用TimerTask定时器来实现定时任务

    java中有一个定时器的类,主要为任务的具体内容
    在这里插入图片描述

    三、线程池

    在线程池中也有
    在这里插入图片描述

    四、Quartz

    Quartz框架详解第一篇
    详细介绍
    分布式定时任务调度框架【Quartz】学习与实战记录完整篇
    使用Cron生成器,生成规则
    在线Cron表达式生成器
    Quartz框架可以实现 异步定时任务
    quartz是⼀个功能丰富的开源的任务调⽤系统,它可以创建简单或者复杂的⼏⼗、⼏百、甚⾄成千上万的job。

    很多分布式任务调度都会使用到Quartz,但是一般不会单独使用,了解即可

    总结

    这些单机任务调度有很多不足之处
    在单机环境下,上面的这种定时任务实现方式问题主要有一个,无法进行管理,没有容错机制。但是在集群环境下,如果不对代码作控制,就会导致集群的每一台机器都会执行一次定时任务。
    常见的解决方式,我通过配置文件进行控制,只让定时任务在某一台机器上执行,如果项目比较小,就几台机器组成的集群环境,这样的方式确实可以,只不过在任务的管理上需要想办法解决。
    如果是一个很庞大的分布式微服务系统,可能会有成千上万个定时任务,那上面的方法就不合理了。因此许多互联网公司会采用分布式任务调度系统,主要为了实现高可用、容错管理、负载均衡、管理机制等功能,我目前所在公司使用的是xxl-job作为分布式任务调度平台。

    下一篇介绍xxl-job这个使用最广泛的分布式任务调度平台

  • 相关阅读:
    一招打通数据共享,软件开发框架让通信行业数字化转型更轻松
    vue中 css scoped原理
    [SDR] SDR 教程实战 —— 利用 GNU Radio + HackRF 手把手深入了解蓝牙协议栈(从电磁波 -> 01数据流 -> 蓝牙数据包)
    AlphaTensor论文阅读分析-矩阵乘法优化-强化学习
    idea使用gradle教程 (idea gradle springboot)2024
    c++ 类的特殊成员函数:移动构造函数(五)
    java基础-集合-ConcurrentHashMap源码学习
    Grid布局
    Azure 开发者新闻快讯丨开发者8月大事记一览
    华为交换机ssh远程登录配置命令
  • 原文地址:https://blog.csdn.net/dayuiicghaid/article/details/126474648
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号