亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

機(jī)器管理器服務(wù)結(jié)構(gòu)的制作方法

文檔序號(hào):7958819閱讀:435來源:國知局
專利名稱:機(jī)器管理器服務(wù)結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及機(jī)器管理器服務(wù)結(jié)構(gòu)。
背景技術(shù)
基于web的服務(wù)一并包括了位于web服務(wù)器上的文件和數(shù)據(jù)庫中所存儲(chǔ)的數(shù)據(jù)。 例如,存在大量位于不同網(wǎng)絡(luò)中的服務(wù)器,以處理針對(duì)該服務(wù)的通信量。管理和部署大量服務(wù)器是需要龐大運(yùn)營人員隊(duì)伍的費(fèi)時(shí)過程,其中該人員隊(duì)伍是易受人類差錯(cuò)的。

發(fā)明內(nèi)容
提供本概述以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。機(jī)器管理器為在線服務(wù)控制機(jī)器的部署和管理。機(jī)器分散在場(chǎng)中的一個(gè)或多個(gè)網(wǎng)絡(luò)的范圍內(nèi),這些網(wǎng)絡(luò)每個(gè)都可以包括不同的配置。機(jī)器管理器被配置為人工地/自動(dòng)地部署場(chǎng)、升級(jí)場(chǎng)、添加機(jī)器、移除機(jī)器、啟動(dòng)機(jī)器、停止機(jī)器等等。機(jī)器管理器持續(xù)跟蹤機(jī)器的位置、網(wǎng)絡(luò)內(nèi)的機(jī)器的角色、以及與機(jī)器相關(guān)的其他特性(例如機(jī)器的健康度)。網(wǎng)絡(luò)內(nèi)的機(jī)器被布置在場(chǎng)中并且被配置為執(zhí)行一個(gè)或多個(gè)角色。替代于對(duì)場(chǎng)中的當(dāng)前處理請(qǐng)求的機(jī)器上的軟件進(jìn)行升級(jí),用所選盤映像在新場(chǎng)中配置一個(gè)或多個(gè)機(jī)器,并且然后將請(qǐng)求從舊場(chǎng)移動(dòng)到新場(chǎng)。


圖1示出了用于管理與諸如內(nèi)容管理服務(wù)之類的在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng);圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫的云管理器;圖3示出了存儲(chǔ)在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄;圖4示出了用于網(wǎng)絡(luò)的示例性系統(tǒng),其包括用于在線服務(wù)的前端和后端服務(wù)器;圖5示出計(jì)算機(jī)的計(jì)算機(jī)架構(gòu);圖6示出了用于控制和管理大量服務(wù)器的部署的機(jī)器管理器;以及圖7示出了用于部署場(chǎng)的過程。
具體實(shí)施例方式現(xiàn)將參考其中相同的標(biāo)號(hào)代表相似的元素的附圖來描述各實(shí)施例。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。也可使用其它計(jì)算機(jī)系統(tǒng)配置,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)電子產(chǎn)品、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。也可使用在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境。在分布式計(jì)算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備兩者中。圖1示出了用于管理與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng)。系統(tǒng)100示出了云管理器105,該云管理器105連接到并且管理可能分布在世界各地的不同網(wǎng)絡(luò)。每個(gè)網(wǎng)絡(luò)都被配置為為一個(gè)或多個(gè)承租人(tenant)(例如客戶、消費(fèi)者)提供內(nèi)容服務(wù)。這些網(wǎng)絡(luò)可以在云服務(wù)內(nèi)和/或內(nèi)部部署的(on-premises)數(shù)據(jù)中心內(nèi)來主控。云管理器105用于部署、配置和管理這些網(wǎng)絡(luò)。云管理器被配置為通過可容忍間歇性網(wǎng)絡(luò)故障的冪等的和異步的應(yīng)用web服務(wù)應(yīng)用編程接口(API) 150來接收請(qǐng)求。如所示那樣,云管理器105包括工作管理器110、機(jī)器管理器115、應(yīng)用特定的管理器120、腳本130以及諸如數(shù)據(jù)存儲(chǔ)140 (例如數(shù)據(jù)庫)之類的中央儲(chǔ)存庫。未包括在所示管理器之一內(nèi)的功能可以駐留在云管理器的某個(gè)其他位置處。根據(jù)一個(gè)實(shí)施例,應(yīng)用管理器120是SharePoint承租人管理器,該SharePoint承租人管理器包括SharePoint特定的邏輯。工作管理器110管理任務(wù)的執(zhí)行,并且使得能夠調(diào)度和重試較長時(shí)間運(yùn)行的任務(wù)。工作管理器110啟動(dòng)存儲(chǔ)在作業(yè)隊(duì)列112中的作業(yè)(job)并且跟蹤運(yùn)行中的作業(yè)。當(dāng)已經(jīng)流逝了預(yù)定的時(shí)間時(shí),工作管理器110可以自動(dòng)地取消該任務(wù)并且執(zhí)行一些與該任務(wù)相關(guān)的進(jìn)一步處理。根據(jù)一個(gè)實(shí)施例,作業(yè)隊(duì)列112中的任務(wù)由工作管理器110通過調(diào)用一個(gè)或多個(gè)腳本130來執(zhí)行。例如,可以使用諸如微軟的P0werShell 之類的腳本語言來對(duì)由工作管理器110執(zhí)行的任務(wù)進(jìn)行編程。每個(gè)腳本都可以作為新進(jìn)程運(yùn)行。盡管將每個(gè)腳本作為新進(jìn)程來運(yùn)行可能具有相當(dāng)高的CPU開銷,但是該系統(tǒng)是可伸縮的,并且?guī)椭鸀槊總€(gè)腳本保證清潔的環(huán)境,加上在腳本完成時(shí)進(jìn)行完全的清理。機(jī)器管理器115被配置為管理網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)中的物理機(jī)。一般而言,機(jī)器管理器115理解網(wǎng)絡(luò)、物理機(jī)、虛擬機(jī)(VM)、VM映像(VHD)等等。機(jī)器管理器不必強(qiáng)綁定到網(wǎng)絡(luò)內(nèi)運(yùn)行的特定服務(wù),而是在“角色”方面持續(xù)跟蹤網(wǎng)絡(luò)中的各個(gè)組件。 例如,可以通過API 150請(qǐng)求機(jī)器管理器115在網(wǎng)絡(luò)3上部署類型為“Foo”的具有版本 12. 34. 56. 78的VM。響應(yīng)于對(duì)云管理器105的請(qǐng)求,機(jī)器管理器115對(duì)位于網(wǎng)絡(luò)3上的合適物理機(jī)進(jìn)行定位,并且根據(jù)與VM的角色相關(guān)聯(lián)的VM映像來配置VM。物理機(jī)被用類型為 Foo的具有版本12. 34. 56. 78的VHD來配置,其中該VHD存儲(chǔ)在諸如數(shù)據(jù)存儲(chǔ)140之類的數(shù)據(jù)存儲(chǔ)內(nèi)。在網(wǎng)絡(luò)內(nèi)使用的映像也可以存儲(chǔ)在其他位置處,比如用于所述網(wǎng)絡(luò)中的一個(gè)或多個(gè)的本地?cái)?shù)據(jù)共享中??梢赃\(yùn)行腳本來執(zhí)行VHD在物理機(jī)上的安裝以及用于執(zhí)行任何部署后的配置。機(jī)器管理器115持續(xù)跟蹤每個(gè)網(wǎng)絡(luò)的機(jī)器配置。例如,機(jī)器管理器115可以持續(xù)跟蹤VM的角色(VM的類型)、VM的狀態(tài)(供應(yīng)、運(yùn)行、停止、故障)、版本以及VM是否存在于給定場(chǎng)(farm)中(這隱含了其網(wǎng)絡(luò))。腳本130被配置為存儲(chǔ)將要執(zhí)行以便本地地為云管理器105執(zhí)行工作以及遠(yuǎn)程地在所述網(wǎng)絡(luò)中的一個(gè)或多個(gè)上執(zhí)行工作的腳本。腳本130中的一個(gè)或多個(gè)還可以存儲(chǔ)在其他位置處。例如,將要在網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)上執(zhí)行的腳本可以存儲(chǔ)在該網(wǎng)絡(luò)的本地。這些腳本可用于許多不同目的。例如,所述腳本可以用于執(zhí)行對(duì)所述網(wǎng)絡(luò)之中的一個(gè)或多個(gè)中的機(jī)器的配置;改變之前配置的機(jī)器的設(shè)定;添加新的VM ;添加新的數(shù)據(jù)庫; 將數(shù)據(jù)從一個(gè)機(jī)器移動(dòng)到另一個(gè);移動(dòng)承租人;改變方案等等。根據(jù)一個(gè)實(shí)施例,這些腳本是微軟的PowerShell 腳本。也可以使用其他編程實(shí)施方式。例如,可以使用經(jīng)編譯的編程語言和/或前期綁定的編程語言來實(shí)現(xiàn)該功能。然而,腳本是一種相當(dāng)精確的用于表達(dá)將要執(zhí)行的許多任務(wù)的語言。以諸如C#之類的編程語言對(duì)其等價(jià)物進(jìn)行編程常常將需要冗長得多的實(shí)施方式。腳本還被后期綁定,這意味著,可以以多個(gè)版本的底層代碼庫為目標(biāo), 而不必不斷地鏈接到不同的接口 DLL。使用PowerShell腳本將允許進(jìn)程由云管理器105本地地啟動(dòng),該云管理器105進(jìn)而可以啟動(dòng)遠(yuǎn)程機(jī)器(即所附連的網(wǎng)絡(luò)之一中的物理機(jī))上的進(jìn)程。還可以使用其他技術(shù)來啟動(dòng)遠(yuǎn)程機(jī)器上的進(jìn)程,比如安全Shell (SSH)等等。云管理器105所管理的應(yīng)用特定的信息由應(yīng)用管理器120來執(zhí)行。根據(jù)一個(gè)實(shí)施例,應(yīng)用特定的信息涉及微軟SharePoint 。因此,應(yīng)用管理器120被配置為了解 SharePoint、承租人、站點(diǎn)集合等等。每個(gè)網(wǎng)絡(luò)都可以被配置成用于承租人的專用網(wǎng)絡(luò)和/或服務(wù)于一個(gè)以上客戶的多承租人網(wǎng)絡(luò)。該網(wǎng)絡(luò)可以包括改變數(shù)目的物理/虛擬機(jī),其中所述物理/虛擬機(jī)的配置在部署以后也改變。一般而言,只要未超過聯(lián)網(wǎng)極限(例如負(fù)載平衡器和網(wǎng)絡(luò)交換機(jī)),網(wǎng)絡(luò)就可以繼續(xù)增長。例如,網(wǎng)絡(luò)可以從十個(gè)服務(wù)器開始,并且之后擴(kuò)充為一百個(gè)或更多服務(wù)器??梢越o網(wǎng)絡(luò)內(nèi)的物理機(jī)分配類或類型。例如,這些機(jī)器中的一些可以是計(jì)算機(jī)器(用于web前端和應(yīng)用服務(wù)器),并且其他機(jī)器可以是與計(jì)算機(jī)器相比配備有更多存儲(chǔ)的存儲(chǔ)機(jī)器。根據(jù)一實(shí)施例,云管理器105用多個(gè)版本的映像文件來配置網(wǎng)絡(luò)內(nèi)的機(jī)器。根據(jù)一實(shí)施例,場(chǎng)常常具有相同版本的映像文件。根據(jù)一個(gè)實(shí)施例,在網(wǎng)絡(luò)內(nèi)由云管理器100通過虛擬化所述機(jī)器并且管理該網(wǎng)絡(luò)內(nèi)獨(dú)立地行動(dòng)的“場(chǎng)”來管理軟件極限。每個(gè)網(wǎng)絡(luò)都可以包括一個(gè)或多個(gè)場(chǎng)(例如參見網(wǎng)絡(luò)1)。根據(jù)一個(gè)實(shí)施例,網(wǎng)絡(luò)被認(rèn)為是經(jīng)網(wǎng)絡(luò)負(fù)載平衡的機(jī)器的單個(gè)群集,其中所述機(jī)器向外部世界展示一個(gè)或多個(gè)VIP(虛擬IP)并且可以將該通信量路由到該網(wǎng)絡(luò)內(nèi)的任何機(jī)器。 網(wǎng)絡(luò)中的機(jī)器一般而言是緊密耦合的,并且具有最小等待時(shí)間(即< Irns的查驗(yàn)(ping)等待時(shí)間)。場(chǎng)是用于對(duì)需要緊密綁定關(guān)系的應(yīng)用進(jìn)行協(xié)調(diào)的機(jī)器的基本編組。例如,內(nèi)容場(chǎng)可以部署在每個(gè)網(wǎng)絡(luò)內(nèi)以用于諸如Microsoft SharePoint 之類的內(nèi)容管理應(yīng)用。一般而言,每個(gè)場(chǎng)中的那組機(jī)器一起提供web服務(wù)和應(yīng)用服務(wù)器功能。通常,場(chǎng)內(nèi)的機(jī)器運(yùn)行相同構(gòu)建的應(yīng)用(即SharePoint)并且共享公共的配置數(shù)據(jù)庫以服務(wù)于特定承租人和站點(diǎn)集
I=I ο場(chǎng)可以包含不同種類的虛擬機(jī)組。云管理器105在數(shù)據(jù)存儲(chǔ)140內(nèi)維護(hù)“場(chǎng)目標(biāo)”, 該場(chǎng)目標(biāo)是每個(gè)場(chǎng)的扮演每種角色的機(jī)器的目標(biāo)數(shù)目。一些角色包括內(nèi)容前端、內(nèi)容中央管理員、內(nèi)容定時(shí)器服務(wù)、聯(lián)合中央管理員、聯(lián)合應(yīng)用服務(wù)器等等。例如,內(nèi)容場(chǎng)是處理傳入的消費(fèi)者請(qǐng)求的基本SharePoint場(chǎng)。聯(lián)合服務(wù)場(chǎng)包含可以在場(chǎng)的范圍內(nèi)運(yùn)行的諸如搜索和簡(jiǎn)檔存儲(chǔ)之類的SharePoint服務(wù)。場(chǎng)可以用于主控大容量公共因特網(wǎng)站點(diǎn)。一些場(chǎng)可以包含一組活動(dòng)目錄服務(wù)器和供應(yīng)端口監(jiān)控程序(Daemon)。云管理器105自動(dòng)地部署網(wǎng)絡(luò)中的虛擬機(jī)和/或讓網(wǎng)絡(luò)中的虛擬機(jī)退役,以幫助滿足所定義的目標(biāo)。這些場(chǎng)目標(biāo)可以自動(dòng)地和/或人工地來配置。例如,場(chǎng)目標(biāo)可以響應(yīng)于活動(dòng)和容量需求的改變而改變。網(wǎng)絡(luò)場(chǎng)——每個(gè)網(wǎng)絡(luò)存在一個(gè)如下的網(wǎng)絡(luò)場(chǎng)該網(wǎng)絡(luò)場(chǎng)包含可以作為整個(gè)網(wǎng)絡(luò)的資源的容易擴(kuò)展的所有VM角色。云管理器web服務(wù)API 150被設(shè)計(jì)為在可大規(guī)模伸縮的全球服務(wù)的上下文中工
6作。該API假定任何網(wǎng)絡(luò)請(qǐng)求都可能失敗和/或停留在傳送中。對(duì)云管理器105的調(diào)用可以被配置為冪等的。換言之,相同調(diào)用可以對(duì)云管理器105多次進(jìn)行(只要參數(shù)相同) 而不改變結(jié)果。云管理器105被設(shè)計(jì)為在返回對(duì)任何給定請(qǐng)求的響應(yīng)以前進(jìn)行非常少的處理 (< 10ms, < 50ms)。云管理器105維護(hù)記錄以跟蹤當(dāng)前請(qǐng)求。例如,云管理器105更新本地?cái)?shù)據(jù)庫中的記錄,并且在需要的情況下在此后調(diào)度“作業(yè)”以執(zhí)行更長的活動(dòng)。云管理器跟蹤作為用于在網(wǎng)絡(luò)內(nèi)部署新機(jī)器的模板的映像(比如虛擬盤映像)。 該映像引用可以存儲(chǔ)在諸如數(shù)據(jù)庫140之類的數(shù)據(jù)庫中和/或某個(gè)其他位置處。這些映像可以存儲(chǔ)在對(duì)于上面將部署該映像的網(wǎng)絡(luò)而言為本地的一個(gè)或多個(gè)共享數(shù)據(jù)庫中。根據(jù)一個(gè)實(shí)施例,每個(gè)映像都包括虛擬機(jī)(VM)角色類型,其指定該映像可以部署的VM的類型; 該映像應(yīng)當(dāng)使用的處理器的數(shù)目;將分配給該映像的RAM的數(shù)量;用于找出附近安裝點(diǎn)的網(wǎng)絡(luò)ID(使得它們不反復(fù)地通過跨數(shù)據(jù)中心鏈接被復(fù)制);以及可以被部署代碼用于訪問 VHD的共享路徑?!愣裕稍葡到y(tǒng)100所管理的網(wǎng)絡(luò)中的機(jī)器不是以傳統(tǒng)方式通過下載數(shù)據(jù)并且將該數(shù)據(jù)合并到機(jī)器上的現(xiàn)有軟件中來升級(jí)的。相反,機(jī)器是通過用經(jīng)更新的VHD替換 VHD來更新的。例如,當(dāng)場(chǎng)需要新版本的軟件時(shí),部署具有安裝了該新版本的新場(chǎng)。當(dāng)新場(chǎng)被部署時(shí),承租人被從舊場(chǎng)移動(dòng)到該新場(chǎng)。通過這種方式,由于升級(jí)造成的停工期被最小化,并且場(chǎng)中的每個(gè)機(jī)器都具有已經(jīng)過測(cè)試的相同版本。當(dāng)虛擬機(jī)需要升級(jí)時(shí),該機(jī)器上的 VM可以被刪除并且被用配置為運(yùn)行所期望的服務(wù)的VM替代。盡管對(duì)現(xiàn)有軟件的升級(jí)不是最優(yōu)的,但是網(wǎng)絡(luò)內(nèi)的許多服務(wù)器不使用原地升級(jí)的傳統(tǒng)升級(jí)過程。例如,活動(dòng)目錄域控制器是通過在不完全替換機(jī)器上的映像的情況下升級(jí)服務(wù)器上的當(dāng)前軟件而升級(jí)的。在一些實(shí)例中,云管理器也可以原地升級(jí)。圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫的云管理器。如所示那樣,云管理器200 包括工作管理器210、工作數(shù)據(jù)庫215、機(jī)器管理器220、機(jī)器數(shù)據(jù)庫225、承租人管理器230、 承租人數(shù)據(jù)庫235、私密數(shù)據(jù)庫245、以及web服務(wù)API 240。一般而言,在云管理系統(tǒng)(例如系統(tǒng)100)內(nèi)使用的數(shù)據(jù)庫的大小被確定為實(shí)現(xiàn)高性能。例如,數(shù)據(jù)庫(比如工作數(shù)據(jù)庫215、機(jī)器數(shù)據(jù)庫225、承租人數(shù)據(jù)庫235以及私密數(shù)據(jù)庫245)不能超過預(yù)定義的大小限制(例如30GB、50GB、100GB等等)。根據(jù)一實(shí)施例,數(shù)據(jù)庫的大小被確定為使得其小得足以放入物理機(jī)的存儲(chǔ)器中。這有助于高讀取I/O性能。 數(shù)據(jù)庫的大小還可以基于對(duì)于應(yīng)用程序(比如與SQL服務(wù)器交互)的性能來選擇。用在場(chǎng)中的數(shù)據(jù)庫的大小還可以被確定為實(shí)現(xiàn)高性能。例如,它們的大小可以被確定為能放入主機(jī)的存儲(chǔ)器中和/或被確定為使得備份操作、移動(dòng)操作、復(fù)制操作、恢復(fù)操作一般在預(yù)定的時(shí)間段內(nèi)執(zhí)行。云管理器200將云管理器數(shù)據(jù)劃分成四個(gè)數(shù)據(jù)庫。工作數(shù)據(jù)庫215用于工作管理器。機(jī)器數(shù)據(jù)庫225用于機(jī)器管理器220。承租人數(shù)據(jù)庫235用于承租人管理器230,并且私密數(shù)據(jù)庫245用于存儲(chǔ)敏感信息,比如系統(tǒng)帳戶和口令信息、憑證、證書等等。這些數(shù)據(jù)庫可以處于相同的服務(wù)器上,或者在服務(wù)器間分割。根據(jù)一實(shí)施例,每個(gè)數(shù)據(jù)庫都以高可用性被鏡像化,并且都是SQL數(shù)據(jù)庫。云管理器200被配置為使用減小的SQL特征組來與這些數(shù)據(jù)庫交互以便有助于在數(shù)據(jù)庫的升級(jí)期間提供云管理器200的可用性。例如,嘗試避免外來密鑰或所存儲(chǔ)的過程。 外來密鑰可能使方案變得困難并且導(dǎo)致未預(yù)期的故障情況。所存儲(chǔ)的過程將更多應(yīng)用放置在數(shù)據(jù)庫本身中。嘗試最小化與SQL服務(wù)器的通信,因?yàn)榕c底層操作的成本相比,往返可能是昂貴的。例如,如果到單個(gè)數(shù)據(jù)庫的所有當(dāng)前SQL服務(wù)器交互都被包裝在單個(gè)往返中,則常常是效率高得多的。極少在數(shù)據(jù)庫(215,225,235)內(nèi)使用限制條件。一般而言,限制條件在其有助于在沒有額外查詢的情況下提供具有正確類型的錯(cuò)誤處理的簡(jiǎn)單更新時(shí)是有益的。例如,完全合格的域名(FQDN)表具有施加在“名稱”上的限制條件,以幫助防止承租人意外地試圖主張與已經(jīng)被分配給不同承租人的FQDN相同的FQDN。當(dāng)添加索引時(shí)使用警告。索引通常以寫入操作的額外I/O為代價(jià)來改善讀取性能。由于數(shù)據(jù)庫內(nèi)的數(shù)據(jù)主要是駐留在RAM上的,因此即使全表掃描仍然是相對(duì)快的。根據(jù)一實(shí)施例,一旦查詢模式已經(jīng)穩(wěn)定化并且所提出的索引可以確定性能改善,就可以添加索引。根據(jù)一實(shí)施例,如果添加索引將可能花費(fèi)長時(shí)間,則“ONLINE = ON(在線=開啟)” 選項(xiàng)可以被指定,使得表在最初構(gòu)該建索引時(shí)不被鎖定。根據(jù)一實(shí)施例,對(duì)云管理器內(nèi)數(shù)據(jù)庫的更新可以在不導(dǎo)致云管理器系統(tǒng)的停工的情況下執(zhí)行。換言之,即使在云管理器升級(jí)期間,云管理器仍然繼續(xù)處理所接收到的請(qǐng)求。 因此,對(duì)方案作出的改變將與上一方案兼容。SQL方案升級(jí)在云管理器所使用的web服務(wù)器升級(jí)以前進(jìn)行。當(dāng)web服務(wù)器升級(jí)時(shí),它們可以開始使用數(shù)據(jù)庫中所啟用的新特性。數(shù)據(jù)庫升級(jí)被限制為使得升級(jí)中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向現(xiàn)有列添加新的可空列??梢栽诒淼慕Y(jié)尾處添加新的列。一般而言,避免對(duì)數(shù)據(jù)庫的耗時(shí)操作。例如,在創(chuàng)建時(shí)間向新近添加的列添加缺省值可能在存在大量數(shù)據(jù)時(shí)是非常耗時(shí)的操作。然而,添加可空列是非??焖俚牟僮鳌H缟厦嫠懻摰哪菢?,允許添加新的索引,但是在添加新的限制條件時(shí)應(yīng)當(dāng)采取警告,以幫助保證方案升級(jí)不會(huì)破除現(xiàn)有數(shù)據(jù)。例如,當(dāng)添加限制條件時(shí),該限制條件可以被設(shè)置為如下狀態(tài)該限制條件不被檢查并且避免對(duì)現(xiàn)有行和潛在的錯(cuò)誤進(jìn)行高成本的確認(rèn)。舊的表和不使用的列在新版本被使用并且云管理器不訪問這些表和列以后被移除?!愣?,每個(gè)數(shù)據(jù)庫中的單個(gè)行被用于指示任務(wù)和/或所期望的狀態(tài)。例如,承租人數(shù)據(jù)庫235為每個(gè)承租人包括單個(gè)行。給定的承租人可以包括所請(qǐng)求的版本記錄。該記錄被用于幫助確保該承租人被放置在運(yùn)行所要求的版本的場(chǎng)上。例如,對(duì)于將要停留在 SharePoint 14 SPl上的承租人1而言,該承租人所要求的版本可以被設(shè)置為“ 14. 1 ”,并且包括14. 1的任何版本都將匹配并且任何其他版本(例如14. 2. xxxx)都將不匹配。承租人記錄可以包括諸如下列其他項(xiàng)目經(jīng)授權(quán)的用戶數(shù)目、限額(例如所允許的總數(shù)據(jù)使用、每用戶數(shù)據(jù)使用等等)、時(shí)間限制等等。某個(gè)組織可能具有代表不同地理位置、組合或容量的多個(gè)承租人。根據(jù)一實(shí)施例,在沒有用戶的明確邀請(qǐng)(通過外聯(lián)網(wǎng)或其他特性)的情況下將承租人彼此隔開。根據(jù)一個(gè)實(shí)施例,每個(gè)承租人都被鎖定到一專用網(wǎng)絡(luò)中。承租人被保持為相對(duì)于一小組數(shù)據(jù)庫而言為本地化的。承租人要么是小的(小于將充滿一個(gè)數(shù)據(jù)庫的程度),在這種情況下,該承租人處于與其他承租人共享的恰好一個(gè)數(shù)據(jù)庫中。這意味著,共享該數(shù)據(jù)庫的所有承租人都需要同時(shí)升級(jí)。當(dāng)承租人變大時(shí),其可以被移動(dòng)到其自己的專用數(shù)據(jù)庫,并且現(xiàn)在可以具有一個(gè)以上、但是不與其他承租人共享的數(shù)據(jù)庫。在一個(gè)或多個(gè)專用數(shù)據(jù)庫中維護(hù)大承租人將有助于減小需要在單次升級(jí)中同時(shí)升級(jí)的數(shù)據(jù)庫的數(shù)目。類似地,工作數(shù)據(jù)庫215為每個(gè)作業(yè)包括單個(gè)行。機(jī)器數(shù)據(jù)庫225可以為每個(gè)物理機(jī)、VM、場(chǎng)等等包括行。例如,機(jī)器管理器數(shù)據(jù)庫225可以包括版本字符串。根據(jù)一實(shí)施例,網(wǎng)絡(luò)內(nèi)的每個(gè)VHD、場(chǎng)和VM都具有相關(guān)聯(lián)的版本字符串。根據(jù)一個(gè)實(shí)施例,云管理器包括簡(jiǎn)單日志系統(tǒng),該簡(jiǎn)單日志系統(tǒng)可以被配置為為每個(gè)web服務(wù)調(diào)用記錄日志條目??梢詫?shí)現(xiàn)包括如所期望的那樣少和/或那樣多的特性的日志系統(tǒng)。一般而言,日志系統(tǒng)被用于度量使用和性能剖析。根據(jù)一實(shí)施例,web服務(wù)API 240是使用ASP. net的SOAP構(gòu)建的。API中的各種 web方法遵循兩種主要模式——獲取(Get)和更新(Update)。一般而言,更新方法采取數(shù)據(jù)結(jié)構(gòu)作為輸入,并且返回相同的結(jié)構(gòu)作為輸出。輸出結(jié)構(gòu)返回?cái)?shù)據(jù)庫中的底層對(duì)象的當(dāng)前狀態(tài),其中如果確認(rèn)或其他業(yè)務(wù)邏輯改變了一些屬性或者以其他方式填充了附加的屬性 (例如記錄ID或由云管理器計(jì)算出的其他值),則該底層對(duì)象可能不同于輸入對(duì)象。這些更新方法被用于初始對(duì)象創(chuàng)建以及隨后的更新。換言之,對(duì)web服務(wù)API 240的調(diào)用者可以簡(jiǎn)單地請(qǐng)求它們想要的配置并且它們不需要跟蹤對(duì)象是否已經(jīng)存在。另外,這意味著更新是冪等的,因?yàn)橄嗤抡{(diào)用可以進(jìn)行兩次,其中相同效果僅僅發(fā)生一次。根據(jù)一示例實(shí)施例,更新方法可以包括LastUpdated(最后更新)屬性。當(dāng)存在LastUpdated屬性時(shí),云管理器200在LastUpdated的值不與數(shù)據(jù)庫中當(dāng)前存儲(chǔ)的值匹配的情況下拒絕該更新。一些更新方法包括在第一次調(diào)用該方法以后被設(shè)置并且在該方法的其他調(diào)用以后未被設(shè)置的屬性。云管理器200被配置為避免使用回調(diào)。由于回調(diào)可能是不可靠的,因此與云管理器200交互的客戶可以在他們想要檢查更新狀況時(shí)使用web服務(wù)API來檢查對(duì)象狀況。根據(jù)一實(shí)施例,對(duì)更新方法的調(diào)用致使云管理器200將底層對(duì)象的狀態(tài)設(shè)置為“供應(yīng)”,并且當(dāng)更新完成時(shí),該狀態(tài)被設(shè)置為“活動(dòng)”。圖3示出了存儲(chǔ)在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄。如所示那樣,記錄300包括作業(yè)標(biāo)識(shí)符302、類型304、數(shù)據(jù)306、所有者308、步驟310、最后一次運(yùn)行312、期滿時(shí)間314、 下次時(shí)間316、狀態(tài)318以及狀況320?!愣?,針對(duì)所請(qǐng)求執(zhí)行的每個(gè)任務(wù),云管理器都在數(shù)據(jù)庫350 (例如,圖2的工作數(shù)據(jù)庫215)中創(chuàng)建記錄。作業(yè)標(biāo)識(shí)符302用于為所請(qǐng)求的任務(wù)指定唯一的標(biāo)識(shí)符。類型304指定要執(zhí)行的任務(wù)。例如,類型可以包括將要執(zhí)行的腳本的名稱。例如,當(dāng)任務(wù)是運(yùn)行名稱為“D印loyVM. psl"的腳本時(shí),則數(shù)據(jù)306可以包括該標(biāo)識(shí)符(例如 "-VMID 123”)。這允許將新任務(wù)類型添加到系統(tǒng),而不需要對(duì)該系統(tǒng)的經(jīng)編譯的或其他二進(jìn)制部分進(jìn)行任何改變。數(shù)據(jù)306用于存儲(chǔ)與該任務(wù)相關(guān)聯(lián)的數(shù)據(jù)。例如,數(shù)據(jù)可以被發(fā)送給其上將執(zhí)行該任務(wù)的承租人、機(jī)器、網(wǎng)絡(luò)、VM等等。數(shù)據(jù)306還可以存儲(chǔ)數(shù)據(jù)庫中的值被設(shè)置成的一個(gè)或多個(gè)值。運(yùn)行該任務(wù)的過程可以查看作業(yè)記錄以獲悉所期望的機(jī)器數(shù)目被設(shè)置成何值。 腳本使用數(shù)據(jù)庫中的值來執(zhí)行操作。
所有者308指定過程/執(zhí)行該過程的機(jī)器。例如,當(dāng)云管理器機(jī)器開始執(zhí)行作業(yè)時(shí),該機(jī)器用該機(jī)器的ID來更新記錄的所有者308部分。步驟310提供對(duì)當(dāng)前腳本的步驟的指示。例如,腳本可以將任務(wù)劃分成任何數(shù)目的步驟。當(dāng)該過程完成該腳本的步驟時(shí),步驟310被更新。過程還可以查看步驟310以確定在該腳本中要執(zhí)行什么步驟以及避免必須重新執(zhí)行之前完成的步驟。最后一次運(yùn)行312提供腳本最后一次啟動(dòng)的時(shí)間。每當(dāng)腳本啟動(dòng)時(shí),最后一次運(yùn)行時(shí)間都被更新。期滿時(shí)間314是指示該過程應(yīng)當(dāng)何時(shí)終止的時(shí)間。根據(jù)一實(shí)施例,期滿時(shí)間是在過程啟動(dòng)以后的預(yù)定的時(shí)間量(例如5分鐘、10分鐘...)。期滿時(shí)間可以通過經(jīng)由web服務(wù)API的請(qǐng)求過程來更新。下次時(shí)間316是指示任務(wù)下次應(yīng)當(dāng)何時(shí)被執(zhí)行的時(shí)間。例如,過程可以在完成某步驟以后停止,并且被指示等待直到所指定的下次時(shí)間316以恢復(fù)處理。狀態(tài)318指示當(dāng)前狀態(tài),并且狀況310指示作業(yè)的狀況(例如已創(chuàng)建、已掛起、已恢復(fù)、執(zhí)行中、已刪除)。如果數(shù)據(jù)庫中的復(fù)制行具有相同的任務(wù)類型和數(shù)據(jù)值,則它們可以在被執(zhí)行以前被移除。例如,可以進(jìn)行多個(gè)請(qǐng)求以執(zhí)行存儲(chǔ)在數(shù)據(jù)庫的多個(gè)行中的相同任務(wù)。作業(yè)可以具有相關(guān)聯(lián)的一個(gè)或多個(gè)鎖355。如果鎖不可用,則作業(yè)將不被調(diào)度運(yùn)行,直到鎖可用。這些鎖可以以許多不同的方式來配置。例如,鎖可以基于互斥、信號(hào)機(jī)等等。一般而言,互斥防止代碼被一個(gè)以上線程并發(fā)地執(zhí)行,而信號(hào)機(jī)將共享資源的同時(shí)使用的數(shù)目限制為最高為最大數(shù)目。根據(jù)一實(shí)施例,鎖是表示資源的字符串。該資源可以是任何類型的資源。例如,鎖可以是場(chǎng)、機(jī)器、承租人等等。一般而言,鎖用于延遲一個(gè)或多個(gè)任務(wù)的執(zhí)行。每個(gè)作業(yè)都可以指定其在運(yùn)行以前需要的一個(gè)或多個(gè)鎖。作業(yè)可以在其操作期間的任何時(shí)間釋放鎖。當(dāng)存在鎖時(shí),作業(yè)不被調(diào)度。需要一個(gè)以上鎖的作業(yè)立刻請(qǐng)求被要求的所有鎖。例如,已經(jīng)持有鎖的作業(yè)可以不請(qǐng)求附加的鎖。這樣的方案有助于防止由多個(gè)作業(yè)間的循環(huán)鎖依賴性造成的可能的死鎖情況。圖4示出了用于網(wǎng)絡(luò)的示例性系統(tǒng)400,該網(wǎng)絡(luò)包括用于網(wǎng)絡(luò)服務(wù)的前端和后端服務(wù)器。示例性系統(tǒng)400包括客戶端402和404、網(wǎng)絡(luò)406、負(fù)載平衡器408、WFE服務(wù)器410、 412,414以及后端服務(wù)器416-419??墒褂酶嗷蚋俚目蛻舳恕FE、后端服務(wù)器、負(fù)載平衡器和網(wǎng)絡(luò)。附加地,由系統(tǒng)400中的組件所提供的一些功能可以由其他組件來執(zhí)行。例如,一些負(fù)載平衡可以在WFE中執(zhí)行。在示例性實(shí)施例中,客戶端402和404是諸如臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、終端計(jì)算機(jī)、個(gè)人數(shù)字助理、或蜂窩電話設(shè)備之類的計(jì)算設(shè)備??蛻舳?02和404可包括輸入/輸出設(shè)備、中央處理單元(“CPU”)、數(shù)據(jù)存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備。在本申請(qǐng)中,術(shù)語客戶端和客戶端計(jì)算機(jī)互換地使用。WFE 410,412和414可由客戶機(jī)402和404經(jīng)由負(fù)載平衡器408通過網(wǎng)絡(luò)406訪問。如所討論的那樣,這些服務(wù)器可以在場(chǎng)中配置。后端服務(wù)器416對(duì)WFE 410、412和414 是可訪問的。負(fù)載平衡器408是專用網(wǎng)絡(luò)設(shè)備和/或一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)。負(fù)載平衡器408、420、WFE410、412和414以及后端服務(wù)器416可包括輸入/輸出設(shè)備、中央處理單元 (“CPU”)、數(shù)據(jù)存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備。在示例性實(shí)施例中,網(wǎng)絡(luò)406是因特網(wǎng),并且客戶端402和404可以遠(yuǎn)程地訪問WFE 410,412和414以及連接到WFE 410,412和414的資源。在示例性實(shí)施例中,系統(tǒng)400是在線的、基于瀏覽器的文檔協(xié)作系統(tǒng)。在線的、 基于瀏覽器的文檔協(xié)作系統(tǒng)的一個(gè)示例是來自美國華盛頓州雷蒙德市的微軟公司的 Microsoft Sharepoint 。在系統(tǒng)400中,一個(gè)或多個(gè)后端服務(wù)器416-419是SQL服務(wù)器,例如,來自美國華盛頓州雷蒙德市的微軟公司的SQL服務(wù)器。WFE 410、412和414提供客戶端402和404以及后端服務(wù)器416-419之間的接口。 負(fù)載平衡器408,420將請(qǐng)求從自客戶端402和404引導(dǎo)到WFE 410,412和414,以及從WFE 引導(dǎo)到后端服務(wù)器416-419。負(fù)載平衡器408使用諸如WFE的利用率、連接到WFE的連接數(shù)目和整體WFE性能之類的因素來確定哪個(gè)WFE服務(wù)器接收客戶端請(qǐng)求。類似地,負(fù)載平衡器420使用諸如后端服務(wù)器利用率、連接到服務(wù)器的連接數(shù)目和整體性能之類的因素來確定哪個(gè)后端服務(wù)器接收請(qǐng)求??蛻舳苏?qǐng)求的示例可以是訪問存儲(chǔ)在一個(gè)或多個(gè)后端服務(wù)器上的文檔;編輯存儲(chǔ)在后端服務(wù)器(例如416-419)上的文檔;或者將文檔存儲(chǔ)在后端服務(wù)器上。當(dāng)負(fù)載平衡器408通過網(wǎng)絡(luò)406接收客戶端請(qǐng)求時(shí),負(fù)載平衡器408確定WFE服務(wù)器410、412和414中的哪個(gè)接收該客戶端請(qǐng)求。類似地,負(fù)載平衡器420確定后端服務(wù)器416-419中的哪個(gè)從該WFE服務(wù)器接收請(qǐng)求。后端服務(wù)器可以被配置為存儲(chǔ)一個(gè)或多個(gè)承租人(例如消費(fèi)者) 的數(shù)據(jù)。現(xiàn)在參考圖5,將描述在各實(shí)施例中利用的計(jì)算機(jī)500的說明性計(jì)算機(jī)體系結(jié)構(gòu)。 圖5所示的計(jì)算機(jī)體系結(jié)構(gòu)可被配置為服務(wù)器、臺(tái)式或移動(dòng)計(jì)算機(jī),并且包括中央處理單元5( “CPU”)、包括隨機(jī)存取存儲(chǔ)器9 ( “RAM”)和只讀存儲(chǔ)器("ROM") 11的系統(tǒng)存儲(chǔ)器 7、以及將存儲(chǔ)器耦合至中央處理單元(“CPU”)5的系統(tǒng)總線12?;据斎?輸出系統(tǒng)存儲(chǔ)在ROM 11中,所述基本輸入/輸出系統(tǒng)包含幫助在諸如啟動(dòng)期間在計(jì)算機(jī)內(nèi)元件之間傳遞信息的基本例程。計(jì)算機(jī)500還包括大容量存儲(chǔ)設(shè)備14 以用于存儲(chǔ)操作系統(tǒng)16、應(yīng)用程序10、數(shù)據(jù)存儲(chǔ)24、文件、以及與云系統(tǒng)100的執(zhí)行和同云系統(tǒng)100的交互相關(guān)的云程序26。大容量存儲(chǔ)設(shè)備14通過連接至總線5的大容量存儲(chǔ)控制器(未示出)連接到 CPU 12。大容量存儲(chǔ)設(shè)備14及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)500提供非易失性的存儲(chǔ)。雖然此處包含的計(jì)算機(jī)可讀介質(zhì)的描述針對(duì)諸如硬盤或CD-ROM驅(qū)動(dòng)器等大容量存儲(chǔ)設(shè)備,但是計(jì)算機(jī)可讀介質(zhì)可以是能夠由計(jì)算機(jī)100訪問的任何可用介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以存儲(chǔ)如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)還包括,但不限于,RAM、ROM、可擦除可編程只讀存儲(chǔ)器(“EPR0M”)、電可擦可編程只讀存儲(chǔ)器 (“EEPR0M”)、閃存或其它固態(tài)存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(“DVD”)或其它光存儲(chǔ)、 磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)500 訪問的任何其它介質(zhì)。根據(jù)各實(shí)施例,計(jì)算機(jī)500可以使用通過諸如因特網(wǎng)等網(wǎng)絡(luò)18至遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。計(jì)算機(jī)500可以通過連接至總線12的網(wǎng)絡(luò)接口單元20來連接到網(wǎng)絡(luò)18。網(wǎng)絡(luò)連接可以是無線的和/或有線的。網(wǎng)絡(luò)接口單元20也可用于連接到其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)500還可以包括用于接收和處理來自多個(gè)其他設(shè)備的輸入的輸入/輸出控制器22,這些設(shè)備包括鍵盤、鼠標(biāo)或者電子指示筆(未在圖5中示出)。類似地,輸入/輸出控制器22可以為顯示屏28、打印機(jī)或其它類型的輸出設(shè)備提供輸出。如上面簡(jiǎn)要提到的那樣,多個(gè)程序模塊和數(shù)據(jù)文件可以存儲(chǔ)在計(jì)算機(jī)500的大容量存儲(chǔ)設(shè)備14和RAM 9內(nèi),包括適于控制聯(lián)網(wǎng)計(jì)算機(jī)的操作的操作系統(tǒng)16,比如華盛頓州雷蒙德市的微軟公司的WINDOWS 操作系統(tǒng)。大容量存儲(chǔ)設(shè)備14和RAM 9還可以存儲(chǔ)一個(gè)或多個(gè)程序模塊。具體而言地,大容量存儲(chǔ)設(shè)備14和RAM 9可以存儲(chǔ)諸如云程序26 之類的執(zhí)行與云系統(tǒng)相關(guān)的任務(wù)的一個(gè)或多個(gè)應(yīng)用程序。圖6示出了為在線服務(wù)控制和管理大量服務(wù)器的部署的機(jī)器管理器。如所示那樣,系統(tǒng)600示出了包括機(jī)器管理器610的云管理器605,該機(jī)器管理器610對(duì)跨不同網(wǎng)絡(luò) (網(wǎng)絡(luò)1,網(wǎng)絡(luò)2)的特定拓?fù)浣Y(jié)構(gòu)的大量服務(wù)器進(jìn)行自動(dòng)部署。盡管僅僅示出了兩個(gè)網(wǎng)絡(luò), 但是一般可以管理多得多的網(wǎng)絡(luò)(例如十個(gè)、一百個(gè)、一千個(gè)、一萬個(gè)等等)。云管理器605 運(yùn)行,并且可以與上面所示和所描述的云管理器系統(tǒng)類似地來配置。根據(jù)一實(shí)施例,機(jī)器管理器610被配置為管理和部署用在諸如SharePoint在線服務(wù)之類的在線內(nèi)容協(xié)作服務(wù)中的物理機(jī)和虛擬機(jī)。機(jī)器管理器610可以用于為在線服務(wù)部署和管理機(jī)器。機(jī)器管理器610理解網(wǎng)絡(luò)的物理拓?fù)?,并且跟蹤作為每個(gè)網(wǎng)絡(luò)內(nèi)的成員的物理機(jī)的位置。根據(jù)一實(shí)施例,機(jī)器管理器610知道網(wǎng)絡(luò)內(nèi)的每個(gè)機(jī)架的位置以及位于該機(jī)架內(nèi)的每個(gè)機(jī)器。機(jī)器管理器610還持續(xù)跟蹤在每個(gè)機(jī)器上使用的軟件的具體版本以及安裝在每個(gè)機(jī)器上的虛擬機(jī)(VM)映像。每個(gè)VM映像都對(duì)應(yīng)于不同的服務(wù)器角色。機(jī)器管理器610還被配置為為每個(gè)場(chǎng)內(nèi)的每個(gè)機(jī)器確定角色。該確定可以手動(dòng)地和/或動(dòng)態(tài)地執(zhí)行。例如,場(chǎng)可以最初被定義為包括15個(gè)物理機(jī),其中5個(gè)位于內(nèi)容場(chǎng)660 內(nèi),5個(gè)位于聯(lián)合服務(wù)場(chǎng)665中,并且5個(gè)位于SQL場(chǎng)670中。在在線服務(wù)的操作期間,機(jī)器管理器610可以收集與場(chǎng)和網(wǎng)絡(luò)內(nèi)的機(jī)器相關(guān)的性能特性,并且基于所收集的性能特性動(dòng)態(tài)地調(diào)整網(wǎng)絡(luò)的資源。例如,當(dāng)確定內(nèi)容場(chǎng)過載時(shí),機(jī)器管理器610可以創(chuàng)建將另一機(jī)器部署在內(nèi)容場(chǎng)內(nèi)以提供附加帶寬這一作業(yè)。還可以監(jiān)控機(jī)器/網(wǎng)絡(luò)的健康度。機(jī)器管理器 610可以替換網(wǎng)絡(luò)內(nèi)的機(jī)器,將通信量引導(dǎo)到新的一組機(jī)器,和/或響應(yīng)于對(duì)機(jī)器的健康度的確定執(zhí)行一些其他動(dòng)作。例如,如果一個(gè)或多個(gè)場(chǎng)停工,則機(jī)器管理器610部署新的場(chǎng)并且將通信量引導(dǎo)到新近部署的場(chǎng)。機(jī)器管理器610持續(xù)跟蹤作為執(zhí)行服務(wù)工作的實(shí)際服務(wù)器的虛擬機(jī),并且將該信息存儲(chǔ)在諸如機(jī)器數(shù)據(jù)庫620之類的數(shù)據(jù)存儲(chǔ)中。如所討論的那樣,每個(gè)VM都具有代表特定服務(wù)器的功能的特定角色,并且它們進(jìn)一步被編組為場(chǎng),這些場(chǎng)通常是一組一起工作的運(yùn)行完全相同版本軟件的機(jī)器。根據(jù)一實(shí)施例,機(jī)器管理器610在機(jī)器數(shù)據(jù)庫620中為每個(gè)場(chǎng)存儲(chǔ)指定該場(chǎng)內(nèi)的目標(biāo)和角色的表。扮演每個(gè)角色的機(jī)器和每個(gè)場(chǎng)的機(jī)器的數(shù)目也存儲(chǔ)在機(jī)器數(shù)據(jù)庫620中。每個(gè)場(chǎng)內(nèi)的機(jī)器的數(shù)目可以人工地配置和/或自動(dòng)地配置。例如, 后臺(tái)進(jìn)程可以監(jiān)控負(fù)載并且動(dòng)態(tài)地確定場(chǎng)目標(biāo)。機(jī)器管理器可以基于當(dāng)前/預(yù)期的網(wǎng)絡(luò)特性來啟動(dòng)機(jī)器和/或停止機(jī)器。網(wǎng)絡(luò)內(nèi)的每個(gè)場(chǎng)都可以用與其他場(chǎng)相同數(shù)目的機(jī)器或不同數(shù)目的機(jī)器來配置。例如,一個(gè)內(nèi)容場(chǎng)可以包括6個(gè)機(jī)器,而另一內(nèi)容場(chǎng)可以使用僅僅3個(gè)機(jī)器。
當(dāng)新軟件可用時(shí),機(jī)器管理器610管理新軟件的部署。一般而言,場(chǎng)/網(wǎng)絡(luò)內(nèi)的各個(gè)機(jī)器不被升級(jí)或打補(bǔ)丁。相反,機(jī)器管理器610啟動(dòng)由工作管理器(例如圖1中的工作管理器)所管理的工作,所述工作管理器部署包括該新軟件的新的機(jī)器和場(chǎng)。在用新軟件配置新的場(chǎng)以后,機(jī)器管理器610將通信量/負(fù)載移動(dòng)到該新的場(chǎng),并且阻止通信量去往舊的場(chǎng)。映像640被配置為存儲(chǔ)正在被使用和/或?qū)⒁渴鹪谝粋€(gè)或多個(gè)網(wǎng)絡(luò)的一個(gè)或多個(gè)機(jī)器上的虛擬硬盤(VHD)映像。根據(jù)一實(shí)施例,使用MICROSOFT VHD文件格式,該格式指定可以駐留在封裝在單個(gè)文件內(nèi)的本機(jī)主文件系統(tǒng)上的虛擬機(jī)硬盤。一般而言,VHD格式是廣泛適用的,因?yàn)樵摳袷綄?duì)與該格式一起使用的虛擬化技術(shù)、主操作系統(tǒng)、或者客操作系統(tǒng)是不可知的。用在特定網(wǎng)絡(luò)內(nèi)的映像可以移動(dòng)到全局共享645和/或網(wǎng)絡(luò)本地的網(wǎng)絡(luò)共享(例如網(wǎng)絡(luò)共享655)。將映像存儲(chǔ)在網(wǎng)絡(luò)共享上將節(jié)省部署映像的時(shí)間,因?yàn)闇p小了網(wǎng)絡(luò)通信時(shí)間。也可以使用差分VHD。例如,可以僅僅部署VHD的最新版本與上一版本之間的差異??梢詫⒉煌夹g(shù)用于該差異比較。例如,可以使用遠(yuǎn)程差分壓縮技術(shù)來確定該差異并且僅僅將這些改變復(fù)制到網(wǎng)絡(luò)共享。這允許進(jìn)程加快網(wǎng)絡(luò)內(nèi)的機(jī)器的部署和更新,因?yàn)椴恍枰獜?fù)制VHD的完全副本。還可以采用網(wǎng)絡(luò)內(nèi)的增量(Delta)。增量被作為文件發(fā)送,并且隨后在本地機(jī)器/本地網(wǎng)絡(luò)內(nèi),該文件可以用于創(chuàng)建完整的VHD。根據(jù)一實(shí)施例,機(jī)器管理器610并不在機(jī)器上實(shí)際安裝軟件。相反,如前面所討論的那樣,在被執(zhí)行時(shí)執(zhí)行完成該任務(wù)的動(dòng)作的作業(yè)被放置在作業(yè)隊(duì)列中。一旦映像被安裝在機(jī)器上時(shí),機(jī)器管理器610啟動(dòng)機(jī)器運(yùn)行??蓪?duì)部署進(jìn)行角色特定的定制的0個(gè)或更多角色特定的腳本可以在虛擬機(jī)啟動(dòng)以后運(yùn)行。這些腳本可以位于網(wǎng)絡(luò)的共享(例如網(wǎng)絡(luò)共享655)、全局共享645、腳本630內(nèi)或某個(gè)其他位置處。根據(jù)一實(shí)施例,VHD —旦在機(jī)器上運(yùn)行就是不可改變的。操作系統(tǒng)文件也可以被鎖定,使得它們不能被改變。每個(gè)場(chǎng)都以兩個(gè)帳戶中的一個(gè)運(yùn)行其服務(wù),所述兩個(gè)帳戶包括應(yīng)用池帳戶和管理帳戶。為每個(gè)場(chǎng)創(chuàng)建這些帳戶并且由機(jī)器管理器610生成這些帳戶。這些帳戶包括隨機(jī)生成的口令。這些口令可以安全方式存儲(chǔ)在機(jī)器數(shù)據(jù)庫620中或某個(gè)其他位置處。一般而言,不向人類提供場(chǎng)的口令。相反,使用應(yīng)用帳戶來運(yùn)行與在線服務(wù)(例如 SharePoint)相關(guān)的進(jìn)程。根據(jù)實(shí)施例,不登陸應(yīng)用池帳戶,并且沒有web應(yīng)用接口來訪問存儲(chǔ)這些口令的數(shù)據(jù)庫。在配置場(chǎng)的期間,向執(zhí)行腳本的進(jìn)程提供所需的口令以設(shè)置和部署機(jī)器。例如,當(dāng)執(zhí)行部署場(chǎng)的進(jìn)程時(shí),向部署場(chǎng)進(jìn)程提供口令,使得可以配置和啟動(dòng)場(chǎng)。在安裝映像和對(duì)配置進(jìn)行任何定制的期間,場(chǎng)不連接到在線服務(wù),并且因此不具有任何通信量。一旦通信量被引導(dǎo)到場(chǎng),則機(jī)器就被鎖定并且口令不能在機(jī)器上或通過web接口被訪問。根據(jù)一實(shí)施例,在部署場(chǎng)時(shí)自動(dòng)地生成唯一的帳戶,其中從不允許人類查看實(shí)際系統(tǒng)帳戶口令。當(dāng)場(chǎng)正處理請(qǐng)求時(shí),機(jī)器管理器610可以監(jiān)控機(jī)器和VHD映像以確定它們是否被嘗試改變。如果它們是要這樣做,則機(jī)器管理器610可以用新近生成的系統(tǒng)帳戶部署新的場(chǎng)以替換可能受損的場(chǎng)。通過這種方式,曾被放置到舊的場(chǎng)上的任何代碼都不被復(fù)制到新近部署的場(chǎng)。如上面所討論的那樣,當(dāng)場(chǎng)被(例如場(chǎng)680)升級(jí)時(shí),新的場(chǎng)(例如場(chǎng)681)被供應(yīng)和部署。一般而言,一旦場(chǎng)681已經(jīng)被用所指定的VHD進(jìn)行了配置并且運(yùn)行,則曾被引導(dǎo)到
13場(chǎng)680的通信量現(xiàn)在被引導(dǎo)到場(chǎng)681。與場(chǎng)680相關(guān)聯(lián)的數(shù)據(jù)可以保留某個(gè)時(shí)間段,使得通信量在檢測(cè)到問題的情況下可以返回到場(chǎng)680 (關(guān)于場(chǎng)部署過程的更多細(xì)節(jié)請(qǐng)參見圖7和相關(guān)討論)。與場(chǎng)相關(guān)聯(lián)的數(shù)據(jù)庫被復(fù)制到新的場(chǎng),使得數(shù)據(jù)庫不可用于寫入的時(shí)間最小 (參見圖7)。在升級(jí)期間,新的場(chǎng)可以被配置為更好地處理曾被引導(dǎo)到舊場(chǎng)的通信量。例如,可以通過對(duì)場(chǎng)680的監(jiān)控來確定需要更多SQL場(chǎng)來處理負(fù)載。在從場(chǎng)680到場(chǎng)681的升級(jí)期間,機(jī)器管理器610可以添加機(jī)器和/或從場(chǎng)移除機(jī)器?,F(xiàn)在參考圖7,將討論在用于管理和部署在線服務(wù)中的機(jī)器的過程。當(dāng)閱讀對(duì)在此提供的例程的討論時(shí),應(yīng)當(dāng)理解,各實(shí)施例的邏輯操作被實(shí)現(xiàn)為(1) 運(yùn)行于計(jì)算系統(tǒng)上的一系列計(jì)算機(jī)實(shí)現(xiàn)的動(dòng)作或程序模塊,和/或(2)計(jì)算系統(tǒng)內(nèi)互連的機(jī)器邏輯電路或電路模塊。該實(shí)現(xiàn)是取決于實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)的性能要求來選擇的。 因此,所例示的并且構(gòu)成此處所描述的實(shí)施例的邏輯操作被不同地表示為操作、結(jié)構(gòu)設(shè)備、 動(dòng)作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動(dòng)作和模塊可用軟件、固件、專用數(shù)字邏輯以及它們的任何組合來實(shí)現(xiàn)。圖7示出了用于部署場(chǎng)的過程。在啟動(dòng)操作之后,過程700流到操作710,其中作出對(duì)部署場(chǎng)的確定。這些場(chǎng)可以因許多不同原因而部署。例如,可以部署一個(gè)或多個(gè)場(chǎng)以運(yùn)行與現(xiàn)有場(chǎng)不同版本的軟件,可以部署新的網(wǎng)絡(luò),設(shè)備可能發(fā)生故障等等。該確定可以通過經(jīng)由諸如上述web服務(wù)API之類的API的請(qǐng)求來進(jìn)行,和/或可以自動(dòng)地確定。例如,當(dāng)場(chǎng)的目標(biāo)改變時(shí),可以手動(dòng)地和/或自動(dòng)地部署新的場(chǎng)。移動(dòng)到操作720,啟動(dòng)機(jī)器在新場(chǎng)中的供應(yīng)。根據(jù)一實(shí)施例,異步地執(zhí)行機(jī)器的供應(yīng),使得機(jī)器管理器可以繼續(xù)執(zhí)行其他動(dòng)作。該供應(yīng)可以包括許多不同步驟。例如,VHD可以移動(dòng)將要使用所述VHD的網(wǎng)絡(luò),使得在網(wǎng)絡(luò)內(nèi)而不是跨網(wǎng)絡(luò)地執(zhí)行復(fù)制操作。過程還將 VHD安裝在角色與VHD相匹配的機(jī)器上,執(zhí)行對(duì)安裝的任何定制并且啟動(dòng)所述機(jī)器。流到操作730,對(duì)來自舊場(chǎng)的數(shù)據(jù)進(jìn)行備份。例如,正被升級(jí)的場(chǎng)中的數(shù)據(jù)庫被備份。該備份可以在新場(chǎng)中的機(jī)器被供應(yīng)時(shí)執(zhí)行。移動(dòng)到操作740,將數(shù)據(jù)從舊場(chǎng)復(fù)制到新場(chǎng)。所升級(jí)的場(chǎng)在升級(jí)過程期間繼續(xù)接收和處理請(qǐng)求。根據(jù)一實(shí)施例,在網(wǎng)絡(luò)內(nèi)一場(chǎng)一場(chǎng)地來復(fù)制數(shù)據(jù)。例如,內(nèi)容場(chǎng)數(shù)據(jù)在聯(lián)合服務(wù)場(chǎng)數(shù)據(jù)之前并且在SQL場(chǎng)數(shù)據(jù)之前被復(fù)制。數(shù)據(jù)也可以并發(fā)地復(fù)制。轉(zhuǎn)移到操作750,對(duì)新場(chǎng)執(zhí)行任何升級(jí)。例如,新場(chǎng)中的數(shù)據(jù)庫可以被升級(jí)以處理與舊場(chǎng)相比不同的操作。如上面所討論的那樣,新場(chǎng)在升級(jí)過程期間不接收任何請(qǐng)求。移動(dòng)到操作760,獲得自從備份最初被執(zhí)行起對(duì)舊場(chǎng)上的數(shù)據(jù)所作出的改變,并且將該改變添加到被復(fù)制到新場(chǎng)的數(shù)據(jù)。在該操作期間,舊場(chǎng)上的數(shù)據(jù)被標(biāo)記為只讀,使得在短時(shí)間段內(nèi),不允許對(duì)舊場(chǎng)上的數(shù)據(jù)進(jìn)行寫入。由于完全備份與事務(wù)備份之間的時(shí)間段是相對(duì)短的(例如幾分鐘),因此數(shù)據(jù)庫不可用于寫入的時(shí)間段也是短的。流到操作770,當(dāng)新場(chǎng)的供應(yīng)和部署成功時(shí),將來自舊場(chǎng)的通信量引導(dǎo)到新場(chǎng)。此時(shí),新近部署的場(chǎng)接收和處理之前曾被引導(dǎo)到舊場(chǎng)的所有請(qǐng)求。如果在部署場(chǎng)的期間檢測(cè)到問題,則舊場(chǎng)可以繼續(xù)使用。另外,通信量也可以重新引導(dǎo)回舊場(chǎng)。隨后該進(jìn)程移至結(jié)束框并返回以處理其它動(dòng)作。以上說明、示例和數(shù)據(jù)提供了對(duì)本發(fā)明的組成部分的制造和使用的全面描述。因?yàn)榭梢栽诓槐畴x本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實(shí)施例,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于管理在線服務(wù)中的服務(wù)器的方法,包括由中央服務(wù)為在線服務(wù)存儲(chǔ)不同網(wǎng)絡(luò)中的機(jī)器的配置(225),其中該配置包括所述機(jī)器中每個(gè)的位置和所述網(wǎng)絡(luò)中的機(jī)器的角色,該位置包括該機(jī)器的機(jī)架位置;其中所述機(jī)器被布置在每個(gè)所述網(wǎng)絡(luò)內(nèi)的場(chǎng)內(nèi);其中所述角色用于確定一個(gè)或多個(gè)虛擬機(jī)以安裝所述機(jī)器,其中該配置存儲(chǔ)所述場(chǎng)中的每個(gè)的目標(biāo)和所述場(chǎng)中的每個(gè)的角色;確定何時(shí)將新的場(chǎng)部署在所述網(wǎng)絡(luò)中的一個(gè)或多個(gè)內(nèi)(710);從中央服務(wù)自動(dòng)地啟動(dòng)將所述新的場(chǎng)部署在所述網(wǎng)絡(luò)之一內(nèi)的進(jìn)程;其中部署該場(chǎng)包括使用虛擬硬盤(VHD)映像來供應(yīng)該場(chǎng)內(nèi)的機(jī)器上的軟件;啟動(dòng)所述機(jī)器;以及將通信量引導(dǎo)到該新的場(chǎng)(720)。
2.如權(quán)利要求1所述的方法,其特征在于,為該場(chǎng)內(nèi)的每個(gè)角色使用VHD映像(640), 其中該場(chǎng)內(nèi)的每個(gè)機(jī)器都針對(duì)每個(gè)角色使用相同版本的VHD映像。
3.如權(quán)利要求1所述的方法,其特征在于,確定何時(shí)部署該新的場(chǎng)包括下列動(dòng)作至少之一確定何時(shí)升級(jí)所述場(chǎng)中的一個(gè)或多個(gè)上的軟件;確定場(chǎng)何時(shí)已發(fā)生故障;以及確定何時(shí)重新配置場(chǎng)的配置(115)。
4.如權(quán)利要求1所述的方法,其特征在于,部署該新的場(chǎng)包括為舊的場(chǎng)備份在該新的場(chǎng)的相同網(wǎng)絡(luò)內(nèi)被替換的數(shù)據(jù),同時(shí)繼續(xù)允許對(duì)經(jīng)備份的數(shù)據(jù)進(jìn)行讀取和寫入(730);將經(jīng)備份的數(shù)據(jù)復(fù)制到該新的場(chǎng),同時(shí)繼續(xù)對(duì)之前在該舊的場(chǎng)中所備份的數(shù)據(jù)進(jìn)行讀取和寫入;以及用自從該數(shù)據(jù)在舊的場(chǎng)上被備份的時(shí)間起在該舊的場(chǎng)上改變的任何數(shù)據(jù)來更新被復(fù)制到該新的場(chǎng)的數(shù)據(jù)(740)。
5.如權(quán)利要求2所述的方法,其特征在于,還包括將VHD映像從中央服務(wù)復(fù)制到包括將要安裝該VHD映像的該新的場(chǎng)的網(wǎng)絡(luò),并且當(dāng)該VHD映像的上一版本存在于該網(wǎng)絡(luò)上時(shí), 則復(fù)制僅僅包括該VHD映像與該VHD映像的上一版本之間的差異的文件(740)。
6.如權(quán)利要求1所述的方法,其特征在于,通過為該場(chǎng)內(nèi)的機(jī)器計(jì)算機(jī)器性能來自動(dòng)地確定該場(chǎng)目標(biāo)(105)。
7.一種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于為在在線服務(wù)部署場(chǎng),包括由在線內(nèi)容管理服務(wù)的中央服務(wù)為在線服務(wù)存儲(chǔ)不同網(wǎng)絡(luò)中的機(jī)器的配置(225),其中該配置包括所述機(jī)器中每個(gè)的位置和所述網(wǎng)絡(luò)中的機(jī)器在的角色,該位置包括該機(jī)器的機(jī)架位置;其中所述機(jī)器被布置在每個(gè)所述網(wǎng)絡(luò)內(nèi)的場(chǎng)內(nèi);其中所述角色用于確定一個(gè)或多個(gè)虛擬機(jī)以安裝所述機(jī)器,其中該配置存儲(chǔ)所述場(chǎng)中的每個(gè)的目標(biāo)和所述場(chǎng)中的每個(gè)的角色;確定何時(shí)在所述網(wǎng)絡(luò)中的一個(gè)或多個(gè)內(nèi)部署新的場(chǎng)(710);其中部署該新的場(chǎng)替換所述網(wǎng)絡(luò)之一內(nèi)的場(chǎng)之一;其中確定何時(shí)部署該新的場(chǎng)包括下列動(dòng)作至少之一確定何時(shí)升級(jí)所述場(chǎng)中的一個(gè)或多個(gè)上的軟件;確定場(chǎng)何時(shí)已發(fā)生故障;以及確定何時(shí)重新配置場(chǎng)的配置;從中央服務(wù)自動(dòng)地啟動(dòng)將該新的場(chǎng)部署在所述網(wǎng)絡(luò)之一內(nèi)的進(jìn)程;其中部署該場(chǎng)包括使用虛擬硬盤(VHD)映像的相同版本來供應(yīng)該場(chǎng)內(nèi)的機(jī)器上的軟件;啟動(dòng)所述機(jī)器;以及將通信量引導(dǎo)到該新的場(chǎng)(720)。
8.如權(quán)利要求7所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,部署該新的場(chǎng)包括為舊的場(chǎng)備份在該新的場(chǎng)的相同網(wǎng)絡(luò)內(nèi)被替換的數(shù)據(jù)庫內(nèi)的數(shù)據(jù),同時(shí)繼續(xù)允許對(duì)經(jīng)備份的數(shù)據(jù)庫進(jìn)行讀取和寫入;將經(jīng)備份的數(shù)據(jù)庫復(fù)制到該新的場(chǎng),同時(shí)繼續(xù)對(duì)之前在該舊的場(chǎng)中所備份的數(shù)據(jù)進(jìn)行讀取和寫入;以及用自從該數(shù)據(jù)庫在舊的場(chǎng)上被備份的時(shí)間起在該舊的場(chǎng)中的數(shù)據(jù)庫上改變的任何數(shù)據(jù)來更新被復(fù)制到該新的場(chǎng)的數(shù)據(jù)庫(730)。
9.如權(quán)利要求7所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,部署該新的場(chǎng)包括在機(jī)器用VHD映像運(yùn)行以后鎖定所述VHD映像和該網(wǎng)絡(luò)內(nèi)的機(jī)器上的操作系統(tǒng)文件,使得所述VHD 映像和所述操作系統(tǒng)文件不可改變(610)。
10.一種用于為在線服務(wù)部署場(chǎng)的系統(tǒng),包括包括服務(wù)器和數(shù)據(jù)庫的網(wǎng)絡(luò);其中所述服務(wù)器被布置在場(chǎng)內(nèi),每個(gè)所述場(chǎng)都執(zhí)行角色; 其中所述場(chǎng)包括內(nèi)容場(chǎng)、聯(lián)合服務(wù)場(chǎng)和SQL場(chǎng)(100);處理器和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(5);存儲(chǔ)在所述計(jì)算機(jī)可讀介質(zhì)上并在所述處理器上執(zhí)行的操作環(huán)境(16);以及軟件,該軟件用于由為在線服務(wù)存儲(chǔ)不同網(wǎng)絡(luò)的場(chǎng)中的機(jī)器的配置(225),其中該配置包括所述機(jī)器中每個(gè)的位置和所述網(wǎng)絡(luò)中的機(jī)器的角色,該位置包括該機(jī)器的機(jī)架位置;其中所述角色用于確定一個(gè)或多個(gè)虛擬機(jī)以安裝所述機(jī)器,其中該配置存儲(chǔ)每個(gè)所述場(chǎng)的目標(biāo)和每個(gè)所述場(chǎng)的角色;確定何時(shí)將新的場(chǎng)部署在所述網(wǎng)絡(luò)中的一個(gè)或多個(gè)內(nèi)(710);自動(dòng)地啟動(dòng)將該新的場(chǎng)部署在所述網(wǎng)絡(luò)之一內(nèi)的進(jìn)程;其中部署該場(chǎng)包括使用虛擬硬盤(VHD)映像的相同版本來供應(yīng)該場(chǎng)內(nèi)的機(jī)器上的軟件;啟動(dòng)所述機(jī)器;以及將通信量引導(dǎo)到該新的場(chǎng)(720)。
全文摘要
本發(fā)明涉及機(jī)器管理器服務(wù)結(jié)構(gòu)。機(jī)器管理器為在線服務(wù)控制機(jī)器的部署和管理。機(jī)器管理器被配置為人工地/自動(dòng)地部署場(chǎng)、升級(jí)場(chǎng)、添加機(jī)器、移除機(jī)器、啟動(dòng)機(jī)器、停止機(jī)器等等。機(jī)器管理器跟蹤機(jī)器的位置、網(wǎng)絡(luò)內(nèi)的機(jī)器的角色、以及于機(jī)器的相關(guān)的其他特性(例如機(jī)器的健康度)。替代于升級(jí)場(chǎng)中的當(dāng)前處理請(qǐng)求的機(jī)器上的軟件,用所選盤映像在新場(chǎng)中配置一個(gè)或多個(gè)機(jī)器,并且然后將請(qǐng)求從舊場(chǎng)移動(dòng)到新場(chǎng)。
文檔編號(hào)H04L12/24GK102523101SQ20111034010
公開日2012年6月27日 申請(qǐng)日期2011年10月19日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者A·霍普曼, E·R·萊爾馬, J·M·卡希爾, M·K·溫德爾, V·戈皮納達(dá)翰, Z·羅森菲爾德 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1