这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
分布式定时任务是指将一些定时任务分发到多个计算机节点上执行,以实现任务的高可用性和负载均衡。 它也是从最初的linux命令一步步发展而来的。
- Linux命令 最初,定时任务是通过Linux系统自带的cron命令来实现的。Cron可以让用户按照自己的需求,在指定的时间执行命令或脚本。例如,可以设置每天晚上10点运行一个备份脚本。Cron运行的方式是在每分钟都会检查一遍任务列表,如果到了任务的执行时间,就会执行对应的命令或脚本。 Cron的优点是简单易用,而且支持多种时间格式和复杂的任务调度方式。但它只能在单个计算机上运行,无法实现任务的负载均衡。
- 单机 在面对cron的痛点时,发展出了单机使用的任务调度框架,比较有名且高效的的就是各种树结构,堆结构构成的。简单一些的则是类似Java的Timer,Javascript的Timeout之类的。 这些工具性能有好有差,但是还是无法支持任务的负载均衡。
- 分布式 随着互联网规模的不断扩大,单机调度框架已经无法满足大规模任务调度的需求。因此,出现了一些分布式任务调度框架,可以将任务分发到多个计算机集群上执行。 比较常用的应该时XxlJob 和 scheduleX,江湖中到处都是他们的传说,而且像XXL,它还比较轻量级,适合中小公司定制维护,不会耗费太高的成本。 另外有一些重量级选手也支持定时任务的功能,比如大名鼎鼎的Kubernetes,云计算基石级别的地位。他也支持提供定时任务的功能,如果以及有了k8s,也可以考虑直接使用k8s做定时任务的调度运行。