采集频率的动态调整策略

简介:

采集频率的动态调整策略

背景

之前的采集配置都需要手动设置爬行间隔时间,希望根据不同网站板块实际情况进行填写。但实际使用时发现想填准这个值非常困难,页面本身更新频率也是变化的,所以结果就是基本都是填写成默认值。从而导致爬行频率设置形同虚设,对于很多几乎不更新的板块也配置了较高的采集频率一直在工作(默认是15分钟一次),浪费系统资源。另外早晚帖文的更新速度也明显不一样,而系统却一直按固定频率进行爬行。

解决思路

既然写成静态的间隔时间很不实用,那么就需要用一个动态的方式来根据实际情况灵活调整。

鉴于滑动窗口协议流量控制的思路,采集也可以采用类似方式。网页下载无非三种情况:(1)发现了新帖文并采集入库,(2)未发现新帖文则没有东西入库,(3)网页下载失败或网页改版导致没发现帖文。目前在每次任务采集完成以后都记录其采集的具体情况,比如发现多少条记录、入库多少条记录等。那么对于发现有更新就加快采集频率,没更新就减慢采集频率,实际情况页面更新频率也是比较平滑,所以这样就会让采集系统在采集过程中可以有一个调整周期,逐渐与页面实际更新频率相接近。但为了防止过快或者过慢采集,还要设置一个采集频率的边界。

解决方案

加速条件:本轮次采集该版块有新帖文入库,则按一定比例加快采集速度,加速因子为upactor

减速条件:本轮次采集该版块未发现任何新帖文,则按一定比例下降采集速度,减速因子为downactor

频率范围5分钟/轮次~1/轮次(1440分钟/轮次)

动态公式

f(0) = 15m/r

If found new records, f(i+1) = f(i) * upactor, f(i+1) < 1440 m/r

If not found new recoreds, f(i+1) = f(i) * downactor, f(i+1) > 5 m/r

 

根据初步评估,upactor1.125downactor0.5比较合适。那么一个持续不变化的网站采集频率从15m/r变化到1440m/r一共需要约40次任务调度,共9天的时间。而一个网站持续变化最多是从1440m/r变化成5m/r,一个需要调度约8次,共一天的时间。

这种低增长快下降的策略可以更好应对突然加快更新频率,不容易遗漏帖文。



本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/716307,如需转载请自行联系原作者

相关文章
|
6月前
|
物联网
什么是动态发射功率控制 (DTPC)?
【8月更文挑战第24天】
237 0
|
6月前
|
存储 容器
Job类日志采集问题之DaemonSet采集方式的参数以减小采集延时如何调整
Job类日志采集问题之DaemonSet采集方式的参数以减小采集延时如何调整
|
9月前
|
机器学习/深度学习 传感器 监控
交通信号控制优化
交通信号控制优化
182 2
|
运维
查看调整cpu频率及模式
查看调整cpu频率及模式
321 2
HIMA F8652X 以应用精确和最佳的控制
HIMA F8652X 以应用精确和最佳的控制
HIMA F8652X 以应用精确和最佳的控制
|
编解码 算法 前端开发
Cartographer参数调整来降低延迟的策略
Cartographer参数调整来降低延迟的策略
|
人工智能 算法
如何根据「数据范围」调整自己用什么算法 ...
如何根据「数据范围」调整自己用什么算法 ...
调整状态
如果不时常的提醒督促一下自己,我会很容易在一段时间后懈怠。走偏掉。所以要经常的反思自己。 最近投了阿里的简历,收到了邮件通知要面试,经历了一面,一面直接就让我意识到了自己的不足,过段时间也需要下功夫学习的地方。
|
C#
C#动态系统托盘图标
C#动态系统托盘图标 利用timer组件定时执行变化。 1 using System; 2 using System.Windows.Forms; 3 4 namespace DynamicStockIcon 5 { 6 public partial clas...
1324 0