温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,同学们,这一节呢,我们给大家讲一下这个定时任务的使用场景。然后在这里呢,先建个白板。呃,那么定时任务的使用场景呢?主要有三个。一个呢,就是啊,叫做降采样。啊,另外一个呢,是预聚合,呃,再一个呢,就是我们之前的像外部系统。发送数据或者信号。啊,那么这里面呢,我们之前的事例啊,我们之前的事例属于第三种,就是向外部呢发布数据,好,那么这里呢,主要是向大家介绍前两种,第一种呢,就是降采样。呃,假如说呢,我有一个存储桶。然后呢,这个存储桶里面有大量的客户端向我发送数据。啊,因为数据量很大呢,所以说我把这个保留日期呢,保留时间设为两天啊,只保留最近两天的数据。呃,那么我还有一个需求,就是呢,我要看最近七天的折线图。
01:05
但是我的数据呢,超过两天就会被删除,那这时候怎么办呢?我们可以去做一个定时任务。哎,我们去建一个新的存储桶。将这个存储桶的保留时间呢设为七天。啊,假如说呢,我这个存储统的压力很大啊,我这个存储统计的数据很多啊,每一秒钟呢,可能就有几十条数据,然后一天下来呢,可能这个数据量呢啊占几十GB。那么数据量太大之后呢,会特别消耗我磁盘空间,哎,所以说呢,这个时候我可以我可以怎么着呢,我可以去哎做一个定时任务,查询最近一分钟的数据啊,最近60秒,最近60秒的数据。然后把这些数据取出来之后呢。我只取最后一条。啊,把最后一条写到我们的新的存储图里面去啊,这样保留一个一分钟里面最后一条的数据,呃,等到我做这个折线图的时候呢,我就可以只用这个,哎,保留时间为七天的,而且呢,这里面的数据量呢,还比红色的里面少。
02:07
啊,那么这是一个降采样的方法,来节省我们的磁盘空间啊,那么另外一种呢,就是浴具盒,那么浴具盒呢,是考虑这样一个场景。呃,假如说呢,我有一个看板的APP。然后呢,我的这个存储桶里面呢,放的是数据。我的APP呢,他每次呢,要去查询一下。呃,最近三个小时吧。三个小时的数据,然后呢,因为这里面数据很多。取出来这个数据呢,我们还要按时间去开窗,每30秒呢开一个窗。30秒的窗口,这是我整个序列啊,上面这个上面这一条是我整个序列。啊,它每隔30秒开个窗呢,之后要算每个窗口里面的平均数。啊,那么如果呢,我每一次那这个APP呢,每一次去查询。
03:03
他都要把整个序列查出来。然后再进行一个聚合操作,这样呢,会极大的消耗我们的数据库的性能啊,那么有一种什么方法呢?就是我们去做一个新的存储桶。呃,然后再加上一个定时任务,这个定时任务呢,呃,就是每隔30秒。去算一下最近啊,这个存储桶里面蓝色存储桶里面最近的数据的平均值。然后我的APP呢,以后就不走蓝色的这个存储桶了,哎,我们直接从这个存储桶里面。查这个定时任务已经算好的结果,那么这样就省去了我圈中的这个步骤,哎,省去了拿到整个序列再去做聚合的步骤,这样呢能够极大的缓呃减轻我们数据库的压力。啊,所以总的来说呢,一共就是这三个场景。
我来说两句