Aiur

zellux 的博客

云计算

某门课程的Open Topic,我的话题是关于云计算的,读了一篇技术报告 Above the Clouds: A Berkeley View of Cloud Computing。 这是 UCB 的 RAD(Reliable Adaptive Distributed) 实验室花了六个月时间 brainstorm 总结出来的 paper,介绍了云计算的概念、现状及未来展望。以下内容主要来自于我上交的文档,做了一些修改,欢迎大家指正。 虽然现在对云计算这个概念的炒作大于实际研究,以至于很多人听到云计算这个名词就想到忽悠,但这里面还是很多东西需要好好考虑和设计的。云计算和以前的 cluster computing 等概念虽有相同之处,区别也有不少,它涉及了经济学、虚拟化技术、安全等诸多领域的内容。 何谓云计算? 云计算包含两方面内容,一是在网络上提供的为计算服务的应用,例如以前被称为 SaaS(Software as a Service) 的那一类应用;二是提供这些服务的在数据中心的硬件和系统软件,这部分也就是我们通常所称呼为「云」的东西。 云计算平台的优势 云计算带来了三个新颖的观点: 提供了看起来没有上限的可用计算资源,用户不需要提前考虑设备的需求量; 免去了云计算用户的前期投入,使得公司可以从一个规模较小的硬件资源起家,并根据自己的需要增加资源; 细粒度的计费手段,例如按每小时使用处理器数或者每天使用的存储空间计算,并在暂时不需要机器和存储空间时即时减免费用。 云计算资源拥有很好的弹性,以 Amazon EC2 为例,用户可以在几分钟内完成硬件资源的添加或者减少操作,这在传统的应用程序部署中是很难做到的。文中提到了 Facebook 上的一个应用 Animoto,这个应用的资源需求在三天内从 50 台服务器上升到了 3500 台服务器。在传统的部署情景中,这样的需求是很难通过预先准备好硬件来满足的。另外还有一个问题,当资源需求下降时,传统方式部署的服务器资源就被闲置了,而通过云计算部署的资源则灵活很多,例如一个网站到了深夜访问量下降,此时就可以通过减少占用的计算资源从而降低支出。 平台分类 现在的云计算平台提供了不同粒度的 API。Amazon EC2 是一个底层的极端,它提供了类似物理硬件的接口,用户可以几乎控制从内核开始的整个软件栈。通过虚拟技术提供的 CPU、块设备、IP 级别的连通技术使得开发人员几乎可以做任何事情。高度的灵活性带来的是可控性的损失,在自动伸缩性 (automatic scalability) 和容错转移 (failover) 方面,服务商就力不从心了。而 Google AppEngine 则提供了比较高层的 API,主要面向传统的 web 应用,在牺牲灵活性之后能很好的实现自动伸缩和转移,并对用户完全透明。而微软的 Azure 则介于这两者之间,提供了接近 CLR 字节码的接口,用户可以通过 . 阅读全文 →