作者|  阿里文娱高级开发工程师 金呈

编辑 | 夕颜

来源 | CSDN(ID:CSDNnews)

概述

1. 背景

随着业务形态发展,更多的生产力集中到业务创新,这背后要求研发能力的不断升级。阿里文娱持续倾向用更加高效、稳定、低成本的方式支持快速软件交付,保障高可用。于是运维力从 “HaaS”(Handwork as a Service)到“PaaS”再到“SaaS”(System as a Service),运维生产力从 Ops 到 DevOps 再到 NoOps。

在传统应用容量管理模式下,应用、集群容量评估缺乏有效数据依据与支撑,往往牺牲效率或成本来平衡经验决策风险,另一方面,人肉决策和执行难以满足业务对稳定性和效能的追求。因此,阿里文娱急需一个能够把优酷所有应用的容量管理起来的能力。

2. 目标

整体目标分成 2 个阶段,一是摸清各应用容量水平,二是为所有应用赋予弹性伸缩的能力, 最终直观看到各应用及总体资源使用率的明显提升。

技术挑战与解法

1. 单机性能

既然谈到容量问题,已知的压测方案有链路压测方案、模拟流量压测方案等。为什么还要 自研一套基于单机引流的压测方案来评估应用容量水平?

1)更接近日常真实水平;

2)无人工决策,纯机器决策单机性能瓶颈;

3)全自动,比如配置成发布结束后进行单机性能压测。

 

2. 弹性

弹性指标选择:仅靠集群 CPU 水位弹性确实可以解决绝大多数类型应用,但若基于集群QPS 水位则可更精准的进行弹性伸缩。

1)多维度弹性指标,同时也需要支持自定义指标;

2)多方位弹性方案,使用条件编排策略来达到多个弹性指标之间的协同。

技术方案

1. 全自动单机性能探索

与各接入层对接,自动配置权重完成单机引流,配合性能拐点算法支撑,完成自动识别性 能拐点并终止压测,最后一并记录单机能力值。并允许每天定时压测、发布结束压测来感知每 天、或每次发布给单机性能带来的变化,使用户更亲近自身应用的容量水平。

2. 弹性伸缩

与底层交付系统联动,打造从规划,交付,计费,弹性水平扩展、回收、资源排布调度全 生命态面向业务需求的自驱动统筹调度资源管理系统。一方面,业务资源统一平台构建与维护, 挖掘空闲资源,共享弹性计算力,整体提高部署密度,降低业务单位成本;另一方面,面向不 同应用场景,自动化容量管理,按需分配,保证应用服务可用性,提高容量运维效能。

3. 方案结合

全自动单机性能探索与弹性伸缩的结合框架,如下图:

1)应用接入:无缝接入;

2)单机性能压测自定义配置:无需再定义配置过多配置,默认“智能探索”可以支持大部分 场景;

3)单机引流:从集群中其他机器的流量引流至被压测机器;

4)智能拐点识别:使用时间序列数据趋势转折点提取算法,进行拐点识别;

5)单机性能预测:详见技术细节;

6)基础弹性配置:详见技术细节。

技术细节

1. 单机引流权重优化

1)调整权重就是调整单机流量,且权重越高,单机流量越高;

2)增加自动化调整权重策略方法。权重优化:用于已经识别出拐点,保证下一次压测接近 MAX 权重保持平缓;权重递增:用于未触发拐点,保证下一次压测能引更多的流量。

2. 响应时间拐点识别

使用算法:箱线图。基于 IQR 定制多组 k 的箱线图上限的异常提取,上限=Q3+k*IQR 实现。而效果能够定位到多数拐点,并且一般拐点前的一个时间点的值为单机能力值。

3. 成功率拐点识别

0 错误代表 100%成功率

成功率拐点识别相比响应时间拐点识别更加严格。虽然同样是“基于 IQR 定制多组 k 的箱 线图”实现,但此时 k 必须收紧,因为成功率指标较为敏感,稍有波动就应该终止压测。

4. 拐点提取参考了“时间序列数据趋势转折点提取算法”文章

比如在 3 个连续点 Xi、Xi+1、Xi+2 的判定上,它们的发展趋势共有 9 种情况:当 Xi+2-Xi>0, 即图 a,b,e 这 3 种情况属于总体趋势上升,当 Xi+2-Xi<0,即图 f,g,i 这 3 种情况属于总体 趋势下降,当 Xi+2-Xi=0,即图 c,d,h 这 3 种情况属于总体保持不变。

而我们通过“基于 IQR 定制多组 k 的箱线图”可以识别出上升和下降 2 种拐点,分别对应 不同的场景,如响应时间拐点识别(上升拐点识别),成功率拐点识别(下降拐点识别),而 k 的定义方式也参考近期数据。

比如某个应用日常响应时间稳定在 100-200ms 和某个应用日常响应时间稳定在 2-3ms 的 k值是不一样的,不合适的 k 用在 2-3ms 的这种数据上会导致异常识别较为频繁及不准确。

5. 单机性能预测方案

单机性能与什么有关,系统指标?如果是 JAVA 应用还和 JVM 相关指标有关?而应用本身 有会有各种池的限制,如 JVM 相关池、TOMCAT 相关池、DB 相关池、Redis 相关池、队列相 关池等,这些都可以作为预测单机性能的特征。先基于 PCA 抽象出 N 个特征,也称降维,可 将两两线性相关的因素进行整合或排出,降维后建立线性回归模型,而拟合度较高的模型将予 以采纳并进行预测。同时预测参数也需要实事求是,比如日常 CPU 区间为 2-60%,那预测参数 可以为 80%,此时若超过 100%那将毫无意义。

6. 流量驱动弹性方案

基于 CPU 指标的弹性伸缩:比如 CPU 超过 60%则执行弹性扩容,CPU 低于 20%则执行弹 性缩容。扩容与缩容允许按机器数比例进行伸缩:如按 5%的机器数进行弹性扩容。定义弹性区 间:如 10-20,机器数会在 10-20 区间变动。

一般低峰期会处在最低机器数区域,高峰则会处在最高机器数区域,基于外挂单机能力模 型。允许基于 QPS 水位指标进行弹性,可随 QPS 增加而增加机器数,反之则减少机器数。

总结

自动化容量管理与弹性伸缩的深度结合解决了当前容量预估的问题,使得资源能够被合理使用。一方面,用户专注业务层,做基于业务需求的容量规划、交付和维护,革命性改变生产关系,提高研发迭代效率;另一方面,更加细粒度的弹性伸缩,比如小时、分钟的资源的快速流转,资源粒度分解到具体硬件计算垂直伸缩,也是一种更优的解决方案,使得弹性更加迅速能做到秒级能力,进一步压缩集群密度,降低单位成本。

推荐阅读

  • 如何通过深度学习,完成计算机视觉中的所有工作?

  • 看似毫不相干,哲学与机器学习竟有如此大的交集

  • 黑客用上机器学习你慌不慌?这 7 种窃取数据的新手段快来认识一下

  • “谷歌杀手”发明者,科学天才 Wolfram

  • 清晰架构的 Go 微服务: 程序容器

  • 5分钟!就能学会以太坊 JSON API 基础知识

  • 你点的每个“在看”,我都认真当成了AI

从Ops到NoOps,阿里文娱智能运维的关键:自动化应用容量管理相关推荐

  1. 从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理

    作者|  阿里文娱高级开发工程师 金呈 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 概述 1. 背景 随着业务形态发展,更多的生产力集中到业务创新,这背后要求研发能力的不断升级.阿里 ...

  2. 阿里云智能运维的自动化三剑客

    整理 | 王银 出品 | AI科技大本营(ID:rgznai100) 近日,2019 AI开发者大会在北京举行.会上,近百位中美顶尖AI专家.知名企业代表以及千余名AI开发者进行技术解读和产业论证.而 ...

  3. 值得一看的智能运维AIOps关键核心技术概览

    作者:Neeke Gao,云智慧企业效能高级总监 前言 传统运维管理的人工及被动响应方式,已经无法支撑数字化业务灵活.快速的发展,要靠智能运维(AIOps)能力来获得数据分析和决策支持.而从传统ITO ...

  4. 机房里的未卜先知!PAKDD2021 第二届阿里云智能运维算法大赛启动

    ●赛题介绍● 在当今大规模数据中心中,内存类故障问题频发(尤其是内存故障引发的非预期宕机问题),会导致服务器甚至整个IT基础设施稳定性.可靠性的下降,最终对业务SLA带来负面影响. 近十年,工业界和学 ...

  5. 阿里云日志服务SLS,打造云原生时代智能运维

    2021年10月21日,阿里云针对企业运维难题,在云栖大会为大家带来了一场<智能运维论坛>的主题演讲.在会上,阿里云资深技术专家.日志服务技术负责人简志提出"云原生时代,企业业务 ...

  6. 阿里巴巴发布智能运维故障管理AI+生态计划

    摘要: 为响应马老师"家国情怀,世界担当"的号召,开放"AI+"生态计划,将让集团内部服务过程中积累下的技术与经验更好地回馈社会,任何企业或合作伙伴均可以简单方 ...

  7. 终于来了!我们发布了 PAKDD 2021 智能运维大赛 baseline

    PAKDD 是机器学习.数据挖掘领域顶会,除了聚焦于此的学术出版和讨论,每年PAKDD都有组织以解决现实问题为背景的机器学习算法大赛,而且影响力巨大. 今年的 PAKDD 2021 大赛内容是内存故障 ...

  8. PAKDD 2021 智能运维算法赛技术分享(精彩直播回放)

    3月20日,52CV邀请Chauncy对目前正在进行的 PAKDD 2021 智能运维算法大赛进行了技术解析和baseline介绍,以下是录播视频. 嘉宾 Chauncy 目前是一位大三学生,但已在数 ...

  9. 一站式智能运维解决方案,企业系统的隐形守护者

    时有爆发的疫情,加速引导着用户观影方式的改变.越来越多的用户习惯将观影模式从线下转移到线下. 疫情作为电影行业的"黑天鹅",让线下影院陷入沉寂,但是却让网络视频平台焕发新生.多家视 ...

最新文章

  1. 总结ISO各层协议都有哪些
  2. java第四节 类的继承/抽象/接口/多态性
  3. javaScript——廖雪峰老师学习笔记(一)
  4. github中的watch、star、fork的作用
  5. 在python中模块可以封装_python 制作python包,封装成可用模块教程
  6. kotlin_Kotlin print(),println(),readLine(),Scanner,REPL
  7. storm中的RotatingCache技术
  8. iso12233测试方法_ISO12233分辨率图像测试卡使用时拍摄方法
  9. 三菱plc 毕设_PLC入门难?怎么快速学好PLC?
  10. C语言输出图形:宝塔形(三角形)字母。第一行A,第二行BB,第三行CCC……
  11. python牛顿迭代公式_牛顿迭代法Python实现
  12. hexo d上传报错鉴权失败
  13. BZOJ3717: [PA2014]Pakowanie
  14. php guzzle,在PHP中实现使用Guzzle执行POST和GET请求
  15. 输入文字后不会自动变长的下划线如何制作
  16. html中index函数,INDEX函数.doc
  17. 【Linux】通过Mac终端连接虚拟机(ssh root@192.168.31.230)
  18. conda install -y 参数
  19. 编译原理第一个项目——个人所得税PersonalTax
  20. 查询tian01\tian02\tian03总和

热门文章

  1. Android NDK开发之旅31 FFmpeg音频解码
  2. Android系统--TouchEvent的处理流程
  3. IOS -- base64编码
  4. CIR:2020年全球数据中心应用AOC市场达$42亿
  5. 小扎的野心不止做社交 市政厅的上线说明了这一点
  6. Docker 用法总结之:管理工具 shipyard 的具体使用指南
  7. 20135306黄韧 信息安全系统设计基础期中学习总结
  8. 解决Mysql:unrecognized service错误的方法(CentOS)附:修改用户名密码
  9. 问价已损坏 文件服务器,由于检查点文件 (.chk) 丢失或已损坏,无法打开数据库...
  10. ajax post数组对象,Django:ajax POST发送对象数组无法正常工作的数据