Facebook是如何做自动扩容的

63 阅读1分钟

概览

本文主要是介绍Facebook如何对facebook.com做自动扩容的流程;原文出自于: Throughput autoscaling: Dynamic sizing for Facebook.com

核心步骤介绍

1. 预测容灾流量(明确需求)

  • 训练机器学习模型预测日常情况下的容量需求
  • 容灾情况下的容量需求

截屏2022-08-19 下午7.30.48.png

2. 通过测试获取机器能力(明确供给)

  • 内部负载测试平台

3. (最重要)核心的自动扩容流程

截屏2022-08-19 下午7.34.33.png

  1. Predict:预测每机房的下个小时的需求
  2. Live metrics: 获取每中心的当前的需求
  3. Combine: 取步骤1和步骤2的最大值;
  4. Expected events: 预期事件,比如预期内中心需求迁移;
  5. Disaster buffer: 容灾冗余,预设某个中心完全挂掉时,剩余两个中心还有能力提供服务,在示例中,假设U.S.West完全挂掉,则East,Europe需要分别承担40/2=20的流量
  6. Convert to machine count: 将流量需求转化为机器数;假设每个机器可以服务10流量,那么每个中心需要的机器数就分别是6,6,5;

补充说明

  • 机器能力获取
    • 要注意不同的请求对机器的压力是不同的;
  • 完整架构图是: 截屏2022-08-19 下午7.47.07.png
    • 安全保障
      • 不能完全依赖预测;实际是预测和当前实时流量加冗余综合得到的;
      • 看门狗:兜底策略,如果自动扩容系统出问题,则扩容到过去7天每中心的最大机器数;
    • 防止容量计算错误
      • 有一套评估机制,一旦发现机器能力评估有问题,会启用看门狗机制,接管扩容;
    • 小步跑
      • 缓慢调整,稳定为先;