Eucalyptus架构特征
初步浏览了eucaplytus的代码.
项目结构如下:
clc
modules
cluster-manager: cluster WEB管理模块
group-manager: 用户/组 WEB管理模块
storage-manager: 存储(S3)管理模块
storage-controller: (EBS)块存储管理模块,也可以看作是EBS的代理.
image-manager: 镜像管理模块.
cluster: Cluster Controller模块.控制局域网内的node controller
node: Node Controller模块.控制当前机器节点上的虚拟机实例.通过libvirt来操纵具体虚拟机实例.
storage: Storage Controller,也就是Walrus. 实际上相当于一个存储委托,后端挂接具体的存储系统(如S3).
每个模块都使用AXIS来提供一个WSDL web服务操作接口.
目前的代码实现只可以看作一个prototype.在架构设计上有一定指导意义, 但仍有非常多的扩展工作要做.
===大文件存储===
Yahoo! Hadoop HDFS
KFS: Google创始人的印度同学实现的开源分布式文件系统,实现代码一般.
===分布式计算===
MapReduce: Yahoo! Hadoop: MapReduce项目的继续跟进.
包括MapReduce Aggregating Framework, Pipes, Streaming, Cascading
海量数据统计分析
Pig: 等价于Google Sawzall, 有部分分析必要
Hive: 提供SQL风格查询接口, 当前的实现不是很优化,没有combine的优化,比较低效,数据导入格式也不是很灵活.不如自行实现MapReduce划算.
===弱关系存储===
中心化架构
HBase: master/slaves架构的仿bigtable产物,有一些东西需要汲取。
Hypertable: 开发者被Microsoft挖走,
master/slaves架构的bigtable产物,也有一些东西可以汲取。
去中心化架构:
Facebook的Cassandra: 源码深入分析中.
Amazon Dynamo: 文档已经完整分析完毕.
===一致性系统===
zookeeper:分布式一致性系统,继续源码分析与跟进。
===SaaS===
阿里软件SaaS
Salesforce
===PaaS===
Google GAE: 的持续跟进: 主要看文档和平台托管应用的开发,需要借鉴很多东西.
10gen: 平台的源码分析还没有展开.估计工作量不会太大.10gen中的AppServer需要
着重看下.
Microsoft Azure: 这个肯定和Visual Studio系列联系紧密,开发向导肯定足够人性化,
MSDN上有相关课程,这个也需要关注.
===IaaS===
SimpleDB: key/value存储服务.
Amazon S3:
Amazon EC2:
Eucalyptus:
如果你想自己构建一个Google AppEngine的环境,那就用AppDrop,AppDrop可以运行在Amazon的EC2上。根据AppDrop的宣传,通过AppDrop你就不会被Lock in在Google的平台上了。这样如果你对与Google AppEngine的服务不满意,就切换到AppDrop的平台,你可以直接租用AppDrop的服务,也可以自己租用EC2,然后使用开源的AppDrop构建自己的Google AppEngine环境。甚至你也不想使用Amazon EC2的服务,那就使用Eucalyptus构建一个EC2的兼容的IaaS服务,然后运行AppDrop,在上面Host自己的Google AppEngine的应用。这样把Google和Amazon都甩开了。我们自己的应用还没有到需要自己构建一个云计算环境的地步,但是很多服务提供商会考虑使用Eucalyptus、AppDrop提供与Amazone和Google类似的服务,这样我们的选择就多了。不过这些开源项目目前还属于原型阶段,离商用还早.
Enomalism: 本身为商业公司,感觉开源的不是很彻底,很多地方很含糊。不过应该很专业,尽量挖掘。