虚拟化之路
程序世界和现实世界总是存在千丝万缕的联系,从现实世界映射程序世界,从程序世界反观现实世界。虚拟化,一切的未来,未来的一切。
何为虚拟化
何为虚拟化,举几个例子
1、在Windows操作系统之上安装VMware软件,可以在一台电脑上同时运行多个操作系统,这些操作系统都是建立在VMware虚拟的硬件之上。
2、在Java中,有一个非常流行的概念叫IOC,把类的实例交给IOC容器来管理,我们操作的实例都是由IOC容器给到我们的非原始类实例。
3、在js中,Vue的出现,不需要开发者来操作dom,dom都由Vue来控制。
4、在城市中,我们把土地铺上水泥、沥青,在此之上建立一栋栋的高楼大厦。
在我看来,虚拟化就是在真实的资源之上,建立一套控制体系,可以更加充分的利用资源。被虚拟的资源都会存放到一个容器中,控制体系可以对容器中的资源进行便捷的管理。
为什么虚拟化
一、资源利用充分
一台服务器,动辄几十个G的内存,十几个T的磁盘存储,几百核心的CPU,如果给到一个操作系统,必然导致资源的浪费,基于这么一个强大的硬件资源,虚拟出多个操作系统,就能够让资源更大化的利用。
二、管理更加灵活
还是从操作系统的虚拟化说起,真实机器上的操作系统想要进行一次备份,就必须停止操作系统,并使用专业的备份工具进行备份。而对于虚拟化的操作系统来讲,在不停机的情况下就可以进行整机的备份。
Java对象交给IOC容器管理后,可以灵活的实现切入即AOP。
Dom交给Vue管理后,开发者也是只需要关注数据和数据模板。
在土地上铺上水泥和沥青之后,建筑工人就可以任意建筑需要的建筑。
三、职责更加明确
底层平台和上层应用分离。
畅想
如果把地面铺设水泥和沥青当做最初级别的虚拟化,那么什么是最高级别的虚拟化呢?
地球是一个非常庞大的资源,“动辄几十个G的内存,十几个T的磁盘存储,几百核心的CPU” 。。。。。
后记
其实理解虚拟化,对程序开发有挺重要的作用。现在软件世界,基本上都做到了虚拟化,从基于Spring的后端开发,到基于Vue的前端开发,再到容器云平台的部署,几乎都是在虚拟化下完成的。
你从腾讯云、阿里云各种的云平台厂商购买的服务器,并不真的是给你部署了一台真实的物理机器,也都是在虚拟化下完成的。
网络本身其实就是个虚拟化。
所以,虚拟化无刻不在。
不过,我更想说的是,这篇文章吧,就是我自己瞎想的,可能不对,也可能偏激,也有思考不全的地方。
纵然如此,对于这个话题,还是有很大的想象空间的。