虚拟化与云计算硬核技术内幕(29) —— 健康码与孙大圣(下)

2022-09-08 17:00:05 浏览数 (2)

上回我们说到,T姐设计了某市健康码的基础架构,能够处理高峰期每秒百万并发用户的亮码和扫码需求。那么,T姐是怎么样让云平台实现自动根据健康码系统的业务访问量来分配和销毁承载业务的虚拟机的呢?

原来,这一特性叫做“弹性伸缩”。

弹性伸缩(AS)是云计算平台中一项非常重要的功能。弹性伸缩能够通过监测一批云服务器CVM的负载,来决定是否要增加一些虚拟机,或销毁一些虚拟机,从而做到计算资源自动适应业务的需求。

小E对弹性伸缩的内在机制很好奇,想学习一下这种自动控制的实现,于是网购了一本钱学森的《工程控制论》,在工位看了起来。

很快,小E的头垂得越来越低,仿佛书中有一群瞌睡虫一样,钻进了小E的鼻孔……

小E睁开眼睛的时候,发现自己身边有一群金发碧眼的人,一身上下的衣服都是煤灰,手拿着各种工具。小E的身前是一个冒着黑色煤烟和白色蒸汽的锅炉,锅炉推动着活塞往复工作,发出巨大的摩擦声和尖利的蒸汽喷射声。

小E摸了摸头,回忆了一下历史课本,难道自己穿越到了工业革命时期的英国?

这时,一个白色卷发的小个子男人走来,观察着这台机器。

小E的眼前突然出现弹幕:

James Watt

小E连忙上去问:“Are you Mr. James?”

小个子男人一回头,看见一个亚洲姑娘,笑了笑。

两个人打开了话匣子。

原来,蒸汽机并不是瓦特的发明,而是瓦特的前辈——英国工程师纽卡门。

但是,纽卡门发明的蒸汽机需要人工监视运行速度,在转速过高或过低的时候,需要人工调节蒸汽阀门,避免转速过高损坏机器,或转速过低导致停机。

因此,瓦特对蒸汽机做了一个小改进:

图中,蒸汽机的转速增加的时候,两个小球会由于离心力的作用而被甩起来,从而控制一系列机械装置来调节蒸汽机的节气阀,让蒸汽机的速度得到控制。这就是最早的自动控制装置,使得蒸汽机能够成为自动工作的工业原动机。

瓦特给小E描述了自己得意的发明。

小E问瓦特:

“那你知道后来你的发明被英国侵略者用来开动军舰贩卖鸦片烟么?”

此时,一个声音从遥远的地方传来,坚定而自信:

“外国人能搞的,难道中国人不能搞?”

小E眼前一闪,发现自己身处一片湛蓝的大海上的航船中,身边都是中国人的面孔。桌上的台历上印着: 1980.5.18。

突然,一声巨响传来,远处的海面激起巨浪,很快,船身剧烈晃动,大家虽然难以站立,却都在异口同声地欢呼。

弹幕: 1980年5月18日,我国向太平洋预定海域发射的第一枚洲际导弹运载火箭获得了圆满成功。

一道白光闪过,小E回到了知春路49号,发现自己趴在桌上,手边还放着《工程控制论》。

原来,云计算平台中,弹性伸缩的模块本质上是一个自动控制系统,与瓦特发明的蒸汽机控制系统,钱学森带领大家研制的惯性导航系统有着相同的工作原理:

在导弹中,受控系统是弹体本身,调节装置是组合导航系统(惯性导航与其他导航的组合,想了解这个的可以请方老师吃饭聊)。组合导航系统会采集导弹的加速度、角速度和角加速度等数据,计算出导弹的各方向速度、俯仰、滚转和偏航角度,操纵导弹稳定姿态,最终击中目标。

而在云计算平台中,受控系统是宿主机及宿主机上运行的虚拟机CVM,调节装置就是弹性伸缩组件。弹性伸缩组件可以实时监控虚拟机的一系列状态,如:CPU 使用率;内存使用率;内网出入吞吐量和外网出入吞吐量等,进行聚合后触发伸缩操作。

如一个伸缩组内目前有3个VM,定义伸缩策略:

CPU 利用率在5分钟内的平均值大于80%,发生3次

那么,在5分钟内,Hypervisor监控到3个VM的CPU利用率大于80%(实际上是分配给VM的vCPU),就会触发弹性伸缩,生产出新的VM来。

小E学习了弹性伸缩的原理以后,开心地去找方老师分享。方老师旁边坐着的WK老师突然问小E:

“虚拟机生产需要的时间是多少?”

“1分钟吧。”小E回答。

“那如果1分钟内,业务高峰过去了,是不是生产出来的虚拟机就浪费了呢?”

“啊..那弹性伸缩会让虚拟机再缩容。”

WK老师推了推眼镜,问:

“那有没有在10秒钟甚至5秒钟内启动更多实例分担业务的办法呢?”

小E呆住了。

这正是:

一从大地起风雷,便有精生白骨堆。

僧若愚氓犹可训,妖为鬼蜮便成灾。

金猴奋起千钧棒,玉宇澄清万里埃。

今日欢呼孙大圣,只缘妖雾又重来。

欲知小E如何找到更高效的扩容方法,让健康码的业务更加健康,战胜奥密克戎这样的妖雾,请看下回分解。

0 人点赞