本章详细介绍Amazon平台基础存储架构Dynamo及Amazon的主要云计算服务,重点剖析这些云计算服务背后涉及的重要技术、服务的基本架构和核心的概念。除了一些常用的API之外,本章将不介绍各个Amazon云计算服务的具体使用方法,感兴趣的读者可以参考Amazon的相关技术文档。
Amazon平台基础存储架构:Dynamo
在Web服务刚兴起时,各种平台大多釆用的是关系型数据库。由于大量的Web数据是半结构化数据,随着数据量的急剧增加,传统的关系型数据库已经无法满足这种存储要求,为此不少服务商都设计开发了自己的存储系统。Amazon的Dynamo就是其中非常具有代表性的一种存储架构,作为状态管理组件被用于Amazon很多系统中。2007年,Amazon将其以论文形式发表,很快Dynamo就被应用于其他云存储架构,如Twitter和 Facebook的Cassandra架构和NoSQL数据库等。本节详细介绍具有高可用特性的Dynamo存储架构。
Dynamo在Amazon服务平台的地位
Amazon作为目前世界上最主要的电子商务提供商之一,它的系统每天要接受全球数以百万计的服务请求,髙效的平台架构是保证其系统稳定性的根本。图3-1是面向服务的Amazon平台基本架构。
从图中可以看出整个Amazon平台的架构是完全的分布式、去中心化的,在Amazon的平台中处于底层位置的存储架构Dynamo也是如此。Amazon平台中有很多服务对存储的需求只是读取、写入,即满足简单的键/值(key/value)式存储即可,例如:常用的购物车、信息会话管理和推荐商品列表等,如果采取传统的关系数据库方式,则效率低下。针对这种需求,Dynamo应运而生,虽然Dynamo目前并不直接向公众提供服务,但是大量的用户服务数据被存储在Dynamo中。可以说它为Amazon的电子商务平台及其云计算服务提供了最基础的支持。

Dynamo以很简单的键/值方式存储数据,不支持复杂的査询。但是这并不影响客户的使用,因为通常情况下用户只需要根据键读取值就足够了。Dynamo中存储的是数据值的原始形式,也就是以位(bit)的形式存储,不解析数据的具体内容。Dynamo不识别任何数据结构,这使得它几乎可以处理所有的数据类型。
目前,关于Amazon云服务的技术细节尚未公开,Dynamo作为底层存储架构是如何支持这些服务的尚不清楚,但是,可以通过现有资料来分析其与各个云服务的关系。我们认为,从功能角度,Dynamo存储使用各种云服务的用户数据;从实现角度,和存储有关的云服务与Dynamo关系密切,其中S3就是构建在Dynamo之上,SimpleDB也极有可能使用或借鉴了Dynamo的技术。