云计算技术变迁:从虚拟机到容器
很多伟大产品都是来自于企业内部,一开始是企业出于自身需求开发了某种工具,后来发现这个工具不仅可以满足自身需求,还能满足市场上其他用户的需求。于是企业管理层决定把这个工具开放出来,形成产品推向市场,企业自身就是这个产品的种子用户。云计算的诞生就是依赖这样一条路径。
云计算的诞生
众所周知,亚马逊是当今全球云计算市场的领导者,同时也是云计算的开拓者。2006 年春天 AWS( Amazon Web Services ) 提供第一个云存储服务 (Amazon S3),同年秋天提供了云计算服务(Amazon EC2)。
亚马逊在电子商务领域深耕多年,积累了独特且强大的软件基础设施。亚马逊意识到如果把自己在软件方面的技术基础设施开放给开发者,将省去开发者购买、搭建和维护这些基础设施的大量时间和成本,这将会构建起来一个巨大的生态体系。于是Amazon Web Services就这样诞生了。
2008年,王坚博士加入阿里以后,开始推动阿里云的建设,同时减少阿里对雅虎以及IBM的技术依赖。在做阿里云的前几年时间里,项目持续赔钱,bug频出,团队出走,甚至80%的工程师陆续离开。但阿里云始终坚持下来,最终成为国内公有云市场的领导者,同时也是全球第三大云计算厂商。
![云计算技术变迁:从虚拟机到容器](https://s2.51cto.com/oss/202101/16/6c8ff4b4370826e4efab75471a4e88fa.jpeg)
阿里云逐步拉开与第四名谷歌的距离,紧追微软Azure
云计算的基础是资源虚拟化
目前云计算厂商提供的云服务大致可分为IaaS、PaaS和SaaS三种,其中最基础的服务就是IaaS(基础设施即服务)。云厂商提供给开发者的是虚拟化的服务器,需要开发者安装操作系统及应用程序的运行环境。
![云计算技术变迁:从虚拟机到容器](https://s2.51cto.com/oss/202101/16/9ac69f68f73378071f99f024e07b4f38.jpeg)
云计算的服务模式
IaaS模式对于开发者来说还是有点麻烦,因此云厂商开始直接为开发者提供运行环境,开发者不需要自己来安装操作系统。
云计算的基础就是资源虚拟化,核心技术是虚拟机。虚拟机主要有两种类型,一种是直接在硬件上安装虚拟化程序,在一台物理机上隔离出多个虚拟机,如下左图(裸金属架构);另一种是在宿主机操作系统上安装虚拟化程序,再隔离出多个虚拟机(宿主机架构)。
![云计算技术变迁:从虚拟机到容器](https://s6.51cto.com/oss/202101/16/9ae0546ddff363b4fc1496c2124316e2.jpeg)
虚拟机技术的两种类型
生成和管理虚拟机的程序就是Hypervisor,也称为VMM(Virtual Machine Monitor,虚拟机监视器),这不是一个特定程序,而是一类程序,常见的VMM程序包括:VMware EXSi、KVM、Xen、Hyper-V等。其中开源KVM应该是云平台用的最多的VMM。
为了大规模地管理虚拟机,就需要用到管理平台软件,如OpenStack,可以管理诸如KVM或Xen等类型的VMM程序。OpenStack、KVM这些都属于云计算IaaS层的技术。
容器:更轻量化的虚拟化
容器也是一种虚拟化技术,不过是比虚拟机更轻的虚拟化技术,如果大家感兴趣还可以看看以前的旧文《聊聊云计算:5分钟弄清楚我们为什么需要容器》。
![云计算技术变迁:从虚拟机到容器](https://s2.51cto.com/oss/202101/16/dce11e0082267169db2a1e85dd1d6efb.jpeg)
容器与虚拟机的比较
相比于传统的虚拟机,Docker的优势很明显,它启动时间很快,是秒级,而且对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB,而容器只需要MB级甚至KB级。现在大家常说的Docker,就是创建容器的工具,是应用容器引擎。
同样对于大规模的容器集群管理,需要专门的容器编排(Container Orchestration)工具。常见的容器编排工具包括:Kubernetes、Docker Compose、Docker Swarm、Apache Mesos、Marathon等。其中Kubernetes是最常用的容器编排工具,因为Kubernetes的首字母K和尾字母s之间有8个字母,所以Kubernetes也被称为K8S。
![云计算技术变迁:从虚拟机到容器](https://s4.51cto.com/oss/202101/16/856e8db5c1ad87c4020f1821fcf9193e.jpeg)
K8S与容器之间的关系
云计算到云原生
目前云计算技术已从VMM和Openstack为代表的虚拟机技术体系,逐步过渡到以容器和K8S为代表的云原生技术体系。这其中与互联网应用程序越来越复杂有关系。
传统的互联网应用程序都是单体架构,随着程序越来越复杂,单体架构被分拆成多个服务的分布式架构,逐步演化为后来的微服务架构。
为了给每个服务单独分配资源,就需要把不同的服务运行环境隔离开,如果全部用虚拟机来做隔离,那么成本和性能都是问题。容器由于其对资源的占用很少,所以更适合于分布式架构的系统。这就是以容器和K8S为代表的云原生技术成为云计算的主流。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击