这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
春节集卡瓜分20亿。如何设计最终开奖环节的技术方案。自动化、定时执行、海量数据、高效稳定。分布式定时任务。定时清理日志。 分布式定时任务是把分散的、可靠性差的定时任务纳入统一的平台,实现集群管理调度和分布式部署的一种定时任务的管理方式。自动化、平台化。
单机任务:随机触发一台机器执行任务,适用于计算量小,并发度低的任务
广播任务:官博到所有机器上执行同一个任务,比如所有机器一起清理日志。
Map任务:一个任务可以分为多个子任务。每个子任务负责一部分的计算。
分布式定时任务可以支撑更大的业务体量,分布式定时任务的型嫩南瓜、伸缩性、稳定性更高。
定时并不是大数据处理引擎要解决的核心主题。
业内流行的框架:Xxl-job、SchedulerX、TCT。
分布式定时任务核心要解决触发、调度、执行三个关键问题。触发器:trigger,解析任务,生成触发事件。调度器,Scheduler分配任务,管理任务生命周期。执行器:Executor,获取执行单元,执行任务逻辑。
触发器的核心职责,给定一系列任务,解析他们的触发规则,在规定的时间点触发任务的调度。
设计约束:需支持大量任务、需支持秒级的调度、周期任务需要多次执行、需保证秒级扫描的高性能,并避免资源的浪费。
触发器高可用:不同业务之间,任务的调度相互影响怎么办,负责扫描和触发的机器挂了怎么办。解决思路,存储上,不同国别、业务做资源隔离。运行时,不同国别、业务分开执行。部署时,采用多机房集群化部署,避免单点故障,通过数据库锁或分布式锁保证任务只被触发一次。
个人收获,通过这节课我对分布式定时任务建立起宏观的认识,并深入了解其实现原理,了解关联的单机定时任务、大数据处理引擎,通过了解不同的实现方案的优劣来拓展知识面。