Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 基于需求自动调整资源池容量的算法_Algorithm_Pool - Fatal编程技术网

Algorithm 基于需求自动调整资源池容量的算法

Algorithm 基于需求自动调整资源池容量的算法,algorithm,pool,Algorithm,Pool,您是一个需要一段时间才能创建的资源的生产者(让我们用几分钟来说明)。您有消费者请求该资源的实例,而请求的模式最初是未知的(并且可能随时间而变化) 使用资源池是一个明显的选择。但是,选择池容量并随着时间的推移以以下方式发展池容量的简单好方法是什么: 减少等待时间:我们希望大多数消费者在完全不等待的情况下(比如90%的时间)满足他们的请求 最大限度地减少浪费:假设将这些资源保留在池中的成本很高,因此我们不希望大量资源长时间闲置 我不是在寻找一些高级人工智能学习解决方案,而是寻找一个简单的算法,根

您是一个需要一段时间才能创建的资源的生产者(让我们用几分钟来说明)。您有消费者请求该资源的实例,而请求的模式最初是未知的(并且可能随时间而变化)

使用资源池是一个明显的选择。但是,选择池容量并随着时间的推移以以下方式发展池容量的简单好方法是什么:

  • 减少等待时间:我们希望大多数消费者在完全不等待的情况下(比如90%的时间)满足他们的请求
  • 最大限度地减少浪费:假设将这些资源保留在池中的成本很高,因此我们不希望大量资源长时间闲置
我不是在寻找一些高级人工智能学习解决方案,而是寻找一个简单的算法,根据简单的因素调整池大小,例如

  • 池中当前剩余的资源
  • 池中资源的年龄
  • 请求的频率
显然,有不止一种方法可以做到这一点,而最佳算法将取决于资源的昂贵程度、让消费者等待的糟糕程度以及您得到的有机请求模式(例如缓慢增加与突然增加)。但我正在寻找一个在大多数情况下都能做得很好的解决方案,并且有一些常数可以根据实际问题进行调整

为了说明这一点,我将给出一个相当简单的算法示例:

  • 从10的池大小开始
  • 如果池容量达到总容量的20%(最初为2项),则将池大小增加1
  • 如果池中最旧的项目(即下一行要使用的项目)超过1小时,则将池大小减少1

解决此问题的唯一方法是积累几年的经验。您将有每日使用模式(夜间与白天)、每周使用模式(周末与工作日)和年度使用模式(假日和/或季节)。因此,你需要投资过剩产能,直到你有足够的经验优化生产。作为Azure团队的架构师,您已经知道了这一点,所以我不确定问题是什么。@user3386109为了回答这个问题,假设没有基于日历的模式(尽管您认为在许多真实场景中会有一些模式是对的)。相反,重点是根据有机需求调整容量。在我看来,您需要为访问模式假设一些模型,并在新数据出现时进行更新。如果你能吞下这种药丸(例如,伽马先验的泊松分布),这应该与贝叶斯在线参数估计非常吻合。@jdehesa我正在寻找更直接的方法。我在问题中添加了一个例子来说明问题。从这个天真的例子到下一个层次是。