微信号:coderising

介绍:工作15年的IBM软件架构师分享编程和职场的经验和教训, 不容错过.

小白科普:虚拟化简史

2019-06-14 08:31 Jeremy Chone

作者:Jeremy Chone

翻译:TY


单应用单物理机(One to One)


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


这意味着当需要部署 pet.com 和 food.com 两个应用时,常见的做法就是使用两台物理机,在每台物理机上单独部署一套数据库,web 服务器和网站。



当请求负载增加时,需要通过加入新的物理机来实现应用程序的水平扩容。总的来说,用户应用和物理机保持着一一对应的关系。


使用这种扩容方式,可能需要花费几天的时间等待新的机器就绪,才能部署新的应用。并且为了扛住高峰时的请求压力,通常都会使用过量的物理机来部署应用,这导致整体的资源利用率不高。简而言之,在那时提供互联网服务需要付出高昂的成本。



应用虚拟化(如:Virual Host)



为了解决应用程序和物理机只能一一对应的问题, web 服务器和数据库这样的基础层应用,开始提供逻辑隔离功能,即允许在一个基础层上同时支撑多个用户应用。在 web 服务器世界中,这称为虚拟主机(virtual hosts),一个 web 服务器可以基于域名为多个网站提供服务。而在数据库领域中,单个数据库服务可以提供完全隔离的多个逻辑数据库。


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



趣闻:在 90年代末,Apache 正是依靠虚拟主机功能击败了网景的Netscape Enterprise Server,占据了 web 网站服务市场。


与单应用单物理机模型一样,当请求负载增加时,仍然需要新加入多台物理机来实现水平扩容,但是现在能够在一台物理机上部署多个用户应用。


同时,一些应用程序如数据库,也开始尝试使用集群功能来实更高级的水平扩展能力。虽然这些技术提高了资源利用率,但也显著地增加了程序架构和部署的复杂度。对于开发人员来说,此时部署和扩容一个应用程序有些过于复杂了。


换句话说,那时的互联网服务是复杂并且脆弱的。



虚拟机



随着 Linux 在服务器领域越来越流行,操作系统虚拟化也逐渐发展起来,它允许在一台物理机上同时运行多个操作系统。在这种新的模型下,一台物理机上的每个应用程序都可以拥有自己的操作系统和运行环境。


 

注:从技术层面讲,虚拟机技术是由 IBM 在 60 年代开创的;但是可以公平地说 Linux(和 Windows,在某些方面)普及了操作系统虚拟化的概念。


这个新模型不仅最大化的提升了资源利用率,而且通过逻辑上的隔离显著地简化了应用程序架构。但是虚拟机时代最具革命性的结果,是以 AWS 为主导的云计算业务


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


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



容器



后来,人们使用了一个相当古老的Linux功能,把进程“装箱”到了一个操作系统不同的资源子集当中,于是,虚拟化的下一个篇章——容器化——诞生了。容器技术的快速发展主要是由现在无处不在的 Docker 容器引领的。


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




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


毫无疑问,容器化技术是有用的,但是似乎需要其他技术来辅助实现它真正的价值。



Kubernetes



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



在此之前,服务的开发环境、预生产环境和生产环境都有着很大的不同。Kubernetes 使用新的方式能够以简单、规范的形式描述、运行一个可扩展的大型完整系统,极大地降低了构建和管理微服务系统的成本。


需要注意的是,这些重要的技术里程碑都是通过不断的演化和相互叠加而来的,并且通常是配合使用的。从技术的角度上看,技术革命更多地产生于进化,而不是破坏性颠覆。比如,容器通常运行在虚拟机上,虚拟机需要运行在操作系统上,而操作系统运行在物理机上。


总结一下,我们可以看到虚拟化技术是如何演进的。

 

虽然从技术角度上看, Kubernetes 是基于之前的技术演化而来,并非颠覆性的新技术,但是它却在商业角度上产生了革命性的价值。 


我通常会很谨慎的对待各种新技术,因为大多数时候它们只是昙花一现。 但是 Kubernetes 就像 Linux,虚拟机和 Git 曾经在他们各自领域一样,正在逐渐成为一项稳固的基础性技术。 


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


本文有删减, 原文链接:


https://blog.britesnow.com/understanding-kubernetes-value-867c163d5ed2




618来啦,程序员又要囤书了!

这次当当网有史无前例的最大的优惠力度!


当当网计算机图书大促期间

>> 每满100减50  <<

满200减100

满300减150

满400减200


这还不够,码农翻身特别送出一批“实付满200减40”和“实付满100减20”优惠码, 可以和满减活动叠加使用, 综合算起来就是3-4折了!还不赶紧上车!


实付满200减40优惠码: UVBDQK  (全场图书可用)

实付满100减20优惠码: FNEVBY   (仅限计算机图书)


使用渠道:当当小程序

使用时间:6/14-6/20


本活动满减与礼券均不支持团购,同一账号、同一地址、同一手机号、同一IP反复购买本活动商品,当当有权取消订单,终结交易。


小程序直达购书专题

  


选书太纠结?推荐几本好书!

助你囤的疯狂、读的畅快,绝不后悔!

>>  推  荐  书  单  <<



就是我的书了 , 本书把计算机元素和行为用拟人手法编成一个个精彩纷呈的故事呈现在此书,绘声绘色且深入浅出地演绎晦涩枯燥的编程知识。学习优秀的架构师是如何思考、如何抽象、如何成长的,从操作系统、Java语言到Web技术,每个主题都深入浅出。编程初学者可以津津有味地学习,有经验的老手也能饶有兴致地查漏补缺。



Charles Petzold是Windows编程界的一位大师,当今世界项级技术作家。这本书是一本讲述计算机工作原理的书。不过,你千万不要因为“工作原理”之类的字眼就武断地认为,它是晦涩而难懂的。作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。更重要的是,你会因此而获得对计算机工作原理较深刻的理解。这种理解不是抽象层面上的,而是具有一定深度的,这种深度甚至不逊于“电气工程师”和“程序员”的理解。



本书由一系列独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术,利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比,全面阐释了软件开发的许多不同方面的较佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。



本书是MySQL 领域的经典之作,拥有广泛的影响力。全书共分为16 章和6 个附录,内容涵盖MySQL 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL 和MySQL相关工具等方面的内容。



作者李智慧,曾在阿里巴巴担任技术专家,参与阿里巴巴基础技术平台开发和架构设计,本书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。



全网阅读量近1000万次的算法故事;一群可爱的小仓鼠,带你轻松入门算法与数据结构;开发岗面试不再慌。本书通过虚拟的主人公小灰的心路历程,用漫画的形式讲述了算法和数据结构的基础知识、复杂多变的算法面试题目及算法的实际应用场景。


 
码农翻身 更多文章 有这么一个软件大神, 他很少谈论操作系统、网络、高并发、海量用户...... 【国内首个百万年薪架构师】第三期课程招生 If语句:你们到底想把我放到哪儿? 升职是个陷阱 人到中年,作别外企
猜您喜欢 教人怎样读书的书——《如何阅读一本书》 异步修饰器tomorrow之简介 Spark机器学习库(MLlib)指南 Coinbase,三个月 关于RESTful规范API接口设计的7点实用建议