服务器发展历程:从物理机到Serverless的四大关键阶段
服务器发展历程:从物理机到Serverless的四大关键阶段
服务器技术经历了从物理机到虚拟机,再到容器和无服务器计算的演变过程。每个阶段的技术都有其独特的优势和局限性。本文将详细介绍服务器技术发展的四个关键阶段,帮助读者更好地理解当前云计算技术的发展趋势。
第一阶段:物理机
物理机可以将应用程序直接部署到物理机上来运行。世界上第一台物理计算机是ENIAC(埃尼阿克),诞生于1946年2月14日的美国宾夕法尼亚大学。ENIAC的诞生也直接推动人类进入了信息化时代。
物理机的优点是可以将计算资源进行物理层面的隔离,用户可以对硬件、操作系统、软件进行全方位的管控。缺点是上线周期长,成本高,资源使用率低。当你决定使用物理机开始,就需要选择物理机的品牌、型号、配置,并且硬件厂商需要发货,货到了以后需要上架,需要配置网络,需要部署操作系统。一切就绪以后,在上线部署应用程序。如果你是企业用户,还要走招投标的流程,上线周期会更长,成本高。使用物理机不但资金成本高,并且维护成本和人力成本也高。机房运维、硬件设备运维、操作系统运维都需要专业的人员来进行维护,使用率低。
一般情况下,生产的业务系统,一套业务系统部署到一台物理机上,资源使用率往往不足30%,甚至都不到10%,会造成资源的极大浪费。那有什么方法可以进一步缩短服务器的上线周期,降低成本,提高资源使用率呢?
第二阶段:虚拟机
使用虚拟机,可以在物理机上部署虚拟化软件,并启动多台虚拟机,将应用程序直接部署到虚拟机上的运行。虚拟化技术在大型机器时代就已经有了,但是世界上第一个基于x86架构的虚拟化产品是VMware Workstation 1.0,由VMware公司于1999年5月15日发布,相信很多朋友依然在使用VMware Workstation,它可以部署到本地电脑上,基于VMware Workstation可以启动多台虚拟机来使用。
除了VMware Workstation以外,VMware公司还提供了计算虚拟化产品ESXi、存储虚拟化产品vSAN以及网络虚拟化产品NSX。并且市面上除了VMware虚拟化以外,还有KVM、Hyper-V等虚拟化技术。虚拟化的诞生直接推动了云计算的发展,也可以说没有虚拟化,云计算也无从谈起。相比物理机上线周期长。
虚拟机可以实现分钟级启动,一台物理机上可以启动多台虚拟机来部署不同的应用程序,从而可以进一步降低成本,提升资源使用率。但是虚拟化软件也会消耗一定的资源使用率,并且虚拟机的启动时间是分钟级。那么有没有更快的启动方式,更进一步提升资源使用率的方式呢?
第三阶段:容器
使用容器可以将应用程序直接部署到容器上来运行,容器共享的是宿主机的资源,启动速度更快,性能也更高。世界上第一个开源容器引擎是Docker 0.1,由Docker公司于2013年3月20日发布。容器技术在2013年之前就已经有了,但是Docker针对容器提供了一套完整的解决方案,让容器使用更简单、更方便。
容器走向了普罗大众,容器也直接推动了云原生技术的发展,云原生技术涉及容器、Kubernetes、微服务、DevOps等,而容器是云原生技术的基础,相比虚拟机,分钟级启动容器可以实现秒级启动。虚拟机大小是GB级别,而容器大小是MB级别,在一台物理机上可以启动几十台虚拟机,而在一台物理机上可以启动成百上千个容器实例,从而可以更好地提升资源使用率,降低成本。
并且容器共享的是宿主机的资源,没有中间虚拟化层,性能也更高。同时最重要的一点是可以通过容器镜像将应用程序和相关依赖库进行打包,保障容器在创建、分发和运行时的一致性,从而真正实现"Build Once, Run Anywhere"。
但是不管使用容器、虚拟机还是物理机,都需要用户对底层资源进行规划和维护,而对于用户来说,不管是企业还是开发者,最关心的是业务和代码能不能正常运行,而不是部署到什么服务器上。那有没有什么方法可以避免用户对底层资源进行规划和维护呢?
第四阶段:无服务器计算(Serverless)
使用Serverless可以将应用代码直接部署到Serverless服务上并启动运行。用户无需对底层资源进行规划和维护的技术和理念先前就已经有了,但是AWS Lambda是世界上第一个Serverless云计算产品,由AWS公司于2014年11月13日发布。Serverless技术代表着云计算的发展趋势,目前各大云厂商都在持续不断地提供Serverless产品。
Serverless计算产品还提供了Serverless数据库、Serverless大数据等产品,Serverless让云计算的使用更简单、更方便,用户无需关注底层资源的维护,专注于自己的业务和代码即可。Serverless的特点是免运维、低成本,将应用代码直接部署到Serverless服务上运行,无需对底层资源进行运维,并且Serverless真正做到了按需使用,按量付费,可以更好地节省成本。
服务器技术的融合使用
四个阶段的服务器并不是孤立的、隔绝的,而是可以融合使用的。一般情况下,我们可以在一台物理机上启动多台虚拟机,一台虚拟机上可以创建多个容器实例,而基于Serverless的应用又可以部署到容器上运行。至于选择哪个阶段的服务器来使用,需要根据实际情况而定。比如说针对新开发应用,应用可以优先考虑使用Serverless。而对于需要依赖硬件设备的应用,或是对数据合规有特定要求,必须使用物理资源来隔离的应用,可以使用物理机。而对于其他现有的应用,能做容器化部署的尽量容器化部署,不能做容器化部署的也尽量使用虚拟机来部署。