Xtimer定时微服务
项目背景
在学校社团中,有给社团成员发送活动通知的任务需求
有定期执行某项任务的需求,比如每周末举办一次线下活动,每个月举行一次团建
再比如,我有一个任务需要设置定时发布
定时微服务调研对比
方案 | 不足点 |
---|---|
JavaTimer | 单线程,任务堆积 |
RocketMq | 可以作为本项目的优化 |
xxl-job | 对于简单的定时任务需求过于复杂、可能需要额外开发和维护成本 |
Quartz | 对于简单的定时任务需求过于复杂、资源消耗较大,特别是在大规模任务调度时。 |
本项目特点:功能聚焦,接入轻量,维护成本低
架构设计方法论
架构设计
存储优化
- 全表扫描
- 基于redis中ZSET排序扫描,时间复杂度O(n)->O(log n)
- 横向分治,通过时间范围分片,减少查询涉及的任务数量
- 纵向分治,通过定时任务分桶,提高并发度
定时任务调度流程
一句话总结:服务架构: 3 个模块 + 2 个协程池
定时任务生成流程
一句话总结:定时任务创建与 webServer 和 migrator 2 个模块有关