加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源
摘要:本文将探讨智能资源调度在华为云DevOps上的应用与实践。
本文分享自华为云社区《加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源》,作者: DevAI。
1. 背景
随着云计算、微服务、容器等技术的蓬勃发展,以及云原生的敏捷,适应性强,易监视,云原生技术的落地成为了各团队重点关注和亟待解决的问题。DevOps作为一站式平台,将云原生开发模式融合到产品中,为广大开发者提供好用易用的云原生研发管理解决方案。开箱即用的敏捷项目管理、代码管理、自动化测试管理,CICD流水线等功能,让开发、测试、部署全流程与云原生底座平台无缝结合,进一步降低开发者上手云原生技术的门槛,加快云原生技术转型,大幅提升软件生产效率。DevOps各环节如下图所示:

2. 云化DevOps面临的痛点问题:
1)高峰任务突增,威胁系统可靠性
整点定时任务突增,排队数量过万,容易导致任务超时失败,同时威胁代码仓、构建系统、包仓库及测试系统可靠性。

2)资源平均空闲时间长,利用率整体偏低
① 资源池平均利用率低,抽样统计CPU利用率低, RAM利用率低。
② 虚拟机数目以峰值任务做静态配备,未按需做动态调整,容易导致大量机器在非峰值时段空闲。
③ 任务调度未充分利用虚拟机CPU、RAM等实时信息与任务实时信息,导致机器利用率低。

3. 云化DevOps资源调度各环节场景分析及解决方案
场景一:代码托管服务资源调度
问题描述:分布式版本控制代码仓服务将大大提高开发者协同开发,支撑项目代码托管,支撑大规模并发作业,千人团队协作,亿级代码下载,支撑大规模团队写协同作业,高并发MR代码提交,其中高并发,负载不均等问题将会对系统稳定性造成致命的影响。

解决方案:副本均衡,分布策略,提高下载速率
代码仓弹性调度,根据用户流量建立模型进行提前动态副本注入,综合考虑IO,CPU负载,并发,磁盘大小等多因素,探究目标因子与优化目标的关联性(仓库大小、并发下载对机器性能的影响)及有限空间装箱问题(磁盘空间有限),改善负载均衡、安全性、性能和管理,以提供快速、不间断的应用访问。如下图所示:

与此同时,为提升系统稳定性,减少系统GC对用户行为造成的冲突影响,我们开发了基于智能GC时间段推荐系统,如下图所示,在合理时间段进行GC,减少系统GC对用户操作造成的冲突,提升系统稳定性,有效减少冲突率。

场景二:代码检查,编译构建服务资源调度
问题描述:虚拟机数目以峰值任务做静态配备,容易导致大量机器在非峰值时段空闲,任务调度未充分利用虚拟机CPU、RAM等实时信息与任务实时信息,导致机器利用率低, 虚拟机数目配置较低又容易造成任务排队数过多,严重影响用户体验。为此我们提出了共享资源池的弹性伸缩调度服务。
解决方案一: 虚拟机环境下资源池共享的弹性调度
通过弹性伸缩调控资源水位和任务智能调度实时最优化调整资源消费,闲时将资源释放到共享资源池,忙时从资源池中进行资源扩充,提升构建/代码检查资源使用效率。如图所示:

其中采取的弹性伸缩模式:
定时模式:配置定时任务,根据产品线不同配置不同的定时任务进行弹性扩张和缩容
动态模式:根据实时任务数及监控数据,进行自动的资源增加或减少
混合模式:定时及动态模式兼容,按需按时分配。

解决方案二:基于容器的智能化预测弹性资源调度
虚拟机的启动时间可能是分钟级的,而Docker容器创建是秒级别同时容器化的环境隔离,资源控制,文件系统,使得更加灵活及轻量级,与此同时云上资源使用预测算法面临如下挑战:波形的多样性(平稳型、突发型、随机型、条形码型等),任务规格多样性,业务周期不断变化,周期性不明确。如下图所示:

通过挖掘连续时间维度上的变化特征,如任务特征,阻塞情况,CPU使用情况,MEM使用情况等,采用预测模型预测下一阶段需要的资源数,同时增加模型峰值检测能力,应峰能力,提前进行资源分配,减少阻塞同时,降低资源浪费情况,如图所示:

场景三:部署环节版本包资源调度
问题描述:产品软件包放置地域与多数开发者地域不一致会导致大量广域网传输,占用出口带宽,造成网络拥塞和仓库性能问题。
解决方案一:资源调度中的流量分析
通过分析业务日志,考虑仓库负载、开发者地域等多种因素来建模,推荐软件包最佳地域,节约带宽资源,同时平衡仓库负载。如下图所示,监测某版本包流量主要来源于上海,经过对仓库各因素模型分析,推荐部署地为廊坊,可提升速度XX%。

解决方案二:资源调度中的经典装箱算法
从云服务提供商来说,降低1%资源碎片 = 成百上千万美元的成本下降, 因此如何提升分配率将大大降低成本,提升竞争力,从提升分配率上看,资源调度中可以应用经典的装箱算法,与传统的装箱算法相比我们提供了多种约束条件共存的装箱优化算法,解决了单一难以满足可持续资源效能优化要求,有效提升资源利用率。

4. 小结
本文对智能资源调度服务在DevOps各环节中的应用问题进行了分析并给出了相应的解决方案,致力于使用智能算法,实现“合理调度资源,最优供给”目标,在提高资源利用率,降低成本,提升软件生产效率,降低风险等方面起到显著作用。
作者:华为云PaaS技术创新Lab
加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源的更多相关文章
- 云原生技术赋能ISV实现应用现代化
日前,由BP商业伙伴主办,中国开源云联盟和云原生应用现代化联盟协办的2021-2022云计算生态峰会成功举办.头部ISV代表.最终用户和云原生技术专家等与会各方围绕"云原生技术赋能ISV&q ...
- CNCF 旗下首个为中国开发者量身打造的云原生课程,《CNCF x Alibaba 云原生技术公开课》即将上线
伴随着以 Kubernetes 为代表的云原生技术体系的日益成熟以及 CNCF 生态的逐渐壮大,“云原生”已然成为了未来云计算时代里一个当仁不让的关键词.但是,到底什么是“云原生”?云原生与 CNCF ...
- 重磅课程|《CNCF x Alibaba 云原生技术公开课》正式开讲!
到底什么是“云原生”?云原生与 CNCF.Kubernetes 是什么关系?作为云计算时代的开发者和从业者,我们该如何在“云原生”的技术浪潮中站稳脚跟,将云原生落地.实现个人的自我升级呢? 201 ...
- 【云享专刊】开源遇上华为云,OCP架构变身“云原生框架”
摘要:华为云DTSE团队出品云原生改造指南,助力轻松实践OCP上云. 本文分享自华为云社区<[云享专刊]开源遇上华为云,OCP架构变身"云原生框架">,作者:华为云社区 ...
- 网易云通过KCSP认证,云原生技术实力再获认可
近日,网易云通过KCSP认证,正式成为CNCF官方认可的Kubernetes服务提供商,也标志着网易云在云原生领域的技术实力得到了业界认可. Kubernetes是第一个从CNCF毕业的开源项目,凭借 ...
- 《CNCF × Alibaba云原生技术公开课》知识点自测(一):第一堂“云原生”课
(单选)1.容器启动后,我会时常 SSH 进入到容器里然后写很多文件.请问这破坏了云原生理念了吗? A. 否 B. 是 (单选)2.云原生架构必须选型 Kubernetes 方案. A. 否 B ...
- 牛年 dotnet云原生技术趋势
首先祝大家:新年快乐,牛年大吉,牛年发发发! 2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消,合同被搁置,项目被推迟,一切似乎都停止了.但是我们却见证了I ...
- 第3届云原生技术实践峰会(CNBPS 2020)重磅开启,“原”力蓄势待发!
CNBPS 2020将在11月19-21日全新启动!作为国内最有影响力的云原生盛会之一,云原生技术实践峰会(CNBPS)至今已举办三届. 在2019年的CNBPS上,灵雀云CTO陈恺喊出"云 ...
- 金融云原生漫谈(三)|银行云原生基础设施构建:裸金属VS虚拟机
在金融行业数字化转型的驱动下,国有银行.股份制银行和各级商业银行也纷纷步入容器化的进程. 如果以容器云上生产为目标,那么整个容器云平台的设计.建设和优化对于银行来说是一个巨大的挑战.如何更好地利用 ...
- AWS、阿里云、Azure、Google Cloud、华为云、腾讯云 各种云服务器价格收费对比(上)
他来了,他来了~ 他带着六家公有云厂商的资源价格走来了~ 不久前,我们上线了一款小工具——[多云成本计算器]1.0版,公众号菜单栏可以直接体验.详细介绍可以戳这里<3秒即得最低价,速石上线「多云 ...
随机推荐
- SpringBoot如何缓存方法返回值?
目录 Why? HowDo annotation MethodCache MethodCacheAspect controller SpringCache EnableCaching Cacheabl ...
- 传纸条(lgP1006)
终于有一道一遍过的题了/kk/kk 发现前几道都很难(总之暂时没想出来)就先把这个写了. 其实这题四维 dp 好像能过,但既然写了就写正解吧... 因为路径正着走和反着走都是一样的,所以问题就是求从左 ...
- Vivado生成bitstream时报错[Opt 31-67] Problem: A LUT3 cell in the design is missing a connection on input pin I1, which is used by the LUT equation
这个原因主要是因为有一个引脚没有用到,解决方法. 1.打开Schematic. 2.根据提示的模块去找,比如说我的报错. [Opt 31-67] Problem: A LUT3 cell in the ...
- 基础练习:FJ的字符串
问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "AB ...
- 双指针:盛最多水的容器(4.18leetcode每日一题)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...
- 微信小程序动态生成表单来啦!你再也不需要手写表单了!
dc-vant-form 由于我们在小程序上涉及到数据采集业务,需要经常使用表单,微信小程序的表单使用起来非常麻烦,数据和表单是分离的,每个输入框都需要做数据处理才能实现响应式数据,所以我开发了dc- ...
- GPTs大受欢迎但问题多,企服软件厂商的AI Agent更被B端客户器重
GPTs大受欢迎但问题多,企服软件厂商的AI Agent更被B端客户器重 比尔盖茨预言智能体是下个平台,超自动化平台的AI Agent更靠谱? 以GPTs为代表的AI Agent只是玩具?揭秘真实可用 ...
- 安卓端出现https请求失败的一次问题排查
背景 某天早上,正在一个会议时,突然好几个同事被叫出去了:后面才知道,是有业务同事反馈到领导那里,我们app里面某个功能异常. 具体是这样,我们安卓版本的app是禁止截屏的(应该是app里做了拦截), ...
- AtCoder_abc326
T1 2UP3DOWN 简单的if判断,做题一分钟,翻译十分钟... 代码: #include<bits/stdc++.h> using namespace std; int main() ...
- MongoDB的聚合笔记
1,聚合 聚合(aggregate)主要用于计算数据,类似sql中的sum().avg(). 常用的表达式如上图. 1.1,aggregate 语法 语法: db.集合名称.aggregat ...