Go语言-分布式定时任务 | 青训营笔记

160 阅读2分钟

这是我参与「 第五届青训营 」伴学笔记创作活动的第 1 天

了解分布式定时任务

分布式定时任务其实就是把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。

分布式定时任务与单点定时任务对比

单点定时任务

其功能相对简单,交互性能差,大多数是单机部署,可用性差,开发和维护成本高,任务跟踪和告警难以实现,不能很好的满足各系统定时任务的管理和控制,尤其在多系统的环境下更加明显。

分布式定时任务

自动化、平台化、分布式、伸缩式、高可用。 集群方式管理,降低了开发和维护成本,分布式部署,保证了系统的高可用,提高了容错,任务持久化到数据库,避免了数据丢失带来的隐患。

分布式定时任务执行方式

  • 单机任务:随机触发一台机器执行任务,适用于计算量小、并发度低的任务
  • 广播任务:广播到所有机器上执行同一个任务,比如所有机器一起清理日志
  • Map任务:一个任务可以分出多个子任务,每个子任务负责一部分的计算。适用于计算量大,单机无法满足要求的任务
  • MapReduce任务:在Map任务的基础上,还可以对所有子任务的结果做汇总计算,适用于计算量大,并且需要对子任务结果做汇总的任务

设计实现一个分布式定时任务

任务轮询方案

  • 每个服务器首次启动时加入队列;
  • 每次任务运行首先判断自己是否是当前可运行任务,如果是便运行;
  • 如果不是当前运行的任务,检查自己是否在队列中,如果在,便退出,如果不在队列中,便键入队列。

分布式互斥锁

用于并发时管理多进程和多进程同一时刻只能有一个进程或者线程操作一个功能。之后使用队列运行任务。

总结

通过本次学习,我了解了什么是分布式定时任务,以及如何进行技术的选型等