Fabric控制器是一個(gè)分布式應(yīng)用,擁有計(jì)算機(jī)、交換機(jī)、負(fù)載均衡器等各種資源。在實(shí)例中需要安裝Fabric代理,每臺(tái)機(jī)器的Fabric控制器均可以與Fabric代理進(jìn)行通信。Fabric控制器同樣也知道運(yùn)行在其上的每個(gè)Windows Azure應(yīng)用,但是數(shù)據(jù)管理和復(fù)制的詳細(xì)過(guò)程對(duì)于Fabric控制器而言是不可知的,這是因?yàn)镕abric控制器將Windows存儲(chǔ)作為另一個(gè)應(yīng)用。
Fabric控制器作用很廣,它可以控制所有運(yùn)行的應(yīng)用。Fabric控制器通常依賴(lài)Windows Azure應(yīng)用上傳的配置信息決定新應(yīng)用運(yùn)行的位置,選擇物理服務(wù)器租用來(lái)最優(yōu)化硬件使用。這個(gè)基于XML描述的配置文件提供了一個(gè)應(yīng)用需要的Web Role實(shí)例數(shù)量、Worker Role實(shí)例的數(shù)量等。當(dāng)Fabric控制器部署一個(gè)新的應(yīng)用時(shí),使用配置文件決定需要?jiǎng)?chuàng)建的VMs(虛擬機(jī))的數(shù)量。
Fabric控制器在創(chuàng)建VMs后,還監(jiān)控VMs。例如,如果應(yīng)用需要5個(gè)Web Role實(shí)例,運(yùn)行的過(guò)程中有一個(gè)出故障,F(xiàn)abric控制器將會(huì)自動(dòng)地創(chuàng)建一個(gè)新的實(shí)例。類(lèi)似的,如果一個(gè)正在運(yùn)行的VM突然宕機(jī),Fabric控制器將會(huì)在另外的機(jī)器上開(kāi)始一個(gè)新的Role實(shí)例,同時(shí)重新設(shè)置負(fù)載均衡器作為必須的指針指向這個(gè)新的VM。
Windows Azure提供給開(kāi)發(fā)者5種規(guī)格的虛擬機(jī)。
其中,每個(gè)Extra-small實(shí)例均與其他的Extra-small實(shí)例共享一個(gè)處理器內(nèi)核;對(duì)于其他規(guī)格的虛擬機(jī),每個(gè)實(shí)例都有一個(gè)或多個(gè)專(zhuān)有的內(nèi)核。這意味著應(yīng)用性能是可以預(yù)計(jì)的,可執(zhí)行的實(shí)例的長(zhǎng)度是沒(méi)有限制的。比如在計(jì)算π時(shí),Worker Role實(shí)例可以將兀的值精確計(jì)算到一百萬(wàn)位。
對(duì)于Web Role和Worker Role而言,F(xiàn)abric控制器能夠管理他們每個(gè)實(shí)例中的操作系統(tǒng),包括更新操作系統(tǒng)補(bǔ)丁和其他操作系統(tǒng)軟件。這使得開(kāi)發(fā)者只關(guān)心開(kāi)發(fā)應(yīng)用的過(guò)程,而不需要管理平臺(tái)本身。對(duì)于每個(gè)運(yùn)行的Role而言,F(xiàn)abric控制器總是假設(shè)至少有兩個(gè)實(shí)例運(yùn)行,這樣關(guān)掉其中的一個(gè)來(lái)更新軟件不會(huì)導(dǎo)致整個(gè)應(yīng)用關(guān)閉。需要注意的是,在任何Windows Azure Role上只運(yùn)行一個(gè)實(shí)例不是一個(gè)好的選擇。