这是我参与「第五届青训营 」笔记创作活动的第不知道多少天的n天
前言:
这次青训营从抖音春节活动的例子开始,介绍了定时任务的发展,从而带领我们了解了分布式定时任务的实现原理。
相关原理
- 对分布式定时任务建立起宏观的认知,并深入了解其实现原理。
- 了解关联的单机定时任务、大数据处理引擎,通过了解不同实现方案的优劣来拓展知识面
- 了解在哪些实际业务场景中使用分布式定时任务
- 对于实际业务场景的中间件选型、技术方案设计做到成竹在胸
抖音春节活动瓜分20亿活动
关于后端实现活动的基本构成如下
这里的用户规模、资金规模都是亿万级别的,读写QPS也有百万计。我们需要做的就是自动化地定时计算、分发出开奖信息。这期间需要我们高效稳定得处理如此海量的数据。
介绍批处理
- windows 自动关机
- 健康打卡(现在学校没有了,不过之前可以用py简易实现
- 基于Linux的CronJob
Crontab语法一个crontab文件用五个段来定义:天,日期和时间,和一个要定期执行的命令代码。
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0) //星期
| | | +------- month (1 - 12) //月
| | +--------- day of month (1 - 31) //日
| +----------- hour (0 - 23) //时
+------------- min (0 - 59) //分
所有的值都必须在相应的范围之内,否则视为无效。 在填值区域内可以是* 也可以是以 (,) 分隔的一组值。 值可以是一个数据也可以是用连接符连起来的两个数(表示范围)。
- 单机定时任务-Timer、Ticker
每隔5分钟定时刷新本地缓存数据Java实现 :
- 每隔5分钟定时执行多个任务
private static ScheduledExecutorService scheduler;
public static void main(String[] args) throws Exception {
scheduler = Executors.newScheduledThreadPool(5);
scheduler.scheduleAtFixedRate(((
new Runnable() [
@Override
public void run() {
DoSomething();
}
})),
0, 300,
TimeUnit.SECONDS);
上边思维导图中涉及的任务调度
基于Quartz的调度系统
未完待续~