写点什么

大规模分布式系统资源管理(二)

2019 年 11 月 27 日

大规模分布式系统资源管理(二)

上一期我们分享了《大规模分布式系统资源管理(一) 》,介绍了云游戏中的资源管理;本期将继续介绍搜索引擎中的资源管理和 AI 在资源管理中的应用。


1 搜索引擎中的资源管理

实例分布调整

问题描述

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


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


3、约束条件


  • Resource Constraints (CPU, Memory, SSD)

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

  • Conflict Constraints

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

  • 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)


© 如果全部尝试失败,标记此实例为失败


(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.信息,预测硬盘故障,实现主动容错。


数据集


特征选择

方法


十分位分布 (quantile distributions)


秩和检验 (rank-sum test)


标准分 (z-score)


反向安排检验 (reverse arrangement test)


属性


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


“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 在资源管理中的应用三个方面介绍了大规模分布式系统资源管理。


希望对大家有所帮助~


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/cIRop16XppLMl95zH5kbHA


2019 年 11 月 27 日 12:15226

评论

发布
暂无评论
发现更多内容

spring中让你眼前一亮的代码技巧

AI乔治

Java spring 架构 微服务

理论 + 标准 + 工程 —— 阿里云视频云编码优化的思考与发现

阿里云视频云

阿里云 视频编码 视频算法 视频处理

从中国企业进入IEC最高决策机构,看科技领先的产业价值与用户价值

脑极体

特权访问管理(PAM)即服务

龙归科技

工业互联网的脖子被卡死了?

浪潮云

工业互联网

一篇文章了解CI/CD管道全流程

禅道项目管理

DevOps 持续集成 持续交付

当造车成为风潮,谁帮助“造车党”连接未来?

脑极体

GitHub持续霸榜!2021年Java核心知识:面试突击版

Java架构之路

Java 程序员 架构 面试 编程语言

代码回现 | 如何实现交易反欺诈?

VoltDB

数据分析 金融科技 VoltDB

如果以这样的方式,你愿参与到碳普惠行动中吗?

CECBC区块链专委会

区块链

想来百万流量技术公众号发布文章吗? InfoQ 开放内容平台了!

InfoQ 的朋友们

活动专区 InfoQ 的朋友们

iOS--面试题:多线程

ios 面试 多线程

架构实战营 - 模块 2- 作业

carl

架构实战营

云上接单不空跑 京东云助力“佬司机”为货运物流业降本增效

CECBC区块链专委会

京东云

全国沿海港口首个区块链木材业务服务平台上线试运行,“区块链+港口”撬动数千万元“福利”

CECBC区块链专委会

港口

自学Java走进阿里,仅用了六个月,他是怎么做到的?

Java架构师迁哥

小厂逆袭美团|5年经验|一二三面经,已拿offer|

Java架构追梦

Java 架构 面试经历 面试题总结 美团Offer

硬核!阿里内部这份《Java面试核心知识手册》在Github上已获赞高达89.7K!

Java架构之路

Java 程序员 架构 面试 编程语言

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

Java架构追梦

Java 架构 字节跳动 面试 面试经历

基础到源码一键搞定:阿里大牛手码651K字的JDK源码速成笔记太强了!

Java王路飞

Java 源码 程序员 架构 面试

每天学一个 Linux 命令:dnf

Machine Gun

Linux 网络安全 渗透测试 WEB安全

想来百万流量技术公众号发布文章吗? InfoQ 开放内容平台了!

InfoQ写作平台官方

活动专区

APM-技术专题-监控系统选型

李浩宇/Alex

APM 监控

卧槽,误删数据库了,会被开除吗?

AI乔治

Java 数据库 sql 架构 SQL语法

IPFS挖矿是不是合法的?IPFS有什么投资价值?

投资矿机v:IPFS1234

IPFS挖矿是不是合法的 IPFS有什么投资价值

IPFS矿机配置要求有哪些?IPFS矿机有哪些好的品牌?

投资矿机v:IPFS1234

IPFS矿机有哪些好的品牌 IPFS矿机配置要求有哪些

HikariCP-技术专题-配置介绍和使用

李浩宇/Alex

2021金三银四:狂刷398道Java最新MySQL笔记;成功收获9个Offer

比伯

Java MySQL 编程 架构 计算机

聪明人的训练(十四)

Changing Lin

四月日更

一个CURD三年的Java程序员刷完这份《阿里面试指南(恒山版)》,居然斩获了十七个offer

Java架构之路

Java 程序员 架构 面试 编程语言

合约跟单交易系统开发搭建

薇電13O25249123

数字货币

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

大规模分布式系统资源管理(二)-InfoQ