我如何确定要更新哪个Feed(中有多个)的优先顺序?

时间:2009-03-30 15:01:51

标签: algorithm

假设我有500个RSS源,需要不断更新,但不想每分钟检查500个。什么方法或算法可以最好地确定哪些馈送应该更新而其他馈送在以后的时间?

假设我可以并且将保存历史数据/统计数据,即使在相同的Feed中,更新频率也会有所不同。

3 个答案:

答案 0 :(得分:1)

嗯,你自己部分回答了你的问题。

使用现有统计信息根据更新率确定Feed的优先级。保持统计信息本身更新,因此它会根据更新频率的变化进行调整。

答案 1 :(得分:0)

您正在描述优先级安排的常见问题。有很多可能的方法,但这是一个简化的版本。

  • 设计优先级功能,确定更新特定Feed的重要性。 (例如,如果由于特定Feed已更新并且历史更新率较低,它只有一段时间,它的优先级可能较低。)
  • 然后将Feed放入priority queue
  • 当您需要做更多工作时,请从队列中获取优先级最高的Feed。
  • 为确保每个人都有机会更新,请定期提升暂时未更新的Feed的优先级。

答案 2 :(得分:0)

如果你想要我的高端方法,你可以像这样工作。选择RSS提要的概率模型,例如更新之间的时间遵循连续概率分布,例如exponential distribution。对于每个RSS提要,请使用maximum likelihood方法根据该提要的更新历史记录估算各个分布的参数。现在您有了一个概率模型,您可以使用该模型计算任何特定RSS源在任何特定时间可用更新的概率。只要有时隙可用于检查一个流上的更新,请检查具有最高概率的新数据。例如,指数概率是无记忆的,这意味着如果您检查更新的订阅源并且没有,则更新的概率将在检查时“重置”为0%,然后将向上增长从那里开始,在不久的将来优先考虑其他饲料。