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

2022-09-08 16:59:05 浏览数 (1)

在前几期,我们详解了虚拟化的各种底层机制,以及编排算法等。实际上,我们可以小结出一条规律:

在虚拟机中,操作系统和应用程序是不需要知道自己到底是不是在虚拟机中运行的。一个在物理机上运行正常的操作系统或应用程序,其代码不需要做任何修改,就可以运行在虚拟机上。

实际上,无论是部署物理服务器,还是虚拟机,或是云平台编排发放的虚拟机,最本质的需求是让它运行应用。那么,按照我们前面总结出的规律,我们将操作系统和应用打包成为一个整体,无论是在物理服务器上,还是在虚拟机上,它都能够正常地运行。

如图所示,在服务器上运行了操作系统,操作系统上运行了JAVA容器JBoss,其中真正提供服务的是程序员编写的JAVA代码生成的JAR包。

当我们把OS/JBoss/JAR这三件套完整地打包复制到虚拟机中,其运行的行为理论上会和物理机上完全一致。这就是云计算对外提供服务的理论基础。

继而,在我们在《虚拟化与云计算硬核技术内幕 (4) —— 马克斯韦伯的启示》中提到的那样,依托虚拟化技术,系统工程师们可以在一个拥有数十个CPU核心/线程的服务器上,部署一批虚拟机,充分利用物理服务器的计算资源。

话分两头。

T姐正在办公室学习古典文学名著《废都》,这时,小E跑了过来,拍了拍T姐,告诉T姐:

“T姐,《废都》故事发生的地方,健康码坏掉啦!”

T姐头都不抬。

小E又拍了拍T姐:

“T姐,你不是咱们这个城市健康码系统的总架构师么?你不怕咱们城市也出这种问题么?”

T姐继续看书,回了一句:

“毛主席说,金猴奋起千钧棒,玉宇澄清万里埃……”

小E正在纳闷,旁边的X同学手机响了:当当等当 当等当当。。。(西游记序曲)

小E顿时脑补了《西游记》的画面:美猴王拔下一撮毛,吹一口气,复制出一群小猴……

原来,虚拟机具备一个特性,叫做虚拟机克隆。

所谓虚拟机克隆,就是基于前面提到的虚拟机镜像,复制出一批虚拟机来。

小E自从上学起,就是个喜欢鼓捣计算机的独立自主的好姑娘,动手安装操作系统当然不在话下。在安装好操作系统以后,小E会使用Ghost软件,将系统盘制作为镜像文件,这样,当印度人写的Windows系统崩溃以后,小E只需要通过Ghost镜像恢复操作系统即可。

很快,整个宿舍楼的妹子们都知道小E会这个手艺了,从而求小E帮忙装系统。小E用自己的Ghost镜像,5-10分钟就可以装好一台电脑的系统。

同样地,在虚拟化系统中,也可以利用类似Ghost的机制,将安装好操作系统及操作系统上运行的应用的虚拟机的系统盘制作为镜像。

以前面图中的应用作为一个栗子:

把部署了CentOS JBOSS JAR包的虚拟机系统盘(实际上是云上的块存储实例),复制为镜像,再把镜像复制到新的块存储实例,就可以利用新的块存储实例作为系统盘,启动一台新的虚拟机了。如下图所示:

在图中,我们可以将虚拟机挂载的系统盘(实际上是CBS的一个块存储服务实例),通过云盘快照(Snapshot)功能放到对象存储COS中,再复制为另一份CBS中的实例,在新的VM中挂载该CBS实例,就实现了虚拟机的克隆。

小E想明白了,很开心地笑了。

突然,小E的笑容凝固了——

如果虚拟机的系统盘容量为100GB,那么,需要把100GB的数据通过网络,从CBS复制到COS,再复制回CBS,才可以真正实现虚拟机的克隆。稍具备计算机系统常识的同学都可以计算出,复制100GB数据的时间会长达10分钟以上,会导致虚拟机的克隆需要10-20分钟。

那么,如果出现大规模查询健康码这样的突发操作,这种虚拟机克隆的效率,是无法及时响应系统高并发的需求的,也就会导致健康码的崩溃。

那么,T姐是如何搞定健康码应用能扛高并发的呢?

小E去买了T姐最爱吃的螺蛳粉,臭鳜鱼和豆汁,来到了T姐的工位……

欲知后事如何,请看下回分解。

0 人点赞