场景:从互联网上抓数据,当数据丢失的时候,如何去补抓数据,当然这个最初的设计有很大关系
为什么分20小时内与外?
我们抓取数据的时候,不可能把所有数据持续保存,这样的话我们检索数据的时候肯定会卡的死掉,所以,超过20小时外的数据,我们会持续的干掉,在抓取数据库只存20小时内数据。
正常的补数据:补最近20小时内的数据
正常情况下,我们的计划任务每4小时补一次数据,这样的补数据是为了在这个过程中产生空数据(产生空数据的原因有很多原因:当时新浪不能访问,但是根本没发布数据),补数据不是直接去网站上抓数据,而是拿离丢失数据最近的时间点取数据,直接放到汇总数据的数据库里面。这样如果数据丢失的比较多的话,会产生一样的数据(反应到折线图上面的话会是一条直线),这样的数据是不合理的,所以在在这个基础上我们对数据进行了处理,在此基础想加了radom+-5
补超过不在当前20小时内的数据:2个计划任务
1.首先需要改配置文件,告诉计划任务我需要补什么时间点到现在的数据,他会产生N个ZIP文件
2.接着需要使用计划任务,将zip包解压写到我们现在库里面,其实操作时候只要运行计划任务就可以
需要注意的:
1. 需要定位到数据那天那个小时是缺的
2. 如果是页面检验是否已经补数据成功,需要把缓存清掉,否则半个小时内看不到效果、
3. 整个过程是持续的,缺一不可
4. 当抓数据时候计划任务分类:
1 .抓网页数据的计划任务:作用:将数据抓到数据库里面
2.将抓到的数据汇总之后产生csv文件放到FTP上面。 作用:这样可以减少数据库的读速度
3.将抓到的程序写到主库里面的计划任务。作用:减少数据库频繁的写操作
这三个计划任务是有时间先后顺序的,当在做开始时间执行的时候,需要定义时间,让其可以在正常时间跑起来,让其在一个节奏上面