云计算比较: Google AppEngine vs. Amazon EC2/S3

云计算定义:从两个方面去定义,一个是底层机制,一个是用户模型

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/



[该贴被banq于2009-06-04 14:50修改过]


本周的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
[该贴被banq于2009-06-06 15:14修改过]

很多人看了这么多云计算产品已经出来,如果自己的业务系统访问量非常庞大,也跃跃欲试一下云计算。

云计算引入的突破口在哪里?就是伸缩性Scalability,要让你的程序必须具备高Scalability,铁板一块的过程化程序怎么能够云计算呢?

而伸缩性的引入前提是你的程序是可拆分的,如果程序从头到尾都是相互依赖,不能分离,就没有伸缩性。

那么如何细分你的程序呢?方式很多,重要的一个实践就是引入对象缓存,具体见下面讨论:
http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=36063&message=23123017#23123017

这个写的挺好啊,没人回复?