我想安排以适当的时间间隔收集Facebook页面。有些网页包含更多内容(The Simpsons,每封帖子有数千条评论和喜欢),其他网页内容较少(Unsealed Files,每个帖子有几百条评论和喜欢),还有其他网页需要收获每隔几分钟就会发生一次实时事件(例如曲棍球比赛期间,如同Colorado Avalanche)。
我正在尝试找到适当的算法来安排这些不同类型的页面。目前,我使用的是一种简单的算法:在M小时内收获N页。我每隔(M * 60 * 60) / N
秒安排一次收获。我使用相同的算法安排实时页面,除了时间转移到期间开始时的时间表,以及每个X分钟直到事件结束。
这很有效,直到我开始患bufferbloat:收获页面的队列只收集页面,只有当收割机准备就绪时才会清空。我没有“丢包”,因此我的请求在其他页面后面排队并阻止最新的请求收获。
我在调度决策期间跟踪并可以使用的统计信息是:
这个问题几乎就像Network Scheduler算法。我是在正确的轨道上吗?我应该调查哪些其他算法?