云计算、虚拟化、容器化杂谈

1、云计算概念:

1)云计算是最近几年才兴起的概念,但是这样的需求其实早都有了,现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:

云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。

云计算最基本的特性是:“按使用量付费”、“资源共享池”和多租户隔离。

2)云计算也是分层的:


 1. IaaS: Infrastructure-as-a-Service(基础设施即服务):

  主要作用是提供虚拟机或者其他资源作为服务提供给用户。

 2.PaaS: Platform-as-a-Service(平台即服务):

 第二层就是所谓的PaaS,某些时候也叫做中间件。主要作用是提供一个开发和运行平台给用户(如mysql中间件等)

 3.SaaS: Software-as-a-Service(软件即服务):

 第三层Saas就是各种产品服务。


2、虚拟化概念:

虚拟化是通过软件手段对计算机硬件资源镜像整合管理和再分配的一种技术。常用的手段有基于虚拟机的虚拟化和基于容器的虚拟化。

1)最常用的就是基于虚拟机(Hypervisor-based)的虚拟化:

它通过一个软件层的封装,提供和物理硬件相同的输入输出表现,实现了操作系统和计算机硬件的解耦,将OS和计算机间从1对1变成了多对多(实际上是1对多)的关系。该软件层称为虚拟机管理器(VMM/Hypervisor),它可以直接运行在裸机上(Xen、VMware EXSi),也可以运行在操作系统上(KVM、VMware workstation)。这项技术已经很成熟了(发展了40多年),但仍然存在以下几个问题:

  • 在虚拟机上运行了一个完整的操作系统(GuestOS),在其下执行的还有虚拟化层和宿主机操作系统,一定比直接在物理机上运行相同的服务性能差;
  • 有GuestOS的存在,虚拟机镜像往往有几个G到几十个G,占用的存储空间大,便携性差;
  • 想要使用更多硬件资源,需要启动一台新的虚拟机,要等待GuesOS启动,可能需要几十秒到几分钟不等。

实际使用场景中,我们使用虚拟化技术其实是为了按需分配资源来完成服务的部署和使用,同时对服务所依赖的环境进行隔离,不被其它服务感知或干扰。为此启动一个GuestOS并不是必需的,为什么不考虑让多个虚拟机公用一个操作系统内核,只隔离开服务运行环境同时控制服务使用的系统资源呢?基于容器的虚拟化就是这样一种技术。


2)基于容器的虚拟化:

容器是没有GuestOS的轻量级“虚拟机”,多个容器共享一个OS内核,容器中包含需要部署的应用和它依赖的系统环境,容器大小通常只有几十到几百MB。由于共享操作系统内核,所以容器依赖于底层的操作系统,各个操作系统大都有自己的容器技术和容器工具。

Docker是一个Linux容器管理工具,随着Docker的兴起,Linux容器技术也是当下最时兴的容器虚拟化技术。Linux容器工具有很多,OpenVZ、LXC、Docker、Rocket、Lmctfy等等,大都是基于Linux内核提供的两个机制:Cgroups(实现资源按需分配)和Namespace(实现任务隔离)。

3)二者的区别:

  • 虚拟机技术已经发展了很多年,虚拟机和虚拟化层间的接口、虚拟机镜像格式等都已经标准化了,相应的管理工具、分布式集群管理工具都有比较完善的解决方案,而容器最近几年才兴起,配套技术和标准还在完善中;
  • 虚拟机由于有GuestOS存在,可以和宿主机运行不同OS,而容器只能支持和宿主机内核相同的操作系统;
  • 虚拟机由于有VMM的存在,虚拟机之间、虚拟机和宿主机之间隔离性很好,而容器之间公用宿主机的内核,共享系统调用和一些底层的库,隔离性相对较差;
  • 容器比虚拟机明显更轻量级,对宿主机操作系统而言,容器就跟一个进程差不多。因此容器有着更快的启动速度(秒级甚至更快),更高密度的存储和使用(镜像小)、更方便的集群管理等优点。同时由于没有GuestOS存在,在容器中运行应用和直接在宿主机上几乎没有性能损失,比虚拟机明显性能上有优势。

3、云计算和虚拟化差别:

对云计算和虚拟化差别的描述,有一句经典的话:虚拟化是云计算构建资源池的一个主要方式。只要这句话你理解透了就知道他俩的关系了。

1)各领域代表的产品:

云计算架构的开源产品是OpenStack(是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目);

虚拟机的虚拟化:VM的商业付费vSphere或者开源的KVM;

容器的虚拟化:docker。

2)OpenStack:

Openstack是众多技术的组合体,有涉及网络组件的Neutron,有涉及Dashboard的Horizon,也有涉及计算资源分配的Nova。虚拟化技术只是其中一个涉及到资源池构建的方式。当然你也可以用其它方式构建资源池,比如物理机还有容器。

Openstack经过几年十几个版本的更迭,已经拥有了Keystone、Nova、Neutron、Cinder、Glance、Swift、Heat、Ceilometer等等组件,比较完整的提供了一个云平台应有的各个模块。

3)在云计算中,不同层的选型:

选取基于虚拟机的虚拟化呢,还是基于容器的虚拟化。早期由于容器技术的不完善,云计算只有虚拟机这一种选择。

随着现在容器技术兴起,基于容器的虚拟化性能更高,交付速度快,方便管理,而且资源利用率高,看起来是比虚拟机更好的方案。但是它现有的两个比较大的缺点(隔离性不够强、操作系统依赖性)让他无法完全替代VM,对于SaaS用户和部分PaaS用户而言这两个缺点可能不那么明显。现阶段Container和云计算主要结合的场景也是在SaaS和PaaS中(事实上大多数SaaS和PaaS服务提供商都使用了容器技术)。

但是对于IaaS的用户来说,他们租用的是基础设施,上面承载着他们自己运行的系统和服务,隔离性不强意味着安全性和可信性不高,在这种情况下大客户们(一些公司会把自己的服务托管在云上,租用公有云,省下来机房、服务器和运维的成本,他们也是公有云最主要的客户)肯定是不放心的。同时操作系统依赖性也是限制Container在
IaaS层应用的一个主要问题,也是绝大多数解决方案都是将container运行在VM上的原因,这样Container性能好的优势实际上在云上根本发挥不出来,优点只有启动快了。


  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赶路人儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值