到目前为止,介绍关于Azure平台的底层架构的文章一直都不多,可以说少的跟“国宝大熊猫”似的。所幸在PDC2008上有一些相关的信息(主要是一些SESSION和相关的PPTX)。今天就先整理一下,希望有哪位在微软从事相关工作的兄台出手(在不违反保密协议的前提下)将更多的信息发出来,让大家一起学习进步。
费话不多说了,开始今天的正文。
Session 1:Windows Azure: Architecting & Managing Cloud Services
PPTX下载链接:http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/ES02.pptx
在该SESSION中最让人印象深刻的是对Fabric Controller(FC)的讲解,这里暂且称之为“组织控制器”吧。其所要做的事件就是对发布的服务进行资源分派,管理服务生命周期,维护系统正常运转。
如下图所示:
图中左上角的“What” is needed,按我的理解应该“你想要得到的东西”,换句话说是你的需求是什么。因为微软在之前的宣传中提出过一些信息,即:
Windows Azure管理服务并不仅仅是服务器,它是“告之它你想要的,然后它就会自己实现相关细节”的这样一个平台。
而Fabric Controller就是在对这些需求进行分析整理并加以布署实现,在该图的下方我们看到有两块内容,一个是load-balancers(负载均衡),另一个是switches.
除了Fabric Controller(FC)之外,该Session还讲了关于服务(托管代码)的隔离和安全性问题,如下图:
然后就是在布署服务时,平台是采用负载均衡方式来路由那些有效的活动节点,同时会跨越那些失效的域。
FC提供了状态检查点(state check-pointed),其实现的功能包括:
- 用于回滚到前一个检查点。(按我的理解:服务的执行可能会出现中断或失败,当出现这种情况时,可以回滚到最近的成功执行的检查点继续执行)。
- 同时预防中断或FC状态的丢失。
- 跨失效域(faultdomain)的存储(注:失效域应该是指在Azure平台上那些服务器或主机出现硬软故障或进行升级服务时节点)
最后该SESSION还发布了在2009年度要做的工作,包括:
- 暴露更多的基础服务模型
- 更加丰富的服务生命周期管理
Session 2:Under the Hood: Inside the Windows Azure Hosting Environment
PPTX下载链接:http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/ES19.pptx
看了上面的Session1如果感觉还不过瘾的话,可以看看这个课程,这个Session可以看过是对之前课程的高级版讲解。里面对FC的讲解要更加透彻(我目前还在看,所以就先不
多说了)
Session 3:Windows Azure: Essential Cloud Storage Services
PPTX下载链接:http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/ES04.pptx
该Session讲解的是关于云存储服务相关的内容,因为在之前我看过Azure tookit开发包中的一些例子,然而却不能完全搞懂Azure平台上是如何存储结构化和非结构化数据的,所以才专门看了这个课程,一看之下,还真发现了不少门道,下面简要归纳一下:
在Azure平台上要存储数据要使用帐号进行存储。当用户创建相应帐户后,会得到一个256位的加密串(开发时使用)。在Azure平台上有三个基本的数据(层)抽象,分别是:
- Blobs:提供一个简单接口来用户存储非结构化数据文件(图片,普通文件等)和相关的元数据(我想可能会用于数据文件同步的需要)
- Tables:提供结构化存储。该Table是一组entities,该entities包括一系列的属性
- Queues:提供可靠的数据存储并对相应的应用(服务)发送消息(messages)
关于Blobs (非结构化文件存储),其提出了下面的概念:
即:一个存储帐号可以有许多的Blob Containers(容器),而一个Container即是一组blob的集合。所谓的共享策略需被施加于容器(container)级别之上。
同时该Session也解释了Azure平台上进行服务请求时的URL串的结构,如下图:
当然该Session的精彩之处还不在于此,其所提出的“使用Blocks机制上传大文件”是一个不错的亮点。如下图:
1.原理分析:
2.使用PutBlockList 的例子:
3.然后是上传之后的图形讲解:
通过这些可以看出,blob结构由一个Blocks列表所组成的。每个block是通过blockid进行标识的,其ID发布为64字节长。其次每个BLOCK之间是彼此关联,互相影响的。且每个block的最大长度是4M,但每个BLOCK的大小可以不同。在BLOB讲解最后就是解释了如何使用RESTAPI来操作管理BLOB(更新,添加,拷贝等)。
而对于Tables存储(结构化数据)的讲解,因为之前我一直不太赞同将核心数据移入到云平台之后,所以就没过多关注,但从其介绍的内容中还是可以看出一些很好的地方的,比如数据起码被拷贝三次(冗余的需要),可以随时访问您的数据,提供以TB为单位的存储空间等等,如下:
对于Queues应该是Azure平台的一个重点,因为消息这种数据结构在ServiceBus中是核心数据,可以说服务总结本身就是消息驱动的。当然在 Azure平台上所提供的异步的消息发送机制,并确保每个消息至少被处理一次,参见下图:
该图演示当consumer1当机后,消息msg1在30秒之内还是可见(即要求被其它consumer处理)
用户可以使用当前帐户创建多个Queues,每个Queues由一系列消息组成,每个消息长度小于8K.
在该SESSION最后,作者用一张图来总结blobs,tables,queues三种数据抽象所存储结构信息类型。我想只要记住这张图,这节SESSION应用就没白听了。
好了,今天的内容就先到这里了。
更多关于Azure平台的Session可以访问:http://channel9.msdn.com/tags/pdc2008.azure/