女主宣言

上一期我们分享了《大规模分布式系统资源管理(一) 》,介绍了云游戏中的资源管理;

本期将继续介绍搜索引擎中的资源管理和AI 在资源管理中的应用。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

前期回顾

上一期《大规模分布式系统资源管理(一)》介绍了云游戏中的资源管理:

  • 云游戏:Server 端运行游戏,并将压缩的视频传给 Client;Client 只负责解压、显示视频。

  • 云游戏的挑战:延时、带宽、成本

  • 研究目标:优化成本、请求调度

    如何调度游戏请求,使得总的 server 运行时间最少。

  • 研究工作

    经典算法:Any Fit、First Fit、Best Fit

    新算法:基于请求结束时间预测的调度算法

    问题延伸:游戏部署开销

本期我们继续介绍:

  1. 搜索引擎中的资源管理

  2. AI 在资源管理中的应用

1

搜索引擎中的资源管理

实例分布调整

问题描述

1、IDC 中有多种 service,每个 service 有很多实例

2、对已有实例的分布进行调整,达到负载均衡

3、约束条件

  1. Resource Constraints (CPU, Memory, SSD)

    这个约束条件是关于资源的条件。调整过程中还有调整结束之前,都不能违反容量的限制。不能调整之后每台服务器加起来的容量超过了服务器的容量。

  2. Conflict Constraints

    为了容错或者备份等,有一些实例是不可以放在同一台服务器上的。比如来自同一个service的实例。

  3. No Service Interruption (Online)

    调整过程中是不能影响线上服务的。这是一个比较苛刻的条件。


挑战

大规模调整复杂度高、小规模调整效果差

如果用数学来描述的话其实这是一个带约束条件的整数规划问题。这个问题的变量非常多,如果用数学传统的解方程的方法解出来的话是不太可能的。

线上调整对安全性、可靠性有极高要求

不光不能影响正常的服务,也不能带来任何的风险。调整的过程中不能使服务器超过安全线等有非常多的限制。

调整过程约束条件多


如果想把一个实例从一台服务器挪到另一台服务器上,在这个实例在新的服务器上能正常工作之前,旧的实例是不能删除的。所以这个实例在这段时间其实在新的服务器和旧的服务器上占了2份资源。而这段时间正好是调整的过程。所以说这个资源并没有被释放掉。

调整算法

局部搜索

局部搜索有几种搜索的策略。

1、Shift: 移动一个实例到另一台 server

如果移动完之后,负载变得更均衡了,那么这个方法就是可行的。


2、Swap: 交换位于不同 server 上的两个实例

如果负载变均衡了,那么这个操作是可接受的。


3、BigMove:移动实例到一台 server, 同时移走 server 上若干实例


这个会比前2种操作更有效。尤其在移动比较大的实例,系统资源比较紧张的时候,这个策略非常有效。

例子:


开始时有三台服务器,数字表示它的CPU所占用的比例。每台服务器的容量如果是100的话,左边的是60,中间的是100,右边的是50。那么我们通过BigMove移动之后,先把右边 的50移动到左边这台机器上,再把20挪到右边的机器上,30挪到中间的机器上,整个的balance就会好很多。


刚刚讲的Transient Constraint在移动过程中有可能会超过容量的限制,那怎么办呢?有可能移动是有顺序的。比如想移动50过来,如果20不挪出去的话它是进不来的,那么这会分为两轮算法。

整个算法的描述是这样的。

以server为单位多轮迭代,直到所有server变为不可调状态
(1) 每次迭代选取当前cpu使用率最高的server进行调整
(2) 依次对server上的每一个实例进行如下操作:
   (a) 依次尝试shift, swap和BigMove调整
   (b) 如果上述任意一个尝试成功,本次迭代结束,跳至步骤(1)
   (c) 如果全部尝试失败,标记此实例为失败
(3) 如果server上所有的实例都失败,标记此server为不可调(以后不参与调
整),结束本次迭代,跳至步骤(1)

调整效果


CPU-Idle=1-CPU的利用率

即调整前,前1%的服务器的CPU利用率是1-27%=73%,整个系统CPU的平均值是53%,可见前1%的服务器还是比较高的。经过局部搜索算法调整之后可以降到46%,非常接近50%,所以这个算法是很有效的。

副本策略

实例副本

每个 service 通常有多个实例副本,以满足大量并发请求

一个 service 有多个实例,共同分发流量,目前每个实例的流量,据了解目前比较简单的流量的调度算法,通常是平均分配在这些实例上的。如果一个service有很多实例,实例是一样的,都是完成同一个服务的,那么通常流量是均匀分布的。这有利于做负载均衡。

副本个数影响单实例资源消耗


现在有一个问题是如何定副本的个数。这个问题也可以叫做配流管理。假如每个如果实例都是装在一个容器里的,那么需要定容器的容量。容器的容量定下来之后,副本的个数就定下来了。反之如果副本个数定下来了那么容器的容量也定下来了。

我们的工作主要是从资源利用率的角度来考虑副本的策略。比如优化响应时间优化负载均衡等,这一部分的目标是尽量用少的机器。假如有很多的service,现在要做的就是要用每一个service来决定用多少个副本,使得安全地装下所有的service所用的机器最少。

副本策略的影响

假如有A和B两个service,(单个实例内存的需求与实例个数没有关系),每个A和B的实例每个各需要0.5的内存,每个sever都有1单位的内存,

A: 总 CPU 需求 6.0(即需要6个机器), 单实例内存需求 0.5
B: 总 CPU 需求 4.0(即需要4个机器), 单实例内存需求 0.5

现在需要决定给A和B各自几个副本。


上图有3个策略。

左边的S1:给A 10个副本,B 5个副本,则A的每个单个实例CPU的需求是0.6,每个内存是0.5,所以一台机器只能放一个实例。所以A需要10个服务器,B需要5个服务器,一共需要15个服务器。

中间S2:给A  30个实例,单实例的CPU下降为0.2,则有10个A的实例可以和B的放在一起。这个策略一共占了30个服务器。

右边S3:给A和B各10个实例。那么A和B正好可以放在一台服务器上,需要10台服务器就可以了。

所以副本个数对最后所用机器容量有很大的影响。

目标

寻找合理的副本策略,使得所用资源最少

算法

1、全局搜索
时间复杂度高、结果较优—不太适合在动态过程中应用,只适合机房初始建时

2、最少副本策略
副本最少、单实例较大,不利于调整

3、固定资源占比策略
异构场景不友好

4、Online 调整策略

效果


每台 server 同时只能运行几个游戏

如果用户比较多的话,那么运营商就要提供很多的服务器。服务器的成本很高,包括它的运营成本维护成本等。云游戏收用户的钱可能还抵不过服务器的钱或者网络的钱。所以成本一直是云游戏里一个很大的挑战。

2

AI 在资源管理中的应用

磁盘故障预测

目标

利用硬盘S.M.A.R.T.信息,预测硬盘故障,实现主动容错。

数据集


特征选择

方法

  1. 十分位分布 (quantile distributions)

  2. 秩和检验 (rank-sum test)

  3. 标准分 (z-score)

  4. 反向安排检验 (reverse arrangement test)

属性

  1. “W”数据集:选取10个基本属性+3个差值属性

  2. “S”,“M”数据集:选取7个基本属性+3个差值属性

已有成果

评价标准转变
二分类 → 剩余寿命 → 迁移率/误迁移率

二、实验结果

1.二分类——预测硬盘是否将要发生故障


2.剩余寿命预测——抓住问题的时序特征

CBN模型:剩余寿命区间预测准确率达到60%
RNN模型:剩余寿命区间预测准确率达到40%~60%

3.迁移率和误迁移率——针对分布式存储系统的评价指标

直接反映预测模型对危险数据的保护效果



三、引入到分布式存储系统中+预警处理机制


负载预测

问题描述

对大型数据中心负载预测最终目的:提供高效资源管理系统。

在硬件故障预测的基础上发展到分布式系统软件应用的层面对负载进行一些预测。主要以大型数据中心的sever上的CPU,硬盘的占用率体现出对业务的请求引起的变化来进行一些预测。相应的我们构造一些机器学习的模型来预测一段时间内sever上是否发生异常事件。

方法:

利用机器学习来预测工作负载
基于预测结果考虑改善资源管理的策略

开展工作

数据集:来自百度的面向数据库服务的数据中心。
5466台host, 67天,每隔10min的负载记录
(CPU,MEM,DISK)。
模型: ARIMA, LR, SVM, NB, DT, RF。





DDoS 攻击检测


问题定义

目标

寻找合理的高检测率、 低误报率的识别策略

挑战
1.攻击流与正常流相似度高
2.伪造攻击源
3.攻击种类繁多
4.实时检测开销大

研究工作

算法

1.K-Nearest Neighbor
2.Support Vector Machine
3.Decision Tree
4.Random Forest

特征选择

1.Chi-Squared Test
2.Pearson Correlation Coefficient


研究成果

随机源攻击


固定源攻击


总结

这两期文章我们从云游戏中的资源管理、搜索引擎中的资源管理、AI 在资源管理中的应用三个方面介绍了大规模分布式系统资源管理。

希望对大家有所帮助~


HULK一线技术杂谈

由360云平台团队打造的技术分享公众号,内容涉及云计算、数据库、大数据、监控、泛前端、自动化测试等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享

扫描下方
二维码
了解更多内容

大规模分布式系统资源管理(二)相关推荐

  1. 大规模分布式系统资源管理(一)

    女主宣言 如今大火的机器学习和人工智能等技术如何应用在资源管理方面?我们请到了南开大学的王刚和李雨森教授前来360,分享他们以及所在课题组在大规模分布式系统资源管理方面的研究工作,内容包括云游戏系统中 ...

  2. Dapper,大规模分布式系统的跟踪系统

    文章目录 Dapper,大规模分布式系统的跟踪系统 概述 1.介绍 1.1 文献的总结 2.Dapper的分布式跟踪 2.1 跟踪树和span 2.2 植入点 2.3 Annotation 2.4 采 ...

  3. 【转载】专访阿里陶辉:大规模分布式系统、高性能服务器设计经验分享

    关注陶辉很长时间,初次对陶辉的了解还是在我们CSDN的博客上,从2007年开始写博客,一直到现在,如果不是对技术的追求和热爱,以及热爱分享的精神,我想不是很多人能坚持下来,拥有多年大型互联网公司的从业 ...

  4. 专访阿里陶辉:大规模分布式系统、高性能服务器设计经验分享

    专访阿里陶辉:大规模分布式系统.高性能服务器设计经验分享 发表于2014-06-27 16:25|18197次阅读| 来源CSDN|55 条评论| 作者魏伟 云计算Nginx开源 摘要:先后就职于在国 ...

  5. 专訪阿里陶辉:大规模分布式系统、高性能server设计经验分享

    http://www.csdn.net/article/2014-06-27/2820432 摘要:先后就职于在国内知名的互联网公司,眼下在阿里云弹性计算部门做架构设计与核心模块代码的编写,主要负责云 ...

  6. 《大规模分布式系统架构与设计实战》

    <大规模分布式系统架构与设计实战> 基本信息 作者: 彭渊 丛书名: 大数据技术丛书 出版社:机械工业出版社 ISBN:9787111455035 上架时间:2014-2-21 出版日期: ...

  7. 飞天5K实战经验:大规模分布式系统运维实践

    摘要:随着阿里体量越来越大,数据也在呈几何倍数增长.因此,在运维工作上已很难找到其他企业的成功经验来借鉴,但又不能凭空揣测解决方案.本文详解了阿里飞天5K实战经验,带你了解大规模分布式系统运维实践. ...

  8. 【温故而知新】分布式系统(二)

    分布式系统的 CAP 理论 时间:2022年12月12日 作者:小蒋聊技术 [温故而知新]分布式系统(二)·分布式系统的 CAP 理论_小蒋聊技术_免费在线阅读收听下载 - 喜马拉雅手机版欢迎收听小蒋 ...

  9. 论大规模分布式系统缓存设计策略

      声明:本文为本人在软考系统架构设计师备考期间的练手写作,不保证内容的原创性与正确性,仅供参考,请勿照抄和用于学术论文等正规场合,因不当使用产生后果一律自负. 摘要   2019年3月,我单位联合某 ...

最新文章

  1. 去掉DataGridView最后一行的空白行,删除空白行
  2. html rotate()函数,CSS rotate()用法及代码示例
  3. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计
  4. python读取字典数据_Python:读取列表[{}]中的字典数据
  5. sh执行文件 参数传递_sh 脚本执行sql文件传参数
  6. Altium Designer导入pcb原件之后都是绿的
  7. Button with Round Progress
  8. 离婚冷静期有用吗?全国哪个省份的情侣最想结婚?大数据告诉你
  9. kali 19.2 搭建ftp服务器
  10. 主机安全加固终端安全管理
  11. 5c5cSs,暗光提升明显 iPhone 5s/5c/5样张对比
  12. 计算机一直进入安全模式开机,电脑启动时自动进入安全模式怎么办
  13. 使用seaborn绘制热图
  14. Vue Events模块原理分析
  15. 最详细职场面试题目(一)
  16. 数据结构 | 二叉树 先根、中根、后根遍历的非递归算法
  17. java加载gif动画图片
  18. c语言%hx输出大写,C语言输出函数printf
  19. A2021-A2022年度项目总结(二)
  20. 统一配置中心对比介绍

热门文章

  1. 请拆招:将两个已排序集合分解成两个独立部分的集合和一个共有部分的集合?...
  2. SpringBoot集成Log4j2框架
  3. linux下基于源码软件安装的那些事
  4. mysql中怎么实现Apriori_关联规则算法Apriori的学习与实现
  5. JS:正则表达式详细语法基础
  6. Windows常用快捷键整理
  7. 教你直白的理解贝塞尔曲线???
  8. 全面改革:解读 Vue 3.0 的变化
  9. 【Hadoop】HIVE 数据表 使用
  10. 今天看到一篇小册子上的话