↑↓ 选择 · ↵ 打开 · 共索引 377 篇

    任务调度浅析

    golang 任务调度

    ARCHIVE 这篇写于 2016 年,距今 10 年多了。里面的版本、链接和做法可能都已经过时,看的时候留个心眼。

    在大型系统中,任务调度是一项基础性的需求。对于一些需要重复、定时执行或者耗时比较长的任务经常会被剥离出来单独处理,而随着任务规模与复杂性的上升,任务调度系统也就随需而生。设计良好的任务调度系统具备可靠性及伸缩性,它可以管理并监控任务的执行流程,以保证任务的正确执行。

    Java

    原生支持

    1. java.util.Timer.scheduleAtFixedRate
    2. java.util.concurrent.ScheduledThreadPoolExecutor

    第三方框架

    QuartZ,一句话来形容它。

    Java领域最强大、最丰富的任务调度框架。

    很多开源的任务调度框架,都是基于QuartZ的。

    Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架,基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发

    Ruby

    rufus-scheduler,Ruby的scheduler,支持at, in, cron 和 every jobs。

    很强大,用法也很简单

    Golang

    原生支持

    time,结合ticker

    第三方框架

    1. kingtask,是一个由Go开发的异步任务系统,由kingshard的作者flike贡献。

    2. machinery,基于分布式消息的异步队列/任务系统。

    3. cron,基本是linux crontab的Go实现,做了一些优化,但是并不会等待执行结果再执行下一次,而是到时间就继续执行。

    4. scheduler,基于cron,借鉴python库的scheduler实现的任务调度系统,且他的任务执行是根据上一次执行结束再开始下一次执行的。 类似于java.util.Timer.schedule.

    后面将会进行源码分析,尽请期待😄。

    延伸阅读

    1. Quartz教程一:使用quartz
    2. rufus-scheduler
    3. 当当网分布式任务调度框架
    4. awesome-go
    5. kingtask
    6. scheduler
    7. cron
    8. machinery
    9. 轻量级分布式任务调度框架
    10. 当当网分布式任务调度框架

    本文是“茶歇驿站”原创,多谢大家支持。