• 弹性伸缩系统 白


    1. 项目背景

    每次大促前我们都会面临着系统扩容的挑战,之所以使用"挑战"二字,是因为我们每次都是人肉操作,要投入大量的人员和时间去支持大促,之前的扩容流程如下:

    • 找到目标机器
      • 确定目标机器是否挂载data盘,确认/etc/fstab配置是否正确
    • 在云资源控制台基于此机器创建镜像
    • 基于镜像创建购买机器的订单
    • 发送leader审批订单付款
    • 协调研发发布代码保持版本一致
    • 慢慢放量观察请求状态是否正常

    这一套流程下来超过1小时并且操作人感觉很疲惫,在这种状态下就很容易引发各种线上故障。

    2. 项目目标

    针对上述的复杂流程我们希望做出改变,因为我们认为扩缩容不应该是这么复杂且高风险的事情,我们要用标准化和自动化来替代人工。于是就有了自动伸缩系统这个项目, 项目目标很简单:

    • 大促1小时内完成所有项目扩缩容
    • 单应用5分钟内完成扩缩容

    归根结底还是落到了成本/稳定/效率的核心目标上

    3. 项目核心

    为了完成上述的2个大目标,我们进行拆解分析,其实无非就是和CI/CD,云厂商,监控,网关方面的交互,问题不大, 具体拆解的项目核心如下:

    • 核心目标
      • CI/CD:
        • 在敏捷开发背景下,我们的操作在保证安全的情况下要尽可能小的影响开发人员
          • 扩容之前禁用项目发布
          • 扩容之后确保版本统一
      • 云厂商:
        • 确保扩容机器/容器环境一致
        • 确保配额充足
      • 监控:
        • 确保扩缩容之后快速发现异常,以实施应急预案
      • 网关:
        • 确保扩缩容对业务请求无影响(动态调整)

    4. 项目挑战

    • 监控的实时性和准确性: 决定扩缩容是否正常的判断逻辑
      • 引入flink做实时计算
    • 统一网关: 决定动态调整流量的逻辑是否可实现
    • 镜像的制作速度
      • 异步制作/每天定时制作
      • 扩容之后打通ci/cd同步代码
  • 相关阅读:
    angular项目中,使用ant(蚂蚁金服)生成table表格
    angular2 单元测试
    angular2 单元测试
    angular2单元测试
    angular2单元测试
    angular2单元测试
    angular2单元测试
    浅谈Unicode和char的关系(Java)
    剖析面试最常见问题之 Java 基础知识
    ssm系列框架
  • 原文地址:https://www.cnblogs.com/chaizhenhua/p/16132196.html
Copyright © 2020-2023  润新知