本文源自一次内部科普,目标是让非IT人员能够对云计算有一个大致的了解。我比较倾向于基于云计算的内涵,狭义的去定义云计算,因此可能与网上别人的观点不完全一致。
概念篇
云计算是什么
出于 不同理解 商业目的,云计算的定义不下20种,解释不下100种。
我的理解:
- 云(Cloud)
在IT领域,云通常指资源的集合。其特点是规模庞大,细节不重要,可动态伸缩。 - 计算(Computing)
这里应该指计算能力。计算能力取决于可用于计算的资源,包括软件运行需要的各种平台软件、操作系统、CPU能力、内存大小、存储空间、网络带宽等。 - 云计算(Cloud Computing)
通过分布在 大量 计算机上的资源构成资源池,为 大量 应用系统提供所需的计算力、存储空间、网络带宽和其他服务。应用系统不需要知道支持其运行的各种资源的底层细节情况。
云计算的特征
基于上述定义,可以得出云计算在 提供资源方面 的特征:
- 多对多
用大量的计算机,为大量的应用提供所需的资源。 - 可动态伸缩
云的规模可以根据需要随时扩大或减小,而不影响上面运行的应用系统。 - 成本更低
通过动态的分配和调度,提高资源使用效率,使得单个应用系统运行所需的成本更低。 - 灵活使用
应用系统可以根据需要,随时获取、按需使用资源,而且可以做到按使用计费。
现在有的云计算平台甚至可以做到按分钟、按每M流量计费。
常见 误区 误导
- 云计算不一定依赖互联网
不依赖互联网的不一定不是云,比如私有云。
依赖互联网的不一定是云,很可能是伪云。 - 云计算是服务于开发/运维人员
对于应用系统的用户来说,其实并不关心其是否运行在“云”上。
什么不是云计算
- 云应用:基于云计算的应用
如前所述,用户只关心应用的功能和性能,不关心应用如何实现,如何部署。
通常,大部分应用不在云平台上也能运行。 - 伪云: 把简单的互联网应用套在云计算上
- 搜狗云输入法 --> 网络输入法(词库放在服务器上)
- 有道云笔记 --> 网络笔记(笔记内容放在服务器上)
- 网易云音乐 --> 网络音乐(音频文件放在服务器上)
- 百度云网盘 --> 网盘(各种文件放在服务器上)
原理篇
分层体系架构
分层体系架构( Layered Architecture),是IT领域的重要思想。
分层体系架构将系统的组件分隔到不同的层中,每一层中的组件保持内聚性,并且大致在同一抽象级别( 高内聚 );每一层都通过接口访问下一层,不关心其具体实现。下层不会调用上层( 低耦合 )。这样把问题划分开来各个解决,易于控制,易于延展,易于分配资源( 分而治之 )。
分层架构可以带来很多好处:
- 每层专业分工
- 层间接口固定,替换某一层不影响其它层
- 有利于通用组件的复用
- 利于系统的水平扩展
硬件不足与集群
之前很长一段时间,计算机硬件的能力不足以满足软件的运行。主要的解决手段是集群和负载均衡技术。与升级硬件相比,这种扩充能力的方式成为“水平扩展”。
- 集群(Cluster)
将多个计算机连接到一起,像一台机器那样工作。这样可以增加处理能力,或者提高稳定性。 - 负载均衡(Load Balancing)
按照一定的规则,将负载分配到集群中的各个计算机上进行处理。
集群和负载均衡技术,可以应用在不同的层级上面。其上的各层,都运行在集群环境。
硬件过剩与云计算
随着硬件技术的飞速发展,现在计算机的性能远远高于软件的需要。也就是说,硬件资源过剩了。为了提高使用效率,产生了一些新的技术。
虚拟化
一台计算机只运行一个操作系统,资源可能闲置。通过虚拟化,可以在一台计算机上运行多个操作系统,这些操作系统共享硬件资源。这里面的关键是资源调度程序,或者叫“虚拟化操作系统”。 可能有人运行过单机的“虚拟机软件”,比如vmware。虚拟机和虚拟化的本质不同在于:资源调度程序运行在不同的层上。
虚拟化+集群
单个的计算机上面能够运行的虚拟机个数还是有限的。要想进一步增加容量,很容易想到可以把前面提到的集群技术用到虚拟化的资源调度程序上,这样就构建了一个大的资源池。
云存储
上面的架构中,虚拟机还不能无缝从一个主机迁移到另一个主机运行。关键问题在于:虚拟机是存储在硬盘上的,一个主机无法访问另一个主机的硬盘。最简单的办法当然是所有的虚拟机都存储在一个存储设备(比如EMC存储)上,所有的主机都能访问这个存储设备。但这显然是多对一的关系,而且不可动态伸缩。
我们需要一种符合云计算特征的存储功能,不妨称作云存储(Cloud Storage)。
如果把“文件存储”看做一种特殊的应用,这个问题可以很容易的用前面的模式解决:
其中SAN(Storage Area Network,存储区域网络),是一种服务器连接外部存储设备的架构技术。从操作系统的角度,访问外部的存储设备与访问本机的硬盘没有任何区别。该技术可以采用光纤等设备,使得访问外部存储的速度达到甚至超过本机硬盘。
管理和调度
现在,已经有了足够的灵活性:可以创建虚拟机,可以为虚拟机分配和调整资源,可以指定虚拟机运行在哪一个主机上。但是还可以更加智能一些。
- 自动分配
创建新虚拟机时,根据需要的资源和各主机的情况,自动分配主机 - 自动平衡
监控各个主机的运行状况,当主机资源紧张时自动将虚拟机迁移到空闲的主机上运行,在此过程中对虚拟机访问不受任何影响。 - 自助服务
用户可以自助创建虚拟机,决定使用多少资源。并按照实际使用情况实时计费。 - 区域自治
对于某些用户,可以为其分配一个大的资源池(比如,5000GHz CPU、3TB 内存、3PB 存储空间、1TB网络带宽),这个资源池的管理员可以创建子用户,子用户使用池中的资源再创建自己的虚拟机。 - 更多功能
没有做不到,只有想不到!
XaaS
尽管业内搞死了SOA,但是服务(Service)这个词已经到处在使用,什么东西都可以是服务。在云计算领域,根据提供资源的层次不同,可以分为 IaaS, PaaS, SaaS。
- IaaS (基础设施即服务)
前面的例子中,都是把CPU、内存、存储空间、网络带宽以及管理这些硬件的操作系统作为资源。这些资源提供出去,就叫做基础设施即服务(IaaS, Infrastructure-as-a- Service)。
- PaaS(平台即服务)
PaaS把平台(Platform)作为资源。什么是平台,还要从分层架构说起。开发一个应用系统,总有很多共同的功能,比如http服务,session管理,数据库连接池等等。如果每一个应用系统的开发都重新实现这些功能,效率太低。于是有一些组织,将这些公共的功能提取出来,发布成一个软件,就叫做平台软件。
平台软件也叫做容器,可以支持很多应用系统的运行。平台软件在架构的层次中,介于应用系统和操作系统之间。
- SaaS(软件即服务)
平台软件是通用的,业务无关的。但对于某些特定类型的应用,有一些共同的功能和逻辑。比如CDN、视频直播等、用户认证等。把这些功能提取出来,作为一种资源在多个应用系统中复用,就可以称之为 SaaS。这些服务的对象,仍然是开发人员。对于最终用户来说,这些服务并不能直接使用。
可能的新模式
目前,主要的业务模式是公有云通过规模效应建立成本优势,个人认为会越来越向大公司集中。
未来可能出现新的模式:
- 效用计算
1961年,人工智能之父麦肯锡在一次会议上提出了“效用计算”这个概念。目标是整合分散在各地的服务器、存储系统以及应用程序来共享给多个用户,根据用户的使用量来付费。
未来云计算也可能会出现真正意义上的共享云,但还有很多技术问题未解决。
已经出现过类似的模式是 P2P下载。
- 网格计算模式
网格计算研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多低性能的计算机来处理,最后把这些计算结果综合起来攻克大问题。重点放在解决“计算力”上面。
从技术上,不是所有的计算问题都能分解,或者很难分解。从业务上,需要如此强大计算力的应用目前看来还很少。
已经出现过类似的模式是“在家寻找外星人”项目。
本文内容均摘选自:内心求法http://holbrook.github.io
转载请注明链接地址:荐爱小站 » 现在流行的云服务、云主机中云计算到底是什么意思