【转】 TechED2010与我(三) —— 初识云计算

时间:2021-03-05 23:27:28

作者用到的比喻很好。

网址:TechED2010与我(三) —— 初识云计算

初识云计算
最近“云计算”被炒的很热,但是由于工作重点主要是做WinForm的控件开发,对云计算的接触比较少,甚至一直没搞清楚到底什么是“云计算”,感觉上“云”是个神乎其神的东西。这次借参加Tech-ed的机会重点了解了下“云计算”。写篇博文分享一下自己的理解。初次接触,理解的比较肤浅,如果有误欢迎大家指正。
1. 为什么需要云计算 
微软给了个很有意思的比喻。     
很多年以前,一个很牛的人发明的电灯泡,导致人们需要电,这个牛人就成立了一个公司,这个公司专门卖发电机,所有需要使用电灯泡的人都要买发电机,于是这个牛人发了大财。后来,人们发现买发电机自己发电好贵呀。于是有些大公司就建立了大型的发电站,个人和小公司只要按时交电费就可以得到电,这种新方法比买发电机省钱,到今天一直在使用。     
很多年以后,一个很牛的人发明了计算机网络,导致人们需要网络服务。人们为了提供网络服务(电气时代的电灯泡),每家公司都要买服务器(电气时代的发电机),后来,人们发现买服务器好贵呀。于是一些大公司建立了大型的数据中心(就是很多很多…的服务器)。个人和小公司只要按时交使用费就可以使用服务器,这种新方法比买服务器省钱。对于这个新方法,大家给起了个很抽象的名字——“云计算”。
2. 什么是云计算     
据说在2008年的一次国际云计算大会上,主持人对于“什么是云计算?”这个问题上随机采访了20个听众,结果得到了22种答案。对于云计算准确定义的争论,至今也没有停止过(怪不得我一直没搞清楚什么是云计算J)。     
在*里给出了这样的描述性定义“云计算就是基于互联网的计算,它能像电网供电一样,按需把共享的资源,软件和信息提供给计算机和其他设备。”     
可能有人像我一样思考过,“云计算”和“分布式计算”有什么区别。对于这个问题,我的理解是,云计算强调的是服务,是一项租赁业务。而分布式计算强调的是技术实现。
3. 云计算的作用      
云计算最重要的作用当然是被提到好几次的一点——“省钱”,不能省钱估计就没人用了,呵呵。那么,它为什么能省钱呢?原来自己买服务器,现在租大公司的服务器,多转一次手,应该费钱才对。就好象租房住显然没有买房住合算呀(除非房东是慈善家或者脑袋有问题)。     
就我的理解,云计算是基于两个考虑来省钱的。     
一是避免浪费。     
最简单的例子,一个网络公司,一般高负载都是在晚上8点到11点左右。这段时间需要20台服务器才能保证稳定的访问,不宕机。而其他时段可能只需要2台服务器就可以了。这种情况下如果用买的,公司就必须一直保持20台甚至30台服务器(以备突发的大规模访问),而如果是使用云服务,就可以根据负载,动态的调整使用服务器的个数,8点的时候租20台,10点的时候如果突然访问量变大就租30台,过11点网民都睡觉了就把多余的退掉,就留一两台。这样就可以省钱了。     
二是集中管理,降低成本。     
在传统模式中,并不是服务器买回来就万事大吉了,几十台服务器的机房要面临着场地费用,人工管理成本,软件升级,服务器备份,维护,甚至布线,租用宽带等等的成本。而使用“云计算”的模式,以上问题都由提供商来集中解决,而集中管理的成本显然是低于分散到所有小公司的管理成本的。
4. 如何使用“云计算”资源      
说了这么多,还不知道“云”怎么用呢,其实,上云是比较简单的,很多大公司提供了这样的服务。由于Tech-ed是微软搞的,当然微软介绍的都是他自己的东西Windows Azure。     
对于使用微软的云,有个讲师说的很有意思,他说,只需要两步:一.到微软网站上注册帐号,二. 刷信用卡。他尤其强调,千万不要刷自己的信用卡,一定要刷老板的,要不你会很快破产的J。     
微软的云要求云端的应用程序分成两个模块,一个是WorkRole,一个是WebRole,WorkRole负责后台逻辑,WebRole负责前端展示逻辑,两者靠一个队列通信。如果装了Windows Azure SDK,可以在VS2010中创建出相应的工程模板。也有对应的向导把应用程序部署到云上。对于既有的ASP.net项目,如果想迁移到云上则首先需要对程序进行重构,按微软的结构要求把程序划分成WorkRole和WebRole在部署上去。
5. “云计算”可以为控件开发带来什么好处      
最后一个部分是我对自己工作的一个思考,毕竟我不是做网络应用的,第一感觉是暂时还用不上云。但是有一个点上可能还是可以在云计算上得到实惠的。场景是这样的,在每一个控件产品发布前,都需要对很多环境做集成测试,如不同的操作系统,WindowsXP,WindowVista,Windows7,不同的系统语言版本,英文,中文,日文,不同的IDE版本,如VS2005,VS2008,VS2010,这些条件组合起来的环境是非常多的,我们不得不准备很多的环境,有实机也有虚机,管理起来很麻烦。尤其是测试在特定环境下发现的bug在开发的环境里又很难重现和修复。最重要的是这个环境测试一年中可能只有一个月是需要的,其他时间这么的机器就会显得比较浪费。 而“云”的使用可能可以很好的解决这个问题,云服务中有一种模式叫平台即服务,当我需要时,我就可以根据我的要求到云上申请一个特定环境的机器,用完就归还。是不是可以少很多麻烦呢?     
这一部分都是基于我的理解想象的,还没有实践过。也不知道成本上是否划得来,要知道改变传统的做法本身就是要付出很大成本的。但是,所有的实现不都是从想象开始的么
6. 最后      
我对于云的很多理解都是比较肤浅的,接触云的时间比较短,也没有在项目中真正使用过。说真的,现在对于云的使用还是比较麻烦的,计费方法也比较抽象,不容易理解。但是我觉得,云计算确实是当前软件发展的一个趋势(单省钱这一点就足够了)也是软件应用模式的一次革命,值得深入研究探讨。相信将来使用云可以像在家里使用电一样方便。     
以上个人意见,欢迎拍砖~