云计算的理解

原文:http://www.chinacloud.cn/show.aspx?id=15917&cid=17

老叟发现,即使是一些搞计算机的人,也不了解“云”是什么。于是,俺卖车之余就写了一篇科普:

云计算是什么

  到底什么是云(云计算)

  有很多关于云的介绍。然而,大都是用比喻的形式来介绍云的属性。比较有名的比喻是餐馆、和电网。但是,云毕竟不是餐馆、或电网,如果只有这些比喻,仍然不清楚到底什么是云。

  本文试图不用任何比喻,直接从普通的PC电脑入手,逐步递进,来介绍云的构成。你只需要具有初中文化,并对CPU、内存、硬盘等计算资源有些基本的概念,就可以了。

  一、传统的电脑

  当你启动一台个人电脑(PC机)时,电脑所做的事,就是把硬盘上的操作系统(OS,本文以微软的Windows 8为例,但也可以是Unix、Linux等等)的一些基本的控制程序调入到电脑的内存中去。一旦这个过程完成,这台电脑就完全由Windows 控制了。你所谓的电脑,其实就是你在上面工作的Windows。

  对Windows而言,它所赖以运行的,只有电脑的处理器(CPU)、内存、和存储设备(硬盘)这三个要素(或者说三项资源)。电脑还有机箱,但那只是起着封装、固定、再加供电的作用;电脑还有主板,但那只是起着电脑内各主要部件通信连接的作用。当然,你可能还需要网络连接, 但那只是一项外在资源,不是Windows本身所必需的。作为PC机,你还需要键盘和显示器等外部设备来直接在机器上工作。如果是服务器,则不需要键盘和显示器,一切都可以是远程登录访问。

  所以,一台电脑实质上就是在CPU、内存、和硬盘上运行的Windows。当打开Windows 的任务管理器,你就会发现,CPU和内存大部分是闲置的。特别是CPU,其利用率通常不到10%。Windows在硬盘占有的空间一般就是几个GB。 也就是说,一个Windows独占了电脑的全部资源,而大部分资源又都是闲置的。

  那么,有没有这种可能:不让一个Windows单独控制一台机器,而是在一台机器上安装多个操作系统,并且让它们同时地运行?

  有,最好的方案就是虚拟化 --

云计算,虚拟化

  二、虚拟化

  当安装一台电脑的时候,你不再是安装普通的Windows,而是安装一个资源调度程序,也叫“监控程序” (Hypervisor)。这个监控程序很小。取决于哪个厂家的产品,小的只有100多兆字节, 大的也只有几个G的字节。 监控程序安装完成之后,会得到一个工作界面,你通过这个界面设置一个网络连接(IP地址)。这个界面很简单,多数情况下你可以通过浏览器从别的机器上访问这个界面。

  前面说了,一个Windows机器,实质上就是一个由CPU、内存、和硬盘组成的一个组合体。通过监控程序的界面,你可以建立多个组合体。每个这种组合体,就是一台仿真的电脑。当监控程序创建一个仿真的电脑时,它实际上只是创建了两个文件:一个是关于这个组合体的配置信息(被分配了多少CPU、多大内存、多大的硬盘);另外一个文件,这个仿真电脑的“硬盘”,这个仿真的“硬盘”实际上就是一个封装的文件(在有些情况下,也可以是几个文件)。

  当你点击“开机”来启动这个仿真的电脑的时候,监控程序开始实际为它分配CPU和内存、并且启动它。当然,这“台”仿真的电脑在第一次启动的时候,是没有安装任何操作系统的“裸机”,那个封装的文件也是空的,这时你可以进行正常的系统安装(比如 安装Windows)。

  对Windows而言,它不知道真假,它反正能够得到所需要的CPU、内存、和硬盘就可以正常运行了,一切都和真的机器一样。对监控程序而言,这个 Windows不是直接和硬件打交道的,一切资源都需要监控程序来调度和分配,所以这“台”Windows机器(组合体)就是一台虚拟的机器,简称VM。

  这种通过监控程序把硬件的机器、同操作系统分开的过程,就是虚拟化。

  当监控程序创建一个VM时,它就给VM配置资源的大小,比如2个1GHz的CPU、2GB内存、和100GB硬盘。这样,这个VM(Windows)就以为自己拥有了双核的1GHz CPU、2GB内存、和100GB 硬盘。但这只是Windows所能使用资源的上限。Windows在实际运行中并不需要消耗那么多,监控程序只是给它按需分配实际消耗的资源,比如 0.1GHz CPU、0.5GB 内存、和20GB 硬盘。表现在实际的硬件消耗上,这20GB的存储量,就是实际硬盘上的那个20GB大小的封装文件。

  一台电脑,可以通过监控程序创建几个、几十个、甚至上百个VMs。比如,一台拥有16GB内存的PC机,你可以创建10个VMs,给每个VM分配4GB内存。看似总共分配出了40GB的内存,但PC机的实际内存只有16GB。

  通过虚拟化,一个单台的硬件机器可以同时运行多个虚拟的机器(VMs);更重要的是,虽然一个虚拟的Windows的系统盘(C盘)上有成千上万个系统文件,但它表现在硬件的存储设备(硬盘)上,只是一个或几个打包的大文件。当你把这一个或几个大文件移到别的地方,整个VM就移走了。

 

  三、配载调配和平衡

  如果虚拟化的不只是一台机器,而是A、B两台,并且两台机器都共享一个大的存储设备(硬盘阵列、或硬盘库),那会怎样?

  前面说了,一个VM就是一个(或几个)大文件。如果这个大文件放在共享的存储设备上,A、B两台机器上的监控程序都能看到这个VM。那么,这个VM既可以在A机器上运行、也可以在B机器上运行。所谓在哪台机器上运行,就是通过那台机器上的监控程序,把Windows 启动到其分配的虚拟内存就是了。

  假设VM1到VM10 等10个VMs在A上运行,VM11到VM20 等10个VMs在B上运行。现在要对A进行关机维护,那么它上面的10个VMs就可以在线移动到B上,而且所有10个Windows都保持不间断,用户根本意识不到变化,因为所移动的东西,只不过是内存中的数据而已。

  这个移动不是由A、或B指挥的,而是由装在另外一个C机器上的专门的数据中心管理软件指挥的。

  这个数据中心管理服务器C, 可以监控A和B的运行状态,一旦出现资源紧张,它可以自动触发在线迁移,把一个或多个VM移到对方的机器上运行。当然,这里需要一个事先设定的阈值标准。

  如果是创建新的VM, C可以自动决定把新的VM放在哪台机器上。

  这里只是假设A、B两台机器。实际上,C可以管理几十、几百、上千台机器。共享的存储设备也不止一套,可以是多套(VMs也可以在不同的存储设备间移动,只是移动的时间较长而已)。

  C通过各机器上的监控程序,间接管理所有的资源。

  至此,云的雏形出现了,但还不是云。因为,所有的这些管理和控制,都还是数据中心自己的职责。用户还无法对所需要的资源进行自主管理。

云的最后形成

  四、云的最后形成

  数据中心服务器C可以不止一个,可以有多个。它们创建和管理的一些VMs也许可以供外界的用户访问(比如网站),但用户无法直接管理VMs,更无法管理C提供的服务、或资源。

  1. 资源池:

  现在,再加一个更上层的服务器D -- 由它来管理一个或多个C!这个D,就是云服务器了:

  C把各自管理的资源提交给D,比如,一个或几个C总共向D提供了5000GHz CPU、3TB 内存、3PB 存储空间。D再把所有资源组成一个大池子,叫做“资源池”。

  这个池子的大小是可以动态变化的。当C控制的资源增加了、升级了,C可以动态向这个池子贡献资源,这个庞大的资源池也就随之增长得更大。

  2. 二次虚拟:

  为了便于分配和管理,D把庞大的资源池划分成多个子集(小组),这每个子集就相当一个虚拟的数据中心(或叫“计算中心”)。

  D再从各个“计算中心”里提取计算资源,创建一个个用户环境。每个用户环境就相当于一个“机房”,这个“机房”包括CPU、内存、存储等资源。

  D同时还给用户提供登陆访问的接口。用户通常用浏览器来登录这个接口。

  作为用户,当你用浏览器连接到D提供的访问界面,就可以建立一个账户,并且输入你的信用卡号。这时,云服务器D就可以根据你的要求,提供所需要的“机房”。

  这个“机房”的大小,完全根据用户的需求而定,比如可以包括50GHz CPU、100GB 内存、和2TB 硬盘。这些“机房”的资源,都是由云服务器D从它的那些虚拟的“计算中心”里抓给你的。

  通过层层抽象和虚拟,在每个“机房”里,你看不到、也不用去关心每个计算资源实际来自哪里。

  3. 用户的自主管理:

  当你作为用户拥有了一个“机房”,你就可以随意干你所需要的的事:

  建立多台虚拟的机器(VMs)。云商在你的机房里已经提供了很多现成的VM模板,有各种Windows、有各种Linux、等等,你可以随意拷贝过来、定制自己的配置、启动,就可以了。当然,你也可以自己从初始安装。

  4. 连接到网络:

  在本文开头提到, 网络也是计算资源。在谈及单个VM的时候可以暂不谈网络,但是在连接VM的时候就需要了。云在给你提供一个“机房”的时候,它已经就按需求给你提供了虚拟的交换机、路由器、IP地址池等等。这些网络资源,同样也是由数据中心服务器C提供给云服务器D的;C则是从所管理的各个监控程序得到;各监控程序管理着实际的硬件网卡。

  从用户的角度,各个“机房”是完全独立的,彼此是不可见的。你在自己的“机房”里干任何事都干扰不了别人的“机房”,别的“机房”也干扰不了你。

  这就是云。下面还要介绍一些分类。

  这里再回溯一下这个云“机房”的来源:

  “机房”<-- 云服务器D管理的虚拟的“计算中心”<-- 数据中心服务器C提供给D的资源池 <-- C 动态管理A、B两台(或多台)机器所连接的计算资源 <-- A、B两台(或多台)电脑通过监控程序的虚拟化 <-- PC机

  在实际配置中,PC机一般为企业级的服务器所取代,比如联想的System X 服务器。但这些服务器和PC机没有本质区别,性能和可靠性不同而已。

  五、云的种类

  这里描述的云的建立过程和结构,只是一种比较普通和容易理解的形式。由于技术的不同、实现方式的不同,各家云的实现方式和结构会有很大的不同。但是,一些基本的概念是相同的,其共同的核心要点包括:

  一定要有资源池。把分散的计算资源集中到大的资源池里,以方便统一管理和分配。例如前面讲的D所管理的资源池。

  按需分配、自助服务。用户实际消耗多少资源,就被分配多少资源;用户对自己得到的资源能够自助管理。例如前面讲的“机房”。

  灵活的资源变化。随便撤掉一台硬件的电脑,其上面的信息和活动会自动转移到别处去;随便增加一台电脑,其资源会随时添加到资源池里去。所有这些增减,用户根本意识不到。例如前面讲的“配载调配和平衡”。

  一定要有记账系统。用户消耗了多少资源,如何给这些资源计费,系统有详尽的信息采集和报告,以便对用户收费(即使是免费,也得有详细的记账)。例如前面提到用户输入信用卡,就是以记账为前提。

  在组建云的技术上,说到底,就是用软件产品(如前面提到的C和D,并通过监控程序)来管理、组织、和分配经过抽象或虚拟的硬件计算资源。除了个别企业用自己的技术建设、和服务外,现在常见的云技术提供者主要有:VMware、微软、Citrix、和OpenStack等。前两者是完全的商业产品;Citrix公司在监控程序上采用的是开源的Xen;OpenStack则完全是开源免费的,它的监控程序主要采用开源的KVM和Xen,也可以是其它的开源软件。

  按照服务的对象和范围,云可以分为三类:

  私有云:建一个云,如果只是为了单位(企业或机构)自己使用,就是私有云。就前面提到的“机房”而言,每个“机房”只是为本单位的不同部门、或不同用途而设立的。

  公众云:如果云的服务对象是社会上的客户,就是公众云。前面提到的“机房”可以是任何社会上的企业、单位、或个人。Amazon公司的AWS是现在世界上最大的公众云。其它公众云提供商还有Google、Salesforce、苹果的iCloud等等。

  混合云:如果一个云,既是为单位自己使用,也对外开放资源服务,就是混合云。有时,把两个或多个私有云的联合,也叫混合云。

  按照服务的模式,云又分为如下几类:

  基础设施即服务(IaaS):作为一个用户,如果得到了前面的“机房”,那你就拥有了信息系统的基础设施,你可以安装多个服务器,你可以配置自己的网络。由于这个基础设施完全是云所提供的服务,所以叫“基础设施即服务”。

  平台即服务(PaaS):你不一定需要“机房”里的所有服务,比如说你只需要“机房”里的一个服务器作为公司软件开发的平台,那么,你得到的这个平台也是以服务的形式出现的。

  软件即服务(SaaS):你甚至都不需要管理一整个服务器,你不关心什么服务器、也不关心服务器是怎么工作的,你只需要一种软件的功能。比如,你只想管理公司的客户信息(CRM),你就从云商那里得到完备的CRM软件功能。所以,软件也是服务。

  其它(XaaS):很多人使用iCloud,实际上就用iTunes在“机房”里开了一个用户帐号,这个账号给你提供5GB的免费存储空间,如果还需要更大一点,你就需要输入信用卡号了。这是“存储即服务”。你还可以把PC机放在云上(当然,你需要有一个小盒子能连到云上,这个小盒子还能连接显示器、键盘、鼠标等),这就是“桌面即服务”。“桌面即服务”有另外一个时髦的叫法,即“云桌面”。。。总之,都是XaaS,你可以试着把X 换成任何东西。

  你只要理解了前面说的“机房”,就可以理解它能提供的各式的服务(XaaS),大到综合性的基础设施,小到单一的云存储,你就不怕别人说一个什么时髦的新服务,都只不过是“机房”里的不同服务花样而已!

  六、云的诱惑

  试想,有了云上的“机房”,你如果是中小企业的IT部经理或CIO,你还会在建设机房上操心供电、空调、消防、设备故障等等琐事吗?你还会去调研购买何种服务器设备吗?你只需要一个帐号、一个信用卡,你就可以在云上“机房”里随意创建任何服务器,喜欢就启动,不喜欢就删除。你可以安装所需要的操作系统、配置任何数据库。你甚至不需要为员工购置PC电脑,有“云桌面”就可以了。

  英国政府用不到一年的时间,迅速建起了统一的“政府云”(简称“G云”),目的是把国家各个政府部门的IT系统都逐步转移到G云上去。自2012年正式启用之日起,政府各个部门一律禁止购买硬件的服务器,所有新增内容都必须是从G云上创建。

  不管是企业、政府、还是个人,如果想避开云,看来是很困难了。这就是为什么要多少了解一下“到底什么是云”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是Springmvc以及如果编写第一个入门程序

Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来,如下图&#xff1a; Springmvc处理流程 入门程序 创建web工程 springMVC是表现层框架&#xff0c;需要搭建web工程开发。 如下图创建动态web工程&#xff1a; 输入…

迷瘴

Problem Description 通过悬崖的yifenfei&#xff0c;又面临着幽谷的考验—— 幽谷周围瘴气弥漫&#xff0c;静的可怕&#xff0c;隐约可见地上堆满了骷髅。由于此处长年不见天日&#xff0c;导致空气中布满了毒素&#xff0c;一旦吸入体内&#xff0c;便会全身溃烂而死。幸好y…

驳斥《沙盒用于数据防泄密是重大技术原理性失误》

http://blog.ifeng.com/article/30786929.html 最近网上出现了一篇名为《沙盒用于数据防泄密是重大技术原理性失误》的文章&#xff0c;经作者鉴定&#xff0c;是某不良公司攻击技术领先的竞争对手苏州深信达公司的软文。该公司为何主动公开攻击竞争对手&#xff0c;可能和最近…

windows驱动开发学习

序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高…

Springmvc架构详解

框架结构 框架结构如下图&#xff1a; 架构流程 1、 用户发送请求至前端控制器DispatcherServlet 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器根据请求url找到具体的处理器&#xff0c;生成处理器对象及处理器拦截器(如果有则生成)一…

区间覆盖问题

用i来表示x坐标轴上坐标为[i-1&#xff0c;i]的长度为1的区间&#xff0c;并给出n&#xff08;1≤n≤200&#xff09;个不同的整数&#xff0c;表示n个这样的区间。 现在要求画m条线段覆盖住所有的区间&#xff0c;条件是&#xff1a;每条线段可以任意长&#xff0c;但是要求所…

Windows驱动开发如何入门

http://blog.csdn.net/charlessimonyi/article/details/50904854 http://blog.csdn.net/charlessimonyi/article/details/50904956

springmvc整合mybatis之准备阶段与文件配置

文章出处&#xff1a;课程资料 web.xml等配置文件的解释&#xff1a;打开博客 为了更好的学习 springmvc和mybatis整合开发的方法&#xff0c;需要将springmvc和mybatis进行整合。 整合目标&#xff1a;控制层采用springmvc、持久层使用mybatis实现。 步骤详解&#xff1a; …

悼念512汶川大地震遇难同胞

Problem Description 时间&#xff1a;2008年5月16日&#xff08;震后第4天&#xff09; 地点&#xff1a;汶川县牛脑寨人物&#xff1a;羌族老奶奶【转载整理】牛脑寨是一个全村600多人的羌族寨子&#xff0c;震后几天&#xff0c;这里依然能常常听到隆隆的声音&#xff0c;那…

Win10下VS2015(WDK10)驱动开发环境配置

1、 概述 微软在”WDK7600“以后就不再提供独立的内核驱动开发包了&#xff0c;而是必须首先安装微软集成开发环境VisualStudio&#xff0c;然后再从微软官网下载集成的WDK开发包、或者离线安装包&#xff0c;但是安装后Visual Studio就集驱动程序开发&#xff0c;编译&…

懒虫小鑫

roblem Description 小鑫是个大懒虫&#xff0c;但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心&#xff0c;小鑫还是要做这件事情的。我们把这个事情简化一下。有n块矿石&#xff0c;设第i块矿石由两个数字wi和pi表示。分别表示这块…

springmvc与mybatis整合之实现商品列表

需求 实现商品查询列表&#xff0c;从mysql数据库查询商 品信息。. DAO开发 使用逆向工程&#xff0c;生成代码 注意修改逆向工程的配置文件 ItemService接口 public interface ItemService {/*** 查询商品列表* * return*/List<Item> queryItemList();}. ItemServi…

中断处理程序与中断服务例程

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[-] 1 什么是中断2中断处理程序3中断服务例程4request_irq函数分析 1. 什么是中断 简单来说中断就是硬件设备与处理器的一种交流方式&#xff0c;比如当我按下一个键时&#xff0c;只有当处…

Windows驱动程序开发语言

Windows驱动程序和Win32应用程序一样&#xff0c;都是PE格式&#xff0c;所以说&#xff0c;只要某种语言的编译器能够编译出PE格式的二进制格式文件&#xff0c;并且能够设置驱动程序的入口地址&#xff0c;那么这种语言就可以用来开发Windows驱动程序&#xff0c;所以可以选择…

java 正则表达式 手机号 邮箱(转载)

转载地址&#xff1a;https://www.cnblogs.com/go4mi/p/6426215.html package com.modules.plateform.tool;import java.util.regex.Pattern; /*** 账户相关属性验证工具**/ public class AccountValidatorUtil {/*** 正则表达式&#xff1a;验证用户名*/public static final …

商人小鑫

Problem Description 小鑫是个商人&#xff0c;当然商人最希望的就是多赚钱&#xff0c;小鑫也一样。 这天&#xff0c;他来到了一个遥远的国度。那里有着n件商品&#xff0c;对于第i件商品需要付出ci的价钱才能得到。当然&#xff0c;对于第i件商品&#xff0c;小鑫在自己心中…

Windows驱动程序调用约定

调用约定是指在函数进行调用的时候&#xff0c;会根据不同的调用规则&#xff0c;翻译成不同的汇编代码。不同的调用约定&#xff0c;会有不同的参数的入参顺序&#xff0c;和调用堆栈的处理方式。比较常用的分为C语言调用约定_cdecl&#xff0c;和标准调用约定_stdcall. Wind…

装船问题

Problem Description 王小二毕业后从事船运规划工作&#xff0c;吉祥号货轮的最大载重量为M吨&#xff0c;有10种货物可以装船。第i种货物有wi吨&#xff0c;总价值是pi。王小二的任务是从10种货物中挑选若干吨上船&#xff0c;在满足货物总重量小于等于M的前提下&#xff0c;运…

获得Class引用的三种方式?Class.forName()、getClass以及.class的使用

上代码!!! package com.spring.partise;class A{static{System.out.println("I am A");} } public class helllo {public static void main(String[] args) throws Exception {System.out.println("------------得到Class对象的两种方式---------------")…

Windows驱动程序运行时函数的调用

编译器厂商一般在发布其编译器的时候&#xff0c;会连同运行时函数一同发布。Windows驱动程序不能再代码中使用编译器提供的运行时函数&#xff0c;因为大部分运行时函数是基于Win32 API实现的&#xff0c;由于Win 32 API运行在用户模式&#xff08;RIng3层&#xff09;&#x…