云计算、分布式、SOA的概述

来源:互联网 发布:阿里云电视系统升级 编辑:程序博客网 时间:2024/04/30 17:11

一:云计算:
定义
1.狭义云计算
  提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。这种特性经常被称为像水电一样使用IT基础设施。
3.广义云计算
  这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。   这种资源池称为“云”。“云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等等。云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。这使得应用提供者无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本。   有人打了个比方:这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。   云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。   总的来说,云计算可以算作是网格计算的一个商业演化版
原理
  云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。   云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。   这可是一种革命性的举措,打个比方,这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。   云计算的蓝图已经呼之欲出:在未来,只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。从这个角度而言,最终用户才是云计算的真正拥有者。   云计算的应用包含这样的一种思想,把力量联合起来,给其中的每一个成员使用。
特点
1.数据安全可靠
  首先,云计算提供了最可靠、最安全的数据存储中心,用户不用再担心数据丢失、病毒入侵等麻烦。
2.客户端需求低
  其次,云计算对用户端的设备要求最低,使用起来也最方便。
3.轻松共享数据
  此外,云计算可以轻松实现不同设备间的数据与应用共享。
4.可能无限多
  最后,云计算为我们使用网络提供了几乎无限多的可能
应用
Amazon
亚马逊的云名为亚马逊网络服务(Amazon WebServices,下称AWS),目前主要由4块核心服务组成:简单存储服务(Simple StorageService,S3);弹性计算云(Elastic Compute Cloud,EC2);简单排列服务(Simple QueuingService)以及尚处于测试阶段的SimpleDB。换句话说,亚马逊现在提供的是可以通过网络访问的存储、计算机处理、信息排队和数据库管理系统接入式服务。
Google
今年4月,谷歌推出了谷歌应用软件引擎(Google AppEngine,下称GAE),这种服务让开发人员可以编译基于Python的应用程序,并可免费使用谷歌的基础设施来进行托管(最高存储空间达 500MB)。对于超过此上限的存储空间,谷歌按“每CPU内核每小时”10至12美分及1GB空间15至18美分的标准进行收费。最近,谷歌还公布了提供可由企业自定义的托管企业搜索服务计划。
Salesforce
Salesforce是软件即服务厂商的先驱,它一开始提供的是可通过网络访问的销售力量自动化应用软件。在该公司的带动下,其他软件即服务厂商已如雨后春笋般蓬勃而起。Salesforce的下一目标是:平台即服务。
Microsoft
在云计算的起步阶段,微软曾经历过不少周折。经过几年的磨合调整之后,这个软件巨头的云计算战略终于走上了正轨。
二:分布式:
1.什么是分布式计算:
分布式计算是一门计算机科学,主要研究分布式系统。一个分布式系统包括若干通过网络互联的计算机。这些计算机互相配合以完成一个共同的目标(我们将这个共同的目标称为“项目”)。具体的过程是:将需要进行大量计算的项目数据分割成小块,由多台计算机分别计算,再上传运算结果后统一合并得出数据结论。在分布式系统上运行的计算机程序称为分布式计算程序;分布式编程就是编写上述程序的过程。
2.分布式计算的工作方式:
项目方把大的计算任务分割成小块(任务单元),通过互联网分发给志愿者进行计算,志愿者计算完成后再通过网络把各自的计算结果返回到项目方的服务器。
3.为什么需要分布式计算:
a.可以帮助一些缺乏研究资金的、公益性质的科学研究,加速人类的科学进程
b.有效利用全世界联网机器的闲置处理能力
c.向大众普及科学意识
4.所有科学研究都可以用分布式计算来解决吗:
不是,如上分布式计算的工作方式,该类科学研究必须是可能通过计算来解决全部或部分问题,而且其计算过程必须比较容易被分割成个人计算机的处理能力能够接受的大小,因此,分布式计算并不适用于所有的科学研究。
5.分布式计算安全吗:
A.对用户方来说,加入任何一个项目前,您必须确保您可以信任项目的研制方,主要涉及两方面:
a.个人计算机上的隐私数据,您从项目方下载的计算程序,运行在本机,而且可以访问网络,因此,只有可靠的项目方才能保证您计算机上的隐私数据不会恶意的取走、修改等。
b.个人计算机的寿命,虽然分布式计算的计算程序一般运行在最低优先级,不会对您的日常使用造成影响,但计算程序全负荷运行时仍会对计算机的各个部件造成一定压力,要了解更多请查看分布式计算对计算机软硬件的影响。
B.对项目方来说,参加分布式计算的志愿者毕竟不是项目方自己的人员,并不是全体可信任,因此必须引入一定的冗余计算机制,才防止计算错误、恶意作弊等。
三:SOA:
SOA:面向服务的体系结构(service-oriented architecture)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。

对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。

虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA 系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与 SOA 相似。

然而,现在的 SOA 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。通过使用基于 XML 的语言(称为 Web 服务描述语言(Web Services Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前 CORBA 中的接口描述语言(Interface Definition Language,IDL)可比了。

Web 服务并不是实现 SOA 的惟一方式。前面刚讲的 CORBA 是另一种方式,这样就有了面向消息的中间件(Message-Oriented Middleware)系统,比如 IBM 的 MQseries。但是为了建立体系结构模型,您所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。您尤其需要找到业务的操作和业务中所使用的软件的操作之间的转换点。因此,SOA 应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给供应商付款的操作是商业流程,而更新您的零件数据库,以包括进新供应的货物却是技术流程。因而,工作流还可以在 SOA 的设计中扮演重要的角色。

此外,动态业务的工作流不仅可以包括部门之间的操作,甚至还可以包括与不为您控制的外部合作伙伴进行的操作。因此,为了提高效率,您需要定义应该如何得知服务之间的关系的策略,这种策略常常采用服务级协定和操作策略的形式。

最后,所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何 SOA 中都起着重要的作用。

我可以用面向服务的体系结构做什么?
对 SOA 的需要来源于需要使业务 IT 系统变得更加灵活,以适应业务中的改变。通过允许强定义的关系和依然灵活的特定实现,IT 系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。

改变和 SOA 系统适应改变的能力是最重要的部分。对于开发人员来说,这样的改变无论是在他们工作的范围之内还是在他们工作的范围之外都有可能发生,这取决于是否有改变需要知道接口是如何定义的以及它们相互之间如何进行交互。与开发人员不同的是,架构师的作用就是引起对 SOA 模型大的改变。这种分工,就是让开发人员集中精力于创建作为服务定义的功能单元,而让架构师和建模人员集中精力于如何将这些单元适当地组织在一起,它已经有十多年的历史了,通常用统一建模语言(Universal Modeling Language,UML),并且描述成模型驱动的体系结构(

原创粉丝点击