原文 http://www.jdon.com/jivejdon/thread/36383
云计算定义:从两个方面去定义,一个是底层机制,一个是用户模型
Infrastructure底层机制:Cloud Cluster Grid;
用户角度分为:Utility Computing SaaS/SOA
Utility Computing代表是:Amazon EC2, Google AppEngine
SaaS代表是:一些online office 和在线CRM等等
主 要谈谈Utility Computing,简称UC,提出面向资源ROA,和SOA面向服务不同,Hardware as a service (HaaS), Infrastructure as a service (IaaS), Platform as a Service (PaaS)
说白了,UC就是卖可伸缩性 Scalable,UC是一个伸缩机,这是它的最大价值,你一个小应用,当初没想到能搞那么大,风险资金进来了,半年访问量翻100倍,而这些巨大访问是你当初小应用没有考虑到的;但是也不能让每个编程序的人都掌握架构师的知识:高伸缩性 ,就象我在jdon天天谈伸缩性 ,没几个人明白,明白了也不会站在这个高度来思考,所以,架构师知识少有的。Google APP Engine 都给你事先考虑好了,帮助无缝拓展,这是它的价值,也是云计算 的一个核心价值。
降低费用也是UC的一个卖点,人人做一个web 2.0网站成本低,随着规模扩大,成本就降低.
AMAZON EC2特点:
租个VM实例运行您的软件。按照需求变化监测和增加/减少VM数。使用步骤:
1.创建一个Amazon Machine Image (AMI),可以是: applications, libraries, data a和其他设置
2.上传AMI到Amazon S3 (只是存储)
3. 用Amazon EC2 web service配置你自己的安全策略和网络。
4. 选择OS, 启动你的AMI
5. 通过Web界面或API监控
GOOGLE APPENGINE特点:
使用Python 或Java写你的应用,然后交给它,它就给你负责其余的事情,步骤:
1.下载 AppEngine SDK
2.本地开发你的应用程序
例如helloworld.py:
print 'Content-Type: text/plain'print ''print 'Hello, world!‘
3.python 要求, 输入: requested url, 输出: return message
配置app.yaml
application: helloworld
version: 1
handlers:
- url: /.*
script: helloworld.py
存储持久化:分布式文件系统和用GQL等API操作数据库
4.本地调试
5.注册一个应用id,网址:http://application-id.appspot.com
6.将你的应用提交给Google:
appcfg.py update helloworld/
两者对比:
横向底层VM: Amazon EC2
带框架的丰富的VM: Google AppEngine
伸缩性:EC2缺省是不伸缩的
GAE是高度自动伸缩。
总结一下云计算 :
Cloud Computing = SaaS + UC
p2p:不是使用云机制,每个终端得不到回报, 因此可靠性很低。
Grid Computing:无法分享,是一个私有云计算 的概念。
云计算适合所有瘦客户端模型,是这些领域杀手级的架构,包括移动手机 有限电视机顶盒 上网本和普通浏览器等等。
Google AppEngine: http://code.google.com/appengine/
Amazon EC2: http://aws.amazon.com/ec2/
下面这篇PPT介绍云计算 比较专业:
http://www.umiacs.umd.edu/~jimmylin/cloud-2008-Fall/Session1.ppt
http://www.umiacs.umd.edu/~jimmylin/cloud-2008-Fall/Session2.ppt
有几个观点很吸引人:
1. AJAX是前端云计算
2. 内存缓存 模式:分享 分布 混合
3. 并行计算概念
本周的JavaOne大会中有专门的云计算 产品介绍,都是已经实现,并正常运行的,除了上面google app enginee和Ec2以外,还有更多:
Salesforce.com:Scalability 可伸缩性 被内置它平台中。
Intuit Partner Platform(https://ipp.developer.intuit.com/):提供云计算 服务:能让储存数据然后部署和整合你的应用程序。
Windows Azure:微软的云计算 产品:2008年底赶趟才出来,基于Java应用的程序可以和Azure互动。
Sun Cloud:可以从一个Web界面管理虚拟的数据中心,这个中心可能是你自己的,只不过由SUN代管。你可以将Ubuntu, Windows, and LAMP 等服务器加入你的数据中心。甚至可以设置多层架构,如第一层服务器 负载平衡器 3个Web服务器和一个后端数据库之类可伸缩的scalable架构。
Cloud Computing: Show Me the Money:
http://java.sun.com/javaone/2009/articles/gen_cloudmoney.jsp
很多人看了这么多云计算 产品已经出来,如果自己的业务系统访问量非常庞大,也跃跃欲试一下云计算 。
云计算引入的突破口在哪里?就是伸缩性 Scalability,要让你的程序必须具备高Scalability,铁板一块的过程化程序怎么能够云计算 呢?
而伸缩性 的引入前提是你的程序是可拆分的,如果程序从头到尾都是相互依赖,不能分离,就没有伸缩性 。
那么如何细分你的程序呢?方式很多,重要的一个实践就是引入对象缓存 ,具体见下面讨论:
http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=36063&message=23123017#23123017
建设一个千兆级数据云计算 的项目著名社区网站LinkedIn架构:Hadoop+Voldemort
文章地址:
http://project-voldemort.com/blog/2009/06/building-a-1-tb-data-cycle-at-linkedin-with-hadoop-and-project-voldemort/