分布式定时任务 | 青训营笔记

56 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第12天。 这节课从抖音春节活动说起,通过这个集卡换红包活动引入了这节课要讲的分布式定时任务。首先介绍了最终开奖环节的后端设计方案,由于用户规模、资金规模和读写QPS都是非常大的,所以设计的方案要考虑到自动化、定时执行、海量数据和高效稳定。然后介绍了一些定时任务的例子,比如windows批处理中的自动关机脚本,windows任务计划程序,linux中的CronJob命令,java以及go语言中的Timer和Ticker工具包,单机定时任务以及Quartz这个强大的任务调度框架。然后就开始介绍分布式定时任务,首先介绍了分布式定时任务的概念,分类--定时任务、延时任务、周期任务,执行方式--单机、广播、Map和MapReduce,然后介绍了一些大厂所用到的定时任务框架,包括Xxl-job、SchedulerX、TCT等等,之后分别介绍了单机定时任务以及大数据处理引擎两者与分布式定时任务的异同点。然后进入第三部分实现原理,首先介绍了核心架构,包括触发器、调度器、执行器和控制台四部分,然后介绍了在这个架构下的数据流。然后开始逐一讲解架构四个部分,首先是控制台,介绍了一些相关概念,比如Job、JobInstance、JobResult、JobHistory以及它们之间的关系,然后介绍触发器,首先介绍了核心职责和设计约束,然后讲解了设计触发器的两个方案--定期扫描+延时消息以及时间轮,这里重点介绍了后者,然后介绍了让触发器高可用的措施--集群部署,为了避免多个触发器同时触发同一任务,介绍了抢锁--数据库行锁模式和分布式锁模式,后者性能更高。然后介绍了调度器,调度器包括资源来源,资源调度--节点选择、任务分片、任务编排和故障转移,也可以通过集群部署保证调度器的高可用,最后是执行器,介绍了执行器和调度中心的关系。最后是第四部分业务应用,介绍了一些分布式定时任务的应用场景, 并且与其他解决方案进行对比。上完这节课我对分布式定时任务的相关概念有了一定的了解,之后再接触到相关业务时会继续向深处研究该技术。