基于吞吐量和利用率的预测缩放的容量推荐引擎

科技资讯 投稿 33200 0 评论

基于吞吐量和利用率的预测缩放的容量推荐引擎

本文介绍了一种容量推荐模型,实现方式相对相对比较简单,且已在Uber内部使用,可以依照文中的方式开发一版容量推荐系统。

Capacity Recommendation Engine: Throughput and Utilization Based Predictive Scaling

    简介

    黄金指标和服务容量之间的对应关系。通过反应性预测,CRE可以基于线性回归模型和峰值流量估算出区域服务的容量。除了容量,分析报告还可以告诉我们不同区域服务的特性和性能回归。本文将会深入介绍CRE模型以及系统架构,并提供该模型的一些分析结果。

    使用的指标

    utilization是最常用的扩缩容指标。在CRE中,除了利用率,还使用吞吐量(throughput作为另一个容量评估的重要指标。吞吐量代表了业务产品需求。在服务层面,可以转换为每个实例的RPS(每秒请求数。每当推出新产品以及变更依赖的扇出模式时,都会直接导致服务吞吐量的变化,从而影响容量需求。我们的目标是获取满足利用率需求的服务容量或实例数。我们将实例的CPU core乘以实例数,得到服务所需的总CPU core数。通过将资源分配引入预测模型,就可以将指标与服务容量关联起来。CRE使用吞吐量和资源分配时序数据来构造线性回归模型。

    图1:CRE使用的黄金指标

    CRE算法

    CRE的推荐流程包括如下步骤:

    • 评估峰值吞吐量

    • 定义目标利用率

    • 创建线性回归模型

    • 生成推荐结果

    • 限制服务使用的资源

    评估峰值吞吐量

    由于扩缩容的频率不同(小时、天、周,其需要评估的吞吐量也不同。

    Target作为下一周评估的峰值流量。CRE使用的默认吞吐量评估方式为时序分解模型。使用基于STL的时序分解方式将全局吞吐量时序数据分为趋势(trend、季节性(seasonality和其他(residue三部分。这三部分之和表示了原始全局吞吐量指标。seasonality表示一个频率模式,trend表示跨天的模式。下例以天作为seasonality,展示了美国/拉丁美洲的上下班的峰值。residue 为不匹配trend或seasonality的剩余原始指标,通常表示噪音。使用时序分解结果,CRE可以为大多数服务提供可靠的预测。

    图2吞吐量分解结果

    定义目标利用率

    Target是CRE中用来推导容量数值的一个信号。该信号描述了未来服务资源的最大利用率。为了有效利用资源,应该尽量提高利用率,以便为未预测到的情况预留一部分缓冲余地。正常情况下,每天的流量不会超过目标利用率。目标利用率应该包括某些特殊场景,如区域下线,此时该区域的流量会转移到其他区域,此时由于流量的上升,利用率也会随之上升。

    线性回归:归一化吞吐量和利用率

    编程笔记 » 基于吞吐量和利用率的预测缩放的容量推荐引擎

    赞同 (30) or 分享 (0)
    游客 发表我的评论   换个身份
    取消评论

    表情
    (0)个小伙伴在吐槽