在早期,一台物理机器通常只运行一个操作系统,大多数应用程序(如数据库、网络服务器和网站)通常只用于解决一个用户的需求。


这意味着,当需要部署两个应用程序(pet.com和food.com)时,通常的做法是使用两台物理机,并在每台物理机上分别部署一组数据库、网络服务器和网站。


当请求负载增加时,需要增加一个新的物理机来实现应用的水平扩展。一般来说,用户应用和物理机之间是一一对应的。


使用这种扩展方法,在部署新应用程序之前,可能需要几天时间等待新机器准备就绪。此外,为了承受高峰时段的请求压力,通常会使用太多的物理机来部署应用程序,导致整体资源利用率较低。简而言之,当时提供互联网服务需要很高的成本。


应用程序虚拟化(例如虚拟主机)


为了解决应用和物理机之间只有一一对应的问题,web服务器、数据库等基础层应用开始提供逻辑隔离功能,允许在一个基础层上同时支持多个用户应用。在web服务器的世界中,这被称为虚拟主机,一个web服务器可以基于域名为多个网站提供服务。在数据库领域,单个数据库服务可以提供多个完全隔离的逻辑数据库。


基于应用程序虚拟化技术,多个逻辑隔离的用户应用程序可以部署在同一台物理机上。


轶事:90年代末,阿帕奇在网景击败网景企业服务器,占领网站服务市场。


和单应用单物理机模型一样,当请求负载增加时,仍然需要增加几个新的物理机来实现水平扩展,但现在可以在一个物理机上部署多个用户应用。


与此同时,一些应用程序,如数据库,已经开始尝试使用集群功能来实现更高的横向可扩展性。虽然这些技术提高了资源利用率,但也显著增加了程序架构和部署的复杂性。对于开发人员来说,此时部署和扩展应用程序有点太复杂了。


换句话说,当时的互联网服务既复杂又脆弱。


虚拟计算机


随着Linux在服务器领域的日益普及,操作系统虚拟化逐渐发展起来,允许多个操作系统同时运行在一台物理机上。在这种新模式下,物理机上的每个应用程序都可以有自己的操作系统和运行环境。小白科普:虚拟化简史,了解Docker,虚拟机原理


注:从技术角度看,虚拟机技术由IBM在20世纪60年代首创;但公平地说,Linux(以及Windows,在某些方面)普及了操作系统虚拟化的概念。


这种新模型不仅最大限度地提高了资源利用率,而且通过逻辑隔离大大简化了应用程序体系结构。但虚拟机时代最具革命性的成果是AWS引领的云计算业务。


有了这项新服务,开发人员可以专注于他们最了解的东西:软件。让几个硬件和网络专家负责构建和扩展支持软件运行的基础设施。


随着软件基础设施越来越复杂,应用也逐渐从传统的三层单一架构向微服务架构转变。此时,如何设计、部署和管理可扩展的微服务系统变得相对复杂,并且高度依赖于底层云计算基础设施。


容器


后来,人们使用了一个相当古老的Linux函数,将进程“装箱”成操作系统中不同资源的子集,于是虚拟化的下一个篇章—— Containerization  ——诞生了。集装箱技术的快速发展主要是由无处不在的Docker集装箱带动的。


使用容器化技术,只需要几秒钟就可以完成,在物理机时代需要几天,在虚拟机时代需要几分钟,而且只占用少量的硬件资源。


虽然容器化技术显著提高了服务粒度,提高了资源利用率,优化了复杂应用的软件架构,实现了开发和生产环境的运行时统一。然而,随着大量新功能的引入,也带来了服务部署和管理复杂性的挑战。服务扩展仍然需要依靠云计算供应商提供的特定方法来扩展底层虚拟机。何时创建容器以及在哪里部署容器也是非常复杂的问题。


毫无疑问,集装箱化技术是有用的,但似乎还需要其他技术来帮助实现其真正的价值。


技术


Kubernetes的诞生,解决了集装箱化技术面临的问题。Kubernetes是一种基于容器的服务,它提供了一种标准的、与环境无关的方式来描述、管理和运行一个完整的、可扩展的大规模系统。


在此之前,服务的开发环境、生产前环境和生产环境是截然不同的。Kubernetes能够以简单、标准化的方式描述和运行可扩展的大规模完整系统,大大降低了构建和管理微服务系统的成本。需要注意的是,这些重要的技术里程碑总是在不断演变,相互叠加,通常会一起使用。从技术的角度来看,技术革命更多的是由进化产生的,而不是破坏性的颠覆。例如,容器通常运行在虚拟机上,虚拟机需要运行在操作系统上,而操作系统运行在物理机上。


综上所述,我们可以看到虚拟化技术是如何发展的。


小白科学:虚拟化简史,了解Docker和虚拟机原理


从技术角度来看,Kubernetes是从以前的技术演变而来的,不是颠覆性的新技术,但从商业角度来看,它产生了革命性的价值。


我平时对待各种新技术都很慎重,因为很多时候都只是昙花一现。但是,Kubernetes和Linux、虚拟机、Git一样,正在逐渐成为各自领域坚实的基础技术。


简而言之,Kubernetes可能是目前所有云应用开发组织能够进行的最安全的投资。如果应用得当,它可以显著提高应用程序开发和交付的速度和质量。


上一篇:2021年,云计算十问 下一篇:鸿蒙系统,还有三座大山要逾越
框架系统   粤ICP备13024006号
框架系统   粤ICP备13024006号