求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
云计算浅谈
 
火龙果软件    发布于 2013-9-24
 

一:云计算介绍

微软前一段通知,微软的云计算平台windows azure在中国的服务将会于10月1日开通。微软承诺未来90%的开发人员将从事云计算方面的工作。在这个重要的时刻,是时候提醒更多的开发人员做技术上的更新。上月有机会受邀为某培训机构的软件专业暑期班开设云计算讲座,遂将过去的工作总结了一下,发现自己都获益匪浅.现在以连载方式的发表(共五讲),以润读者.

本讲讲3点内容:

1、云计算的产生

2、云计算架构

3、云计算服务构成

1.云计算的产生

任何一项新的技术产生一定有其背景。现在我们就看看是哪些因素导致云计算的产生。假如你是一个程序员,希望创建新的网站。你会发现为了提供好的服务,你需要花巨资购买硬件,然后是巨资购买系统软件,再之后需要一个维护团队。我的一位朋友为了他的电子传真服务,投入70万的费用。当然这些仅仅是开始,一个网站还要考虑一个头痛的问题,某些服务比如电子商务,可能你的90%的业务就集中在某些大的节日。网址的访问有高峰,低峰,那么传统的网站可能就要以高峰时段的访问量来配置你的硬件设置,以免流失客户,在低峰时段,硬件的资源就处于闲置状态。同时网站还要保证系统的高的稳定性,无论洪水,地震,政治不稳定导致的战争都不影响网站的运行,这些不是一个小公司可以保证的。

现在换一种思维,如果一个公司提供这样的服务,提供服务器,所有所需软件已经安装好了,他们保证系统99.999%可用。你所做的只是按照你的需要租用这些资源,任何时间修改配置文件,就可以扩展或收缩你占用资源:内存,cpu,空间等。不因为多占用资源而浪费,也不因为资源不够而流失客户。而这个公司都是世界级的大公司,他们在全球建立多个数据中心,你的任何数据都在不同的地方至少有三个备份。无论洪水,地震,政治不稳定导致的战争都不影响网站的运行。同时还由于新的技术革命使得这样的数据中心较传统意义上的数据中心维护成本大大降低,你只需低廉的租金就可以让你的网站拥有与大公司叫板的底气,这样的服务你需要吗?这些服务就是云计算所承诺的。

那么什么是云计算?其实互联网本身最早就被称为云,现在的“云”只是互联网的子集,用来特指由服务供应商提供的建立互联网应用的软件,平台,架构和消费服务。这两年云计算也很热,很多的概念都出来了,别说年轻的程序员来讲,很多老的程序员也是一头雾水。比如:

1、SaaS 软件即服务

2、PaaS平台即服务

3、S+S软件加服务

4、DaaS数据库即服务

这些每一项都是云计算服务,那么为什么还要分这么多种呢?这里我们可以做一个比喻,一个人赶象,遇到了四个瞎子,每个瞎子摸着象的不同部位,然后各人心中就有了象的不完整印象。正确的答案是,以上四种提法其实都反映了云计算的不同方面。我们在后面的云计算服务构成再细讲。

我们现在主要讲云计算如何产生的。由多家公司对云计算的产生做出了巨大的贡献:第一个公司是SalesForce.com,这家公司最著名的产品是CRM(客户关系管理系统)。这家公司发现很多中小型的公司购买不起CRM产品,同时也认为这里存在着巨大的市场。因此,就将他们的CRM产品革命性地实现了软件即服务即SaaS,让千万家中小企业租用他们的在线CRM服务。他们的做法很成功,SaleForce.com目前有几千万的用户。SalesForce.com的成功使更多的软件公司认识到SaaS的潜力。第二个公司是vmware,他们的贡献在于虚拟机技术,使得操作系统不再倚赖硬件。以前一台电脑中可以安装多个操作系统,但永远只能有一个操作系统在运行。虚拟机技术在可以让多个操作系统同时运行,并且分享计算机的硬件资源。之后Google发布Google Apps,提出所谓的“云计算”(cloud computing)概念;之后又有Amazon,Microsoft加入,他们不仅紧跟技术发展步伐,实现了操作系统,软件的虚拟化,同时将虚拟技术扩展应用于数据中心,最终导致云计算平台的产生。

2.云计算架构

下面的这张图就反映了云计算的架构。在图中,最核心的当然是数据中心海量的服务器加上负载平衡器,DNS,Switches,Routers,这是传统的数据中心的架构。多出的是管理功能组件(Management Fabric)和计量(Metering),计费(billing),报告(Reporting)功能组件。

管理功能组件所做的事情是,根据事先准备好的安装了全部所需软件的各种虚拟机(OS Image)镜像,根据用户的配置,自动将用户选定的虚拟机安装到服务器银行中,根据用户配置设定使用的硬件资源,并且管理用户部署应用的整个生命周期。管理功能的自动化大大降低了数据中心的维护成本。

用户对资源的使用无论上传,下载,占用存储空间,计算等都有计量功能模块记录,最后计费,然后产生每月报告。

所以最后整个数据中心就成了一个超级计算机,为用户提供云计算服务。

3.云计算服务构成

如前所述,云计算特指由服务供应商提供的建立互联网应用的软件,平台,架构和消费服务。分如下四个层次:

1、消费者服务层

这其实是我们每个人都熟悉的一些服务,比如邮件,及时消息,网络查询,网络游戏,手机应用,社会网络,网络地图。这些存在了很多年,现在很多公司将这些服务实现支持更过的标准,并部署到云计算平台上。

2、企业服务层

今天大部分SaaS应用比如Salesforce.com CRM,Microsoft Dynamic CRM online,国内的阿里软件都属企业服务层。

3、中间件服务层

Amazon 电子商务系统

Google 搜索服务

Windows Live service( Bing搜索, windows live 标示服务等)

Windows Azure AppFabric

微软最喜欢的也许就是S+S服务,比如Office软件使用Windows Live Skydrive,分享保存文档。

4、平台服务层

PaaS:Amazon's Elastic Compute Cloud (EC2),Microsoft Windows Azure

DaaS:Microsoft SQL Azure

二:云计算介绍(2)

本来这一讲应该随上一讲结束,不过本人时间有限,所以拆开了.另外既然题名为浅谈,就些微提一些概念,唤起大家对云计算的注意,抛砖引玉.更多的内容可以参考我上一讲给大家提示的"windows azure platform" 一书。

本讲讲两点内容:

1、云计算服务供应商

2、SaaS对软件交付模式及产业的影响

1.云计算服务供应商

云计算服务有四个层次消费者服务层,企业服务层,中间件服务层,平台服务层构成,供应商可以选择供应任何一层的云计算服务,就看他们的技术实力了.目前看来真正能够提供四个层次服务的也就是Amazon,Microsoft,Google.国内的云计算供应商如金蝶提供中间件服务层,阿里软件则属于企业服务层。所以我们选择云计算服务时,一定要清楚自己需要什么样的服务,然后才做出选择。比如如果我们需要为企业的行业软件选择云计算平台时,可以考虑企业服务层或中间件服务层的供应商。但如果是一位初学者,或者开发一款产品,需要更大的扩展性,可以使用多个层次的云计算服务的话,我就建议你使用Amazon,Microsoft,Google的服务。这里还有区分,如果是.net,php开发平台,Microsoft就最好了,其次Amazon;如果使用java和Python开发平台Google就是最好的选择,其次还是Amazon。

我们现在就浏览一下Amazon,Microsoft,Google两家公司提供的云计算服务:

1、Amazon

Elastic Compute Cloud(EC2) 平台服务层, 开发者可以根据需要创建,运行或终止虚拟机,部署你的应用。虚拟机支持的操作系统:linux,windows 2003,opensolaris…;数据库:Oracle,Sqlserver2005;WebServer: Apache,IIS,Java application Server …

Amazon SimpleDB 平台服务层,存储查询结构数据,但不是关系型数据库。

Amazon Simple Storage Service (S3) 平台服务层,存储查询非结构数据。开发者可以创建多个桶(Buckets),每个桶有唯一命名空间;每个桶中可以存放多个对象(objects),每一对象使用键(key)标示,每一个对象最大5G。对象可以是任意文件。

CloudFront 平台服务层,当网页请求一项内容的时候,请求会被定向到距离用户最适合的一个边缘节点。如果是第一次请求该内容,CloudFront会从S3下载内容并作缓存,然后分发给用户。后续的请求从CloudFront的缓存中取数据。这样的设计,加上CloudFront独立于S3,又分散在全球,可以实现高可用、低延迟、高速度的数据传输。

Simple Queue Service (SQS) 平台服务层,可以信赖的消息存储;分布式系统将通过SQS共享或传递消息
Amazon Associates Web Service(ECS)中间件服务层,ECS 是大多数编程人员使用的 Amazon 服务。它对开发人员具有很大的吸引力的原因在于:它提供了对 Amazon 的产品数据库中所包含的大量信息的访问。 它可以作为通过 Amazon 加盟计划来赚钱的机会。

2、Microsoft

Windows Azure 平台服务层,微软云计算服务的核心平台。提供Host 服务,可以部署你的web应用;提供存储服务:Blob类似Amazon S3服务;Table类似Amazon的 SimpleDb;Queue服务类似于Amazon的SQS服务。下一讲我会更详细介绍。
Sql Azure 平台服务层,微软云计算平台的数据库引擎。微软应开发人员的要求将SQLServer的核心移植到云计算平台。这是我的最爱。我的一个前期开发的项目基于SQL Server, 我们通过非常非常小的改动,就迁移到SQL Azure平台了。
AppFabric 中间件层,包括企业服务总线和访问控制服务

SharePoint ,Dynamic CRM online 企业服务层

Windows lives 服务 消费服务层

3、Google

Google App Engine 平台服务层,开发和部署Google架构的web应用的环境,支持Python和Java语言

Google App 消费服务层:Gmail,Google Talk, 中间件层:Google Calendar,企业服务层:Google docs,Google Sites

2. SaaS对软件交付模式及产业的影响

前面介绍了云计算服务商,作为我们绝大多数的开发人员要做的工作,因为我们不是Amazon,Google,microsoft的职员,我们不会去开发平台服务层,消费服务层,很少人去开发中间件层。我们所日常做的只是开发一款基于云计算的应用,然后免费开放或让用户租用。这也就是开发企业服务层的应用,也就是所谓的SaaS。SaaS是一场革命,就如清末革命党来了,许多人要剪辫子了。真的吗?我看看SaaS对软件交付模式及产业的影响,这分两个方面:

1、对于软件企业的影响

改传统软件的买Licence为租用服务,传统软件价格高企的尴尬:比如在思维导图领域Mind manager的售价是2000多元,而我们开发一款基于云计算的mindv思维导图工具,个人版每年租费最低可达158元。前者一次性购买软件,而且只是购买某个版本,如遇升级需要再付升级费用;后者可以以极低的年费使用这个软件,并且尽享系统不停的功能升级。如此一来,传统软件就发现价格的高企,会让许多企业却步。所以很多传统软件就会被迫向SaaS进军,当然开发人员就有很多的机会,很多小型的公司就会有机会挑战大的公司。

从售卖关系转变为服务关系,企业更重视系统的改进完善:Saas服务模式下,用户不再一次性购买软件的版权,而是如与燃气公司签订合同,按月或年支付租金。这样的模式下,企业需要不断升级系统,提供更多的功能或改善软件性能,以吸引用户续订服务;软件企业不能一锤子买卖,需要提供一年24x7的优质服务,这对企业的要求可以说是提高了。
SaaS让盗版无版可盗:SaaS软件为在线服务,盗版没有可能了。没有了盗版,任何企业都会获得足够的资金,从而促进软件产品不断完善。

2、对用户的影响

“先试后买”降低了信息化实施风险:SaaS为在线服务,用户可以先试用,然后购买。可以降低购买完发现不能满足企业需求的风险。

分期付款模式中小企业信息化的福音:SaaS由于基于云计算,并且由众多中小企业分享同一平台,大大降低了软件运营成本。所以可以提供中小企业付得起的服务。

使用软件无需额外付费:用户只需要有一步电脑,使用浏览器就可以使用软件。无需购买数据库,工具软件等;无需维护团队的建设;仅仅按月付出服务租金既可。

因此我预测未来会有越来越多的企业选择SaaS方式提供软件服务;同时会有越来越多的企业或个人选择租用SaaS服务。这终将成为一个趋势,越早认识到这一点,无论你是企业还是一个开发人员,都会成为你的竞争优势。反之就会陷入被动。正如上次提到了,微软现在70%的开发人员从事云计算方面的工作,未来将达到90%。我估计如果不是微软摊子这么大,有那么多的软件需要维护,这个比例会是100%。朋友们,现在是不是要革命的时刻,是不是要“剪辫子”的时刻到了?!

三:微软云计算服务介绍

任何技术的发展都是渐进的,不会凭空产生一个新的巨变,包括云计算。这对于程序员们是一个好消息,因为根据我使用微软云计算的经验,对于一个有经验的.net程序员来讲,感谢微软的开发环境及充分考虑了程序员需求的服务设计,我们所需改变不大。

本讲介绍四点内容

1、Windows Azure

2、Sql Azure

3、AppFabric

4、Windows lives

1.Windows Azure

Windows azure是微软的云计算操作系统,属于平台层服务。对于一个操作系统来讲,肯定要包括三个基本服务:计算,存储和管理。

1、计算

Windows azure 提供基于64位windows 2008 server托管服务,平台安装IIS7,用于部署你的web服务。这里你可以简单理解它为一个虚拟主机。Windows azure支持系统虚拟化技术Hyper-v,因此可以根据用户的要求动态扩展或伸缩服务。比如发布系统时,你可以通过webRole的属性窗口来修改配置文件,选择虚拟机的大小。

2、存储

Windows azure支持三类存储:

1)Blob

存放视频,图像,音乐等二进制数据,每一个Blob最大50GB。

2)Queue

用来存放消息最大8KB,在不同应用,不同运行实例间异步通信通道

3)Table

存放结构性数据,比如你可以创建Table,包含多条记录Entity,每个记录有很多列Property。并通过LinQ查询。

在你的应用中如果需要使用这些存储,需要开发环境中安装Windows azure sdk(如果你使用的是VS2010就不需要了),Project中需要添加对Microsoft.WindowsAzure.ServiceRuntime,Microsoft.WindowsAzure.StorageClient,Microsoft.WindowsAzure.Diagnostics程序集的引用。SDK可以从微软网站http://www.microsoft.com/windowsazure/下载;初学者最好还是多看例子,你可以下载微软的Windows Azure Platform Training Kit http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&displaylang=en,这里有很多好的例子,我就不多讲了。我们之前的一个项目mindv在早期没有选择云计算平台,使用的是文件服务系统。不过我们预先考虑到要移植到云计算平台之上,所以将涉及读写文件部分都集中到业务层的FileProcess类中,后期决定移植到云计算平台上,只是将这个类替换掉,所需工作非常小。

3、管理

管理服务为Windows azure云计算服务提供自动化基础架构和服务管理功能:自动启动虚拟机并部署服务到其中;根据用户定义,配置Switch,访问Routers,负载平衡;维护服务的正常运行;无间断,无干扰现有服务的同时升级服务;支持自定义日志和服务使用情况监测。

例如:下图为Windows azure Host server管理界面,在这里你可以发布,升级,暂停,配置,删除你的Web应用。

2.Sql Azure

Windows Sql azure是微软应开发人员的强烈要求增加的服务,属于平台服务层。

1、关系数据存贮

对于我们开发人员来讲,我们可以认为Sql azure就是Sql server的一个子集。比如它支持传统意义上的Table,Index,views,Stored procedure,triggers。但不支持:分布式查询, 分布式事务处理,不能使用TSQL查询修改物理资源比如:文件组的引用,SQL Server 2008的Resource Governor。

比如我在移植Sql server脚本时,就做了如下处理:

a.创建索引不能引用文件组:

CREATE NONCLUSTERED INDEX [IX_SendLogSubscribe] ON [dbo].[LetterSendLog] 
(
[SubscribeGuid] ASC
)
--ON [PRIMARY] ---注视掉
GO

b.存储过程中如果有参数或变量:

--@ErrorMessage nvarchar(max)  ---注视掉
@ErrorMessage ntext --替换为

c.存储过程不能在编译时加密

基本上我们的数据库脚本做以上几类修改,就可以在Sql azure上通过编译了。如此简单,这一点怕是让很多开发人员大感意外了,没有想到微软云计算如此之为开发人员着想。太让人感动了!!

最后可能朋友还要问如何连接数据库,这不用担心,在数据库管理界面可以生成数据库连接字符串,你只需修改连接密码,其他同使用任何一个Sql server数据库没有区别,以下是连接字符串样式:

Server=tcp:xxxxxxxxx.database.windows.net;Database=xxxxx;
User ID=xxxx@xxxxxx;Password=xxxxx;Trusted_Connection=False;Encrypt=True;

2、数据同步

微软的Microsoft Sync Framework可以将数据在不同的位置间(企业,合作者,消费者设备)同步。开发人员就可以使用Sql server 2008的导入导出功能进行数据备份或发布。

3、管理

作为一个云计算平台层服务,还有计量,计价,负载平衡,故障转移和安全的功能。

4、数据访问

客户端的访问Sql azure支持Ado.net,Entity framework,Ado.net data service,ODBC,JDBC,Linq clients。

3.AppFabric

AppFabric为中间件服务层,提供了分布式系统间连接性和消息传递的功能

Access control(访问控制)

是一个抽象了的验证授权流程的云计算服务,用户可以定义基本规则,授权角色的访问。从而为多个系统提供统一的访问控制。

Service Bus(企业服务总线)

AppFabric较企业服务总线范围更广,因为它已经是互联网范围,跨企业,跨云。Service bus为分布系统间提供消息交换,模式有:

1)发布/订阅

2)点对点

3)消息队列

4.Windows lives

按照第一讲中,云计算服务分四层,微软提供的云计算服务除了平台层,中间层外,还有企业服务层(share point, dynamic crm)和消费层服务windows lives.

企业服务层(share point, dynamic crm)以后有机会再讲。这里讲一下平时少人注意的windows lives服务,包括如下多个服务:

1)Mesh服务  Mesh服务目前是一个免费的服务,只需你有一个windows live id。Mesh有一个客户端软件,安装后可以添加设备到Mesh,并在Mesh中的设备间同步数据。Mesh有5GB的免费存储空间,用来存放设备要同步的数据。开发人员可利用Live Mesh迅速构建一些应用,以加强设备间的文件共享与同步功能。未来你在办公司修改一个文件,保存到Mesh;回到家中打开家中电脑可以继续修改;如果在旅途,打开手持设备,仍然可以修改同一个文件。这个文件可以是你开发应用的特定文件。我个人觉得利用Mesh服务的功能可以开发出非常多的小应用出来。

2)目录服务  主要是存放Mesh中设备间的关系。

3)存储服务  登陆你的hotmail,就可以使用Sky drive,那里有25GB的免费存储空间,主要用来存放office文档,照片。这些文档可以选择共享或私有。只可惜微软不可能提供Sky Drive的SDK,要不然,很多程序就可以使用这25GB的免费空间了。

4)标示服务  也就是Windows live id 服务,或者再早以前的passport服务。一个网站可以将用户登录验证的工作交给windows live id服务,以便用户可以快速登陆你的网站,而不用重新注册一个新的ID,记忆一个新的password。而这会给用户非常好的体验。如图中,用户注册时,可以不用创建新的login id,而是直接使用现有windows live id,注册,以后登录时,会由hotmail验证,然后网站允许你登录。

当然网站就必须调用windows live id服务,为此需要在https://live.azure.com/Cloud/Provisioning/New.aspx?OfferID=585ba985-1472-4732-a52c-f050e0505b9f这个网站申请application id。并且开发一个页面liveAuthHandler.aspx ,来接收并处理Windows live id服务验证完用户的响应。

Application ID: 00000000xxxxxxxx 
Domain(s): xxxxx.com
Return URL: http://xxxx.com/liveAuthHandler.aspx
Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

5)通信  也就是Windows Live Messenger了,我相信很多人都在用。

6)搜索  使用Bing搜索服务你可以在你的程序中集成下列功能:

1.从Internet上获取有用的信息

2.在你的应用程序中添加广告内容

3.提高和增强搜索功能

4.查找特定位置信息

5.翻译条款和文本块

如果你的应用中希望使用Bing搜索服务,可以在http://cn.bing.com/developers 申请AppID,并获得一切所需资料。在我们的mindv项目中就使用了bing搜索服务,为用户查找图片并嵌入思维导图中。

7)地理空间  就是Bing Map服务。你可以看看这个网站的演示:http://travel.msra.cn/routereplay.aspx?routeid=217575

本讲给大家介绍了微软的云计算服务,我想说的是,应用云计算服务对于一个.net程序员来讲学习的成本非常小,如果你没有被云计算的概念炒晕,吓怕,其实就那点东西,都是我们可以轻松驾驭的。祝愿大家轻松上路!

 
相关文章

云计算的架构
对云计算服务模型
云计算核心技术剖析
了解云计算的漏洞
 
相关文档

云计算简介
云计算简介与云安全
下一代网络计算--云计算
软浅析云计算
 
相关课程

云计算原理与应用
云计算应用与开发
CMMI体系与实践
基于CMMI标准的软件质量保证
 
分享到
 
 


专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件的思考
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS
更多...   
相关培训课程

云计算
Windows Azure 云计算应用开发