摘要:本文将探讨智能资源调度在华为云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: 增速,节源的更多相关文章

  1. 云原生技术赋能ISV实现应用现代化

    日前,由BP商业伙伴主办,中国开源云联盟和云原生应用现代化联盟协办的2021-2022云计算生态峰会成功举办.头部ISV代表.最终用户和云原生技术专家等与会各方围绕"云原生技术赋能ISV&q ...

  2. CNCF 旗下首个为中国开发者量身打造的云原生课程,《CNCF x Alibaba 云原生技术公开课》即将上线

    伴随着以 Kubernetes 为代表的云原生技术体系的日益成熟以及 CNCF 生态的逐渐壮大,“云原生”已然成为了未来云计算时代里一个当仁不让的关键词.但是,到底什么是“云原生”?云原生与 CNCF ...

  3. 重磅课程|《CNCF x Alibaba 云原生技术公开课》正式开讲!

    ​ 到底什么是“云原生”?云原生与 CNCF.Kubernetes 是什么关系?作为云计算时代的开发者和从业者,我们该如何在“云原生”的技术浪潮中站稳脚跟,将云原生落地.实现个人的自我升级呢? 201 ...

  4. 【云享专刊】开源遇上华为云,OCP架构变身“云原生框架”

    摘要:华为云DTSE团队出品云原生改造指南,助力轻松实践OCP上云. 本文分享自华为云社区<[云享专刊]开源遇上华为云,OCP架构变身"云原生框架">,作者:华为云社区 ...

  5. 网易云通过KCSP认证,云原生技术实力再获认可

    近日,网易云通过KCSP认证,正式成为CNCF官方认可的Kubernetes服务提供商,也标志着网易云在云原生领域的技术实力得到了业界认可. Kubernetes是第一个从CNCF毕业的开源项目,凭借 ...

  6. 《CNCF × Alibaba云原生技术公开课》知识点自测(一):第一堂“云原生”课

    (单选)1.容器启动后,我会时常 SSH 进入到容器里然后写很多文件.请问这破坏了云原生理念了吗? A. 否   B. 是 (单选)2.云原生架构必须选型 Kubernetes 方案. A. 否  B ...

  7. 牛年 dotnet云原生技术趋势

    首先祝大家:新年快乐,牛年大吉,牛年发发发! 2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消,合同被搁置,项目被推迟,一切似乎都停止了.但是我们却见证了I ...

  8. ​第3届云原生技术实践峰会(CNBPS 2020)重磅开启,“原”力蓄势待发!

    CNBPS 2020将在11月19-21日全新启动!作为国内最有影响力的云原生盛会之一,云原生技术实践峰会(CNBPS)至今已举办三届. 在2019年的CNBPS上,灵雀云CTO陈恺喊出"云 ...

  9. 金融云原生漫谈(三)|银行云原生基础设施构建:裸金属VS虚拟机

    在金融行业数字化转型的驱动下,国有银行.股份制银行和各级商业银行也纷纷步入容器化的进程.   如果以容器云上生产为目标,那么整个容器云平台的设计.建设和优化对于银行来说是一个巨大的挑战.如何更好地利用 ...

  10. AWS、阿里云、Azure、Google Cloud、华为云、腾讯云 各种云服务器价格收费对比(上)

    他来了,他来了~ 他带着六家公有云厂商的资源价格走来了~ 不久前,我们上线了一款小工具——[多云成本计算器]1.0版,公众号菜单栏可以直接体验.详细介绍可以戳这里<3秒即得最低价,速石上线「多云 ...

随机推荐

  1. LINUX基础知识和命令 二

    LINUX alias (别名) 自定义命令=原始命令 原始命令中有特殊符@#%()请打上 引号,单双无所谓 例:vim /etc/sysconfig/network-scripts/ifcfg-en ...

  2. 组合的输出 题解(lgP1157)

    一看就是 dfs 然而窝并不会做 调了一个多小时才调出来.漏洞连篇.(第一次写的基本没有对的地方QAQ 题解见注释. #include<bits/stdc++.h> using names ...

  3. Python 模块:创建、导入和使用

    什么是模块? 将模块视为代码库.模块是一个包含一组函数的文件,您想要在应用程序中包含这些函数. 创建一个模块 要创建一个模块,只需将要包含在其中的代码保存在扩展名为 .py 的文件中: 示例:将以下代 ...

  4. 使用单卡v100 32g或更低显存的卡,使用peft工具qlora或lora混合精度训练大模型chatGLM2-6b,torch混合精度加速稳定训练,解决qlora loss变成nan的问题!

    最近新换了工作,以后的工作内容会和大模型相关,所以先抽空跑了一下chatGLM2-6b的demo,使用Qlora或lora微调模型 今天简单写个文档记录一下,顺便也是一个简单的教程,并且踩了qlora ...

  5. [Python急救站课程]太阳花的绘制

    太阳花的绘制 from turtle import * color('red', 'yellow') # 分别定义填充颜色 begin_fill() while True: forward(200) ...

  6. 2023-11-08:用go语言,字符串哈希原理和实现 比如p = 233, 也就是课上说的选择的质数进制 “ 3 1 2 5 6 ...“ 0 1 2 3 4 hash[0] = 3 * p的0

    2023-11-08:用go语言,字符串哈希原理和实现 比如p = 233, 也就是课上说的选择的质数进制 " 3 1 2 5 6 ..." 0 1 2 3 4 hash[0] = ...

  7. Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍

    Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍 目录 Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍 一.前置原则 二.一切皆组合 2.1 一切皆组合 2.2 垂直组合 2.2.1 第 ...

  8. go基础-函数

    概述 在任何语言中函数都是极其重要的内容,业务功能都是由一个或多个函数组合完成.go语言是函数式编程语言,函数是一等公民,可以被传递.有函数类型,go语言有三种类型的函数,普通函数.匿名函数(Lamb ...

  9. Miniconda安装及搭建

    Miniconda安装配置 下载Miniconda Miniconda下载地址 最新版 Miniconda For Windows 下载链接 Windows 安装配置 修改Powershell执行策略 ...

  10. Video教程的Domain设计

    Domain设计 下面将介绍Video的表设计,和模型定义. 表设计 Videos设计 /// <summary> /// 视频聚合 /// </summary> public ...