云计算入门文章——这一篇就够了

1. 云计算的定义

  将计算机的运算资源,存储资源以及网络资源集中整合起来通过虚拟化的技术,以fine—grand的方式释放出来,并以此为基础构建各类应用能够为消费者提供全面的、全方位的服务。

2. 云计算特征

 2.1 云计算关键特征

  • 敏捷、弹性:用户所使用“云”的资源可以根据其应用的需要进行调整和动态伸缩,并且再加上前面所提到的云计算中心本身的超大规模,使得“云”能有效地满足应用和用户大规模增长的需要。
  • 廉价、自动化:用户可以充分享受云计算所带来的低成本优势,经常只要花费几百美元就能完成以前需要数万美元才能完成的任务。云中不论是应用、服务和资源的部署,还是软硬件的管理,都主要通过自动化的方式来执行和管理,从而极大地降低整个云计算中心庞大的人力成本。
  • 按需自助服务:云”是一个庞大的资源池,用户可以按需购买,就象自来水、电和煤气等公用事业那样根据用户的使用量计费,并无需任何软硬件和设施等方面的前期投入。
  • 高可靠性:在这方面,云计算中心在软硬件层面采用了诸如数据多副本容错、心跳检测和计算节点同构可互换等措施来保障服务的高可靠性,还在设施层面上的能源、制冷和网络连接等方面采用了冗余设计来进一步确保服务的可靠性。
  • 虚拟化、抽象化:云计算支持用户在任意位置、使用各种终端获取应用服务,所请求的资源都来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置,这样能有效地简化了应用的使用。

 2.2 从不同角度看云计算

(1)从技术角度看
  云计算包含两部分:云设备和云服务

  • 云设备包含用于数据计算处理的服务器,用于数据保存的存储设备和用于数据通信的交换设备。
  • 云服务包含物理资源虚拟化调度管理的云平台软件和用于向用户提供服务的应用平台软件。

(2)从商业角度来就看

  • 用户模式变化:通过互联网提供软硬件与服务;用户通过浏览器或轻量级终端获取、使用服务。
  • 商业模式发生变化:从“购买软硬件产品”向“购买信息服务”转变,如同100年前用电的转变。

3. 云计算关键技术

 3.1 云计算关键技术

  大规模数据处理、大规模消息通信、大规模分布式存储、虚拟化技术。这几个是云计算的关键所在。

(1)IaaS使用的关键技术

  • 虚拟化(virtualization):虚拟化技术是指计算元件在虚拟的基础上而不是真实的基础上运行,它可以扩大硬件的容量,简化软件的重新配置过程,减少软件虚拟机相关开销和支持更广泛的操作系统方面。通过虚拟化技术可实现软件应用与底层硬件相隔离,它包括将单个资源划分成多个虚拟资源的裂分模式,也包括将多个资源整合成一个虚拟资源的聚合模式。
  • 分布式存储:为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式的存储系统,在这方面, Google 的GFS、Hadoop的HDFS(分布式文件系统)便是典范之作。
  • NoSQL(非结构化数据库):为了满足一些关系数据库所无法满足的目标,比如支撑海量的数据等,一些公司特地设计一批不是基于关系模型的数据库,比如Google的BigTable和Facebook的Cassandra等。

(2)PaaS使用的关键技术

  • 并行处理:为了处理海量的数据,需要利用庞大的x86集群进行规模巨大的并行处理,Google的Map-Reduce是这方面的代表之作。以Map-Reduce编程模式编写出来的程序具有很好的兼容性同时也具备很强的容错性,一旦服务器工作节点出现问题,可以直接将出现问题的节点进行屏蔽,同时将正在运行的程序转移到其他服务器上运行,这样就能够保证数据处理工作的正常进行。
  • 分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最著名的分布式缓存例子莫过于MemcachedRedis
  • 多租户(multi-Tenancy):就是能让一个单独的应用实例可以为多个组织服务,而且能保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。

(3)SaaS使用的关键技术

  • HTML、JavaScript、CSS
  • Flash

 3.2 云计算的演进历程

计算模式 定义 特点
并行计算 同时使用多种计算资源解决计算问题的过程,主要目的是快速解决大型且复杂的计算问题 把计算任务分配给系统内的多个运算单元
分布式计算 把一个需要巨大计算能力才能解决的问题分成多个小部分,把这些小部分分配给多个计算进行处理,最后综合这些计算结果得到最终结果 把计算任务分配给网络中多台独立的机器
网格计算 利用互联网把地理上广泛分布的各种资源连成一个逻辑的整体,就像一台超级计算机一样 分布式计算的一种。为用户提供一体化的信息和应用服务。

  云计算是网格计算、分布式计算、并行计算、网络存储、虚拟化、负载均衡等传统计算机和网络技术发展融合的产物

4. 云计算分层

  云计算并没有明确的分层体系,这里只是为了方便理解。

 4.1 资源层

  资源池层是指基础架构层面的云计算服务,这些服务可以提供虚拟化的资源,从而隐藏物理资源的复杂性。例如:物理资源指的是物理设备,如服务器等。服务器服务指的是操作系统的环境,如linux集群等。网络服务指的是提供的网络处理能力,如防火墙,VLAN,负载等。存储服务为用户提供存储能力。

 4.2 平台层

  平台层为用户提供对资源层服务的封装,使用户可以构建自己的应用。数据库服务提供可扩展的数据库处理的能力。中间件服务为用户提供可扩展的消息中间件或事务处理中间件等服务。例如:提供各种SDK(Software Development Kit,即软件开发工具包)、文档、测试环境和部署环境等在内的开发平台,它让用户能够使用提供商支持的编程语言和工具把应用程序部署到云中。用户不必管理或控制底层基础架构,而是控制部署的应用程序并在一定程度上控制应用程序驻留环境的配置。

 4.3 应用层

  应用层提供软件服务。企业应用是指面向企业的用户,如财务管理,客户关系管理,商业智能等。个人应用指面向个人用户的服务,如电子邮件,文本处理,个人信息存储等。

 4.4 用户访问层

  用户访问层是方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口

  • 服务目录是一个服务列表,用户可以从中选择需要使用的云计算服务。
  • 订阅管理是提供给用户的管理功能,用户可以查阅自己订阅的服务,或者终止订阅的服务
  • 服务访问是针对每种层次的云计算服务提供的访问接口,针对资源层的访问可能是远程桌面或者xwindows,针对应用层的访问,提供的接口可能是web。

 4.5 管理层

  管理层是提供对所有层次云计算服务的管理功能:

  1. 安全管理提供对服务的授权控制,用户认证,审计,一致性检查等功能。
  2. 服务目录管理服务提供服务目录和服务本身的管理功能,管理员可以增加新的服务,或者从服务目录中除去服务。
  3. 服务使用计量对用户的使用情况进行统计,并以此为依据对用户进行计费。 服务质量管理提供对服务的性能,可靠性,可扩展性进行管理。
  4. 部署管理提供对服务实例的自动化部署和配置,当用户通过订阅管理增加新的服务订阅后,部署管理模块自动为用户准备服务实例。

5. 云计算服务类型

云计算入门文章——这一篇就够了_第1张图片

  1. IaaS,基础设施即服务,指的是把基础设施以服务形式提供给最终用户使用。包括计算、存储、网络和其它的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。例如:虚拟机出租、网盘等。典型IaaS的代表产品是亚马逊的AWS(Elastic Compute Cloud)、Google的CloudEngine。
  2. PaaS,平台及服务,指的是把二次开发的平台以服务形式提供给最终用户使用。软件开发者可以在PaaS之上直接开发新的应用,不需要购买和部署服务器和OS、数据库和中间件软件而直接部署代码即可运行客户自己的应用。例如:微软的Visual Studio开发平台。Google AppEngine和微软 Azure都是PaaS模式的典型代表。
  3. SaaS,软件及服务,应用软件安装在服务供应商那里,提供给消费者的服务是运行在云计算基础设施上的应用程序。例如:企业办公系统Office365。Salseforce的CRM、Google Apps都是SaaS的典型代表。
  4. .FaaS,函数即服务,FaaS本质上是一种事件驱动的由消息触发的服务,FaaS供应商一般会集成各种同步和异步的事件源,通过订阅这些事件源,可以突发或者定期的触发函数运行。前使用最广泛的是AWS的Lambada。传统的服务器端软件不同是经应用程序部署到拥有操作系统的虚拟机或者容器中,一般需要长时间驻留在操作系统中运行,而FaaS是直接将程序部署上到平台上即可,当有事件到来时触发执行,执行完了就可以卸载掉。
  5. BaaS,后端即服务,BaaS只以API的方式提供应用依赖的后端服务,例如数据库和对象存储。

PS
  这里要提到一点,今天软件架构世界中新鲜但是很热门的一个话题——Serverless(无服务器)架构。无服务器并不是指不需要服务器,而是服务器对你来说是透明的,你跟本不用考虑任何和服务器有关的事情,你只需要说出你的需求即可。
  Serverless是非常简单的外包解决方案。它可以让您委托服务提供商管理服务器、数据库和应用程序甚至逻辑,否则您就不得不自己来维护
  Serverless通常包含了两个领域BaaS(Backend as a Service)和FaaS(Function as a Service),就是上边所谈到的。


6. 云计算部署模式

 6.1 公有云

  它是一种对公众开放的云服务,能支持数目庞大的请求,而且因为规模的优势,其成本偏低。公有云由云供应商运行,为最终用户提供各种各样的IT资源。

 6.2 私有云

  一般由一个组织来使用,同时由这个组织来运营。私有云主要为企业内部提供云服务,不对公众开放,在企业的防火墙内工作,并且企业IT人员能对其数据、安全性和服务质量进行有效地控制。与传统的企业数据中心相比,私有云可以支持动态灵活的基础设施,降低IT架构的复杂度,使各种IT资源得以整合和标准化。

 6.3 混合云

  它强调基础设施是由二种或更多的云来组成的,但对外呈现的是一个完整的实体。企业正常运营时,把重要数据保存在自己的私有云里面(比如:财务数据),把不重要的信息放到公有云里,两种云组合形成一个整体,就是混合云。比如说电子商务网站,平时业务量比较稳定,自己购买服务器搭建私有云运营,但到了圣诞节促销的时候,业务量非常大,就从运营商的公有云租用服务器,来分担节日的高负荷;但是可以统一的调度这些资源,这样就构成了一个混合云。

7. 云计算的应用

 7.1 IDC云

   传统IDC(Internet Data Center,互联网数据中心)的服务已经无法满足用户的需求,用户期望更强大、更方便和更灵活的IDC服务。IDC云是在IDC原有数据中心的基础上,加入更多云的基因,比如系统虚拟化技术、自动化管理技术和智慧的能源监控技术等。通过IDC的云平台,用户能够使用到虚拟机和存储等资源。还有,IDC可通过引入新的云技术来提供许多新的具有一定附加值的服务,比如,PaaS等。现在已成型的IDC云有Linode和Rackspace等。

 7.2 企业云

  对任何大中型企业而言, 80%的IT资源都用于维护现有应用的,而不是让IT更好地为业务服务。使用专业的企业云解决方案来提升企业内部数据中心的自动化管理程度,将整个 IT 服务的思维从过去的软硬件思维转变为以提供服务为主,使得IT人员能分出精力来为业务创新,成为半个业务人员。

 7.3 云存储系统

  由于数据是企业的非常重要的资产和财富,所以需要对数据进行有效的存储和管理,而且普通的个人用户也需要大量的存储空间用于保存大量的个人数据和资料,但由于本地存储在管理方面缺失,使得数据的丢失率非常高。而云存储系统能解决上面提到这些问题,它是通过整合网络中多种存储设备来对外提供云存储服务,并能管理数据的存储、备份、复制和存档,还有,良好的用户界面和强大的API支持也是不可或缺的。

 7.4 大规模数据处理云

  企业需要分析大量的数据来洞察业务发展的趋势,可能的商业机会和存在的问题,从而做出更好、更快和更全面的决策。还有,物联网会采集海量需要处理的数据。大规模数据处理云通过将数据处理软件和服务运行在云计算平台上,能利用云平台的计算能力和存储能力来对海量的数据进行大规模的处理,除了上面提到的物联网之外,还有许多企业和机构都会有这方面的需求。相关产品有Apache的Hadoop等。

 7.5 HPC云

   在科学方面HPC(High Performance Computing,高性能计算)领域,新一代的高性能计算中心不仅仅需要提供传统的高性能计算,而且还需要增加资源的管理、用户的管理、虚拟化的管理、动态的资源产生和回收等等。这时,基于云计算的高性能计算应运而生,也就是HPC云,其能够为用户提供可以完全定制的高性能计算环境,用户可以根据自己的需求来改变计算环境的操作系统、软件版本和节点规模,从而避免与其他用户的冲突, 并可以成为网格计算的支撑平台,以提升计算的灵活性和便捷性。HPC云特别适合需要使用高性能计算,但缺乏巨资投入的普通企业和学校。

 7.6 开发测试云

  开发测试总是繁琐、易错和耗时的过程,特别是在准备测试环境上面,还有会遇到诸如测试资源管理混乱,难于重现问题发生的环境和缺乏压力测试所需要的强大计算能力等棘手问题。而开发测试云能有效解决上面这些问题,其通过友好的Web界面,可以预约、部署、管理和回收整个开发测试的环境,通过预先配置好(包括操作系统,中间件和开发测试软件)的虚拟镜像来快速地构建一个个异构的开发测试环境,通过快速备份/恢复等虚拟化技术来重现问题,并利用云的强大的计算能力来对应用进行压力测试,比较适合那些需要开发和测试多种应用的组织和企业。

 7.7 游戏云

  由于传统游戏软件容量都非常巨大,无论是单机,还是网游,都需要在游戏之前,花很多时间在下载和安装上,使玩家无法很尽兴地玩游戏,再加上游戏的购置成本偏高,使得玩家在尝试新游戏方面,兴趣骤降。在这方面,业界部分公司推出了游戏云的解决方案,主要有两大类:其一是使用更多基于Web的游戏模式,比如使用JavaScript 、Flash 和Silverlight等技术,并将这些游戏部署到云中,这种解决方案比较适合休闲游戏;其二是为大容量和高画质的专业游戏设计的,整个游戏都将在运行云中,但会将最新生成的画面传至客户端。总之,休闲玩家和专业玩家都会在游戏云找到自己的所爱。在产品方面:第一种游戏云,已经有很多游戏都采用这种方案,比如许多Facebook上的休闲游戏采用了后端云和前端Flash这样的组合;而第二种游戏云,AMD已经发布了类似的技术,但碍于现有的网络环境,所以短时间内不会有特别成熟技术出现。

8. 关于云、CDN、IDC 三个概念的区别

  • IDC :Internet Data Center,即互联网数据中心,简称IDC机房。就是用来存放服务器的地方,是实体服务器的集群。这是随着互联网发展而兴起的服务器托管、租用、运维以及网络接入服务的业务。通俗的讲呢,就是机房+服务。
  • 云:Cloud,云计算平台的统称。云计算是以IDC为依托的上层建筑。
  • CDN:Content Distribute Network(内容分发网络 )。CDN形象的说有点类似于京东的物流模式,在全国各地建立物流点(缓存服务器),当有人从京东购买货物时(用户资源请求),京东根据用户的收货地址(CDN进行用户域名解析)找最近的或者最快的一个物流点进行派送(将访问用户连接到最近的缓存服务器进行资源传输)。

  讲到这里,我们大致已经能梳理三者之间的关系了,IDC是基础,纯物理硬件服务器服务;云平台是IDC基础上进行升级,服务器功能上再附加更多的综合服务;而CDN是基于IDC或者云平台的一种组网模式,通过分布于各地的缓存服务器,达到最快访问资源的目的。

你可能感兴趣的:(计算机杂说)