KapacityStack 根据蚂蚁内部的超大规划出产事务实践,旨在为用户供应一套具有完善技能危险才能的、智能且敞开的云原生容量技能,协助用户安全稳定地完成极致降本增效,处理容量相关问题。

主代码仓库的 GitHub 地址为:

GitHub – traas-stack/kapacity: An open cloud native capacity solution which helps you achieve ultimate resource utilization in an intelligent and risk-free way.

钉钉沟通qun号:27855025593

布景介绍

数字经济时代,社会各行各业对数据和算力的需求急速增加,可是算力需求的飙升和粗豪运用却造成了大量的资源耗费和碳排放,一同也给企业带来了巨大的成本压力。在国家“双碳”战略布景下,经过数字化创新技能手法提高资源运用功率、减少资源糟蹋和下降碳排放成为了业界一致。

蚂蚁集团从 2019 年开端就对“绿色核算”技能进行了探索,并根据“离在线混合部署、AI 弹性容量、云原生分时调度、绿色 AI”四大技能基础上打造了绿色核算技能系统。

在 2022 年双 11 期间,蚂蚁集团经过“绿色核算”技能节省 153.8 万度电,可供一盏普通节能灯运用 1 亿 5 千万个小时;减排 947 吨二氧化碳当量,约等于 79000 棵树的年碳吸存量。

蚂蚁集团云原生智能容量技术 KapacityStack 正式开源

近几年来,咱们在云原生架构的基础上环绕蚂蚁“绿色核算”的 AI 弹性容量技能做了十分多的研究和建造,包含容量弹性、容量数据智能、容量稳定性、容量运维与资源运营等,在天长日久的出产实践中锻炼出了很多优秀的算法,也沉积了大量技能危险的最佳实践,现在已能安全稳定地为蚂蚁继续节省年均约 10w 核的算力成本。

此外,咱们也积极地进行着这些技能的敞开,支撑了蚂蚁商业化 SOFAStack 产品与支付宝小程序云等,满意很多合作伙伴的云原生容量需求。

今日,咱们将这套内部技能加以浓缩凝练,以彻底云原生化的方法构建了一套敞开可扩展的智能容量技能系统,将其开源为了 KapacityStack 项目(以下简称 Kapacity ),希望和业界分享并共同演进云原生容量相关技能。

重点技能特性

云最大的优势在于给用户供应弹性的资源供应,在现在干流的云原生运用场景下,最常见可行的弹性手法便是对运用容器的副本数做动态扩缩容,其在社区上的代表性技能便是 Kubernetes 原生的 Pod 水平主动扩缩(HPA)才能,但该才能在实际大规划出产运用上的效果和有用度上却并不理想,首要由以下几个原因导致:

  • HPA 的主动扩缩容经过呼应式的方法驱动,仅当运用负载现已超出设定水位时才会触发扩容,此刻容量危险现已出现,只能起到应急的效果而非提前规避危险,特别关于自身启动时间较长的运用,简直起不到快速应对流量洪峰的效果。
  • HPA 经过简略的方针折比来核算扩缩容方针副本数,只适用于运用副本数和相关方针呈严厉线性相关的理想场景,但实际出产傍边运用的各类方针和副本数之间存在错综杂乱的联系,该算法很难得到符合容量水位要求的副本数。
  • 容量弹性作为改变故障率较高的一类场景,HPA 除了支撑约束扩缩容速率外没有供应任何其他的危险防控手法,在稳定性要求较高的出产环境中大规划落地是很难令人放心的。
  • HPA 作为 Kubernetes 内置才能,一方面天然有其开箱即用的好处,但另一方面也使其绑定在了详细的 k8s 版别上,自身的行为难以被用户扩展或调整,难以满意各类用户在不同运用场景下的定制化需求。

Kapacity 的第一个开源中心才能—— IHPA(全称 Intelligent Horizontal Pod Autoscaler)便是为了处理上述一切问题应运而生的。它具有下面的几个重要技能特性:

智能弹性

容量弹性本质上是一个数据驱动决议计划的过程,而非简略的扩缩容。IHPA 支撑在不同场景因地制宜地运用不同的算法,除了简略的定时与呼应式算法,其还支撑多种智能算法如猜测式、突增式等,一同支撑按自定义装备策略对算法进行组合收效,从而能够适配更多事务场景、扩缩容的决议计划也更为精准。

蚂蚁集团云原生智能容量技术 KapacityStack 正式开源

以猜测式算法为例,在出产上,运用的容量水位通常会受到多条外部流量,甚至是自身定时使命、机器功能等的影响,且副本数与容量水位之间的联系也未必是线性,这为根据运用容量的副本数猜测带来了很大的应战。

为此,IHPA 引入了蚂蚁在内部大规划弹性出产实践中打磨出的一套根据机器学习的猜测式算法,该算法首要经过 Swish Net for Time Series Forecasting (SNTSF) 对潜在影响运用容量水位的多条流量进行时序猜测,随后经过 Linear-Residual Model 将这些组分流量和运用容量及其对应副本数进行综合建模,最终推理得出运用未来的推荐副本数。

蚂蚁集团云原生智能容量技术 KapacityStack 正式开源

蚂蚁集团云原生智能容量技术 KapacityStack 正式开源

经过这种流量驱动容量的思维,该算法能够很好地应对出产上多周期流量、趋势变化流量、多条流量共同影响容量、容量与副本数呈非线性联系等杂乱场景,通用性和准确性兼具。

多级弹性

不同于原生 HPA 只支撑作业负载扩缩容,IHPA 支撑在整个弹性过程中精细化地操控作业负载下每一个 Pod 的情况,经过灵活的 Pod 情况转换提高弹性功率并下降弹性危险。

现在,Kapacity 中定义了下面几种 Pod 情况:

  • Online:Pod 正常对外供应服务的情况(Running and Ready),也是新扩容 Pod 的默许情况。
  • Cutoff:Pod 流量彻底去除的情况(Running but Not Ready)。在实践上,支撑优先缩容到此情况,并辅以一段稳定性调查期,一旦发现问题能够秒级回滚到 Online 情况。
  • Standby:Pod 资源被换出,保持在低水位的情况。比较于 Cutoff 情况,该情况能够实际开释 Pod 所占用资源供其他运用运用,也支撑分钟级回滚到 Online 情况。
  • Deleted:Pod 被真实删去的情况。实际到了该情况 Pod 自身就不存在了。

蚂蚁集团云原生智能容量技术 KapacityStack 正式开源

别的,经过上述不同情况的组合和转换能够完成更多玩法,比方蚂蚁内部的大规划分时调度技能、热池技能等便是根据多级弹性的实践。

蚂蚁集团云原生智能容量技术 KapacityStack 正式开源

稳定性保障

IHPA 吸收了蚂蚁多年大规划弹性出产实践的经验教训,沉积出了独有的弹性改变稳定性保障才能。

灰度改变

IHPA 在履行扩缩容时支撑采用自定义灰度分批的改变策略,最大程度地减小了弹性改变的爆破半径;一同还支撑加入上文说到的 Cutoff/Standby 中心态完成多阶段灰度,提高应急回滚速度,进一步下降弹性改变危险。

下面以运用 Cutoff 作为中心态的一次灰度缩容为例:某运用的作业负载本来有 6 个 Pod,期望缩容到 2 个,此刻会依照用户的灰度装备主动分批改变 Pod 为 Cutoff 情况,每次改变都会距离一定时间进行稳定性调查。当待缩容 Pod 都切换为 Cutoff 情况后会进入最终的额定稳定性调查期,假如最后没有发现危险则再履行真实的缩容,假如期间发现危险,则能够快速回滚到 Online 情况。

蚂蚁集团云原生智能容量技术 KapacityStack 正式开源

稳定性查看与改变熔断

在弹性改变的过程中,有时候仅仅经过调查弹性方针是否异常无法及时暴露出危险,因此,IHPA 支撑用户自定义的改变期稳定性查看,包括自定义方针异常判断等,多维度地剖析改变情况,一旦发现异常支撑主动采纳应急熔断办法,如改变暂停或改变回滚,真实做到弹性改变常态化无人值守。

敞开扩展

Kapacity 在项目规划之初就极度重视模块化与扩展性,比方整个 IHPA 才能就拆分为了管控、决议计划、履行三大模块,任一模块都能够做替换或扩展,其间可扩展的部分包括但不限于:

  • 可自定义生成运用水平画像(方针副本数)的详细算法以及算法所依赖的方针、参数等
  • 可扩展多级弹性支撑的作业负载、自定义 Pod 情况切换的逻辑等、可自定义改变期稳定性查看逻辑
  • 可自定义 Pod 缩容的优先级(关于支撑的作业负载)
  • ……

借助其高度可扩展定制的特性,用户能够很轻松地将 Kapacity 和其他开源上下游计划或者内部自建系统结合运用,各取所需、各取所长,极大提高了项目的适用广度。

现状和未来Kapacity 项目开源伊始,当前还处于前期的快速功能迭代阶段,现在发布的 v0.1 版别首要包含多级弹性、灰度改变等部分精细化弹性才能,以及基本的定时与呼应式扩缩容算法。在预计 6 月份发布的 v0.2 版别中,咱们会将上文说到的猜测式智能弹性算法敞开出来。

后续咱们会继续优先补齐 IHPA 弹性的各项基础才能,包括:

  • 流量突增辨认算法
  • 稳定性查看和改变熔断才能
  • 更完善的自定义方针支撑

未来,咱们也会连续开源蚂蚁在云原生容量领域沉积的其他技能,以及更多高阶才能,比方:

  • 保活切换(Standby 情况)和分时调度才能
  • 根据智能算法的 Pod 资源规格(CPU、内存等)推荐与 VPA 才能
  • 支撑多维度成本与碳排放核算的可视化操控台
  • ……

欢迎我们重视咱们继续更新的 RoadMap (kapacity.netlify.app/zh-cn/docs/…) 了解更多详细规划。

加入咱们

咱们致力于将 Kapacity 项目打造为一个敞开包容、有创造力的社区,后续的研发与评论等作业都会以开源的形式在社区通明进行。欢迎任何形式的参与,包括但不限于提问、代码贡献、技能评论等。十分等待收到我们的想法和反应,一同参与到项目的建造中来,推进项目健康向前发展,打造最先进的云原生容量技能。

项目主仓库的 GitHub 地址为:github.com/traas-stack…,欢迎各种 Issue、PR、Discussion。