專利名稱:在在線服務(wù)中以高可用性路由通信的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及路由通信,尤其是在在線服務(wù)中以高可用性地路由通信。
背景技術(shù):
基于web的在線應(yīng)用程序包括位于web服務(wù)器上的文件和存儲在數(shù)據(jù)庫中的數(shù)據(jù)。例如,存在大量位于不同網(wǎng)絡(luò)中的服務(wù)器,以處理針對在線服務(wù)的通信。在包括改變對內(nèi)容存儲在哪里的配置的在線服務(wù)中路由通信可能是困難的。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下具體實施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。云管理系統(tǒng)中的web請求路由器用于在與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)內(nèi)部路由對內(nèi)容的請求。web請求路由器接收請求,解析請求并將請求轉(zhuǎn)發(fā)到適合的目的地。web請求路由器可以使用用于路由請求的應(yīng)用程序?qū)S眠壿?。例如,可以基于文檔標(biāo)識符和/或包括在已接收的請求內(nèi)的用戶信息來路由請求。查找表可用于確定請求的目的地。當(dāng)在線服務(wù)內(nèi)的內(nèi)容位置變化時,可更新查找表以使得web請求路由器自動地將內(nèi)容定向到已更新的位置。用戶還可以指定將他們的請求路由到哪里。
圖1示出了用于管理與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng);圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫的云管理器;圖3示出了存儲在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄;圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng),所述網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器;圖5示出計算機(jī)的計算機(jī)體系結(jié)構(gòu);圖6示出用于在在線服務(wù)中路由通信的系統(tǒng);以及圖7示出在在線系統(tǒng)中路由請求的過程。
具體實施例方式現(xiàn)將參考其中相同的標(biāo)號代表相似的元素的附圖來描述各實施例。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。也可使用其它計算機(jī)系統(tǒng)配置,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費(fèi)電子產(chǎn)品、小型計算機(jī)、大型計算機(jī)等等。也可使用在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計算環(huán)境。在分布式計算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲器存儲設(shè)備兩者中。
圖1示出了用于管理與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng)。系統(tǒng)100示出了云管理器105,該云管理器105連接到并且管理可能分布在世界各地的不同網(wǎng)絡(luò)。網(wǎng)絡(luò)中的每個被配置成為一個或多個承租人(例如客戶、顧客)提供內(nèi)容服務(wù)。這些網(wǎng)絡(luò)可以寄宿在云服務(wù)內(nèi)和/或現(xiàn)場(on-premises)數(shù)據(jù)中心內(nèi)。云管理器105用于部署、配置和管理這些網(wǎng)絡(luò)。云管理器被配置為通過可容忍間歇性網(wǎng)絡(luò)故障的冪等的和異步的應(yīng)用web服務(wù)應(yīng)用程序編程接口(API) 150來接收請求。如所示的,云管理器105包括工作管理器110、機(jī)器管理器115、應(yīng)用程序?qū)S霉芾砥?20、腳本130以及諸如數(shù)據(jù)存儲140(例如數(shù)據(jù)庫)的中央儲存庫。未包括在所示管理器之一內(nèi)的功能可以駐留在云管理器的某個其他位置處。根據(jù)一個實施例,應(yīng)用程序管理器120是SharePoint承租人管理器,該管理器包括SharePoint專用邏輯。工作管理器110管理任務(wù)的執(zhí)行,并且啟用對較長時間運(yùn)行的任務(wù)的調(diào)度和重試。工作管理器110啟動存儲在作業(yè)隊列112中的作業(yè)并且保持跟蹤運(yùn)行中的作業(yè)。當(dāng)已經(jīng)流逝了預(yù)定的時間時,工作管理器110可以自動地取消任務(wù)并且執(zhí)行與該任務(wù)相關(guān)的某些進(jìn)一步處理。根據(jù)一個實施例,作業(yè)隊列112中的任務(wù)由工作管理器110通過調(diào)用一個或多個腳本130來執(zhí)行。例如,可以使用諸如微軟的PowerShell 的腳本語言來對由工作管理器110執(zhí)行的任務(wù)進(jìn)行編程。每個腳本可以作為新進(jìn)程運(yùn)行。盡管將每個腳本作為新進(jìn)程來執(zhí)行可以具有相當(dāng)高的CPU開銷,但是該系統(tǒng)是可伸縮的,并且?guī)椭鸀槊看文_本執(zhí)行確保干凈的環(huán)境,加上在腳本完成時進(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ī)器管理器不必牢固地綁定到網(wǎng)絡(luò)內(nèi)運(yùn)行的特定服務(wù),而是在“角色”方面保持跟蹤網(wǎng)絡(luò)中的各種組件。例如,可以通過API 150請求機(jī)器管理器115在網(wǎng)絡(luò)3上部署類型為“R)o”的具有版本12. 34. 56. 78的VM。響應(yīng)于對云管理器105的請求,機(jī)器管理器115對位于網(wǎng)絡(luò)3上的合適物理機(jī)器進(jìn)行定位,并且根據(jù)與VM的角色相關(guān)聯(lián)的VM映像來配置VM。使用類型為 Foo的具有版本12. 34. 56. 78的VHD來配置物理機(jī)器,該VHD存儲在諸如數(shù)據(jù)存儲140的數(shù)據(jù)存儲內(nèi)。在網(wǎng)絡(luò)內(nèi)使用的映像也可以存儲在其他位置處,諸如用于網(wǎng)絡(luò)中的一個或多個的本地數(shù)據(jù)共享中??梢赃\(yùn)行腳本來執(zhí)行VHD在物理機(jī)器上的安裝以及用于執(zhí)行任何部署后的配置。機(jī)器管理器115保持跟蹤每個網(wǎng)絡(luò)的機(jī)器配置。例如,機(jī)器管理器115可以跟蹤VM的角色(VM的類型)、VM的狀態(tài)(供應(yīng)、運(yùn)行、停止、故障)、版本以及VM是否存在于給定場(farm)中(這隱含了其網(wǎng)絡(luò))。腳本130被配置為存儲將要執(zhí)行以便本地地為云管理器105執(zhí)行工作以及遠(yuǎn)程地在所述網(wǎng)絡(luò)中的一個或多個上執(zhí)行工作的腳本。腳本130中的一個或多個還可以存儲在其他位置。例如,將要在網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)上執(zhí)行的腳本可以本地地存儲到該網(wǎng)絡(luò)。這些腳本可用于許多不同目的。例如,所述腳本可以用于執(zhí)行對網(wǎng)絡(luò)中的一個或多個中的機(jī)器的配置,改變之前配置的機(jī)器的設(shè)置,添加新的VM,添加新的數(shù)據(jù)庫,將數(shù)據(jù)從一個機(jī)器移動到另一個,移動承租人,改變方案等。根據(jù)一個實施例,這些腳本是微軟的 PowerShell 腳本。也可以使用其他編程實施方式。例如,可以使用編譯和/或前期綁定編程語言來實現(xiàn)該功能。然而,腳本是一種表達(dá)許多將要執(zhí)行的任務(wù)的相當(dāng)精確的語言。用諸如〔#的編程語言對其等價物進(jìn)行編程將常常需要冗長得多的實施方式。腳本還被后期綁定,這意味著可以以底層代碼庫的多個版本為目標(biāo),而不必不斷地鏈接到不同的接口 DLL。 使用PowerShell腳本將允許進(jìn)程由云管理器105本地地啟動,云管理器105進(jìn)而可以啟動遠(yuǎn)程機(jī)器(即,所附連的網(wǎng)絡(luò)之一中的物理機(jī)器)上的進(jìn)程。還可以使用其他技術(shù)來啟動遠(yuǎn)程機(jī)器上的進(jìn)程,諸如安全Siell(SSH)等。云管理器105所管理的應(yīng)用程序?qū)S眯畔⒂蓱?yīng)用程序管理器120來執(zhí)行。根據(jù)一個實施例,應(yīng)用程序?qū)S眯畔⑴c微軟SharePoint 有關(guān)。由此,應(yīng)用程序管理器120被配置為了解SiarePoint承租人、站點(diǎn)集合等。每個網(wǎng)絡(luò)可以被配置成用于承租人的專用網(wǎng)絡(luò)和/或服務(wù)于一個以上客戶的多承租人網(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ò)可以從十個服務(wù)器開始,并且之后擴(kuò)充為一百個或更多個服務(wù)器。可以給網(wǎng)絡(luò)內(nèi)的物理機(jī)器分配類或類型。例如,機(jī)器中的某些可以是計算機(jī)器(用于web前端和應(yīng)用程序服務(wù)器),并且其他機(jī)器可以是與計算機(jī)器相比配備有更多存儲的存儲機(jī)器。 根據(jù)實施例,云管理器105用映像文件的多個版本來配置網(wǎng)絡(luò)內(nèi)的機(jī)器。根據(jù)實施例,場常常具有映像文件的相同版本。根據(jù)一個實施例,在網(wǎng)絡(luò)內(nèi)由云管理器系統(tǒng)100通過虛擬化機(jī)器并且管理該網(wǎng)絡(luò)內(nèi)部獨(dú)立地行動的“場”來管理軟件極限。每個網(wǎng)絡(luò)可以包括一個或多個場(例如,參見網(wǎng)絡(luò)1)。根據(jù)一個實施例,網(wǎng)絡(luò)被認(rèn)為是經(jīng)網(wǎng)絡(luò)負(fù)載平衡的機(jī)器的單個群集,這些機(jī)器向外部世界展示一個或多個VIP(虛擬IP)并且可以將通信路由到該網(wǎng)絡(luò)內(nèi)的任何機(jī)器。網(wǎng)絡(luò)中的機(jī)器通常是緊密耦合的,并且具有最小等待時間(即< Ims查驗(ping)等待時間)。場是用于對需要緊密綁定關(guān)系的應(yīng)用程序進(jìn)行協(xié)調(diào)的機(jī)器的基本分組。例如,可以在每個網(wǎng)絡(luò)內(nèi)為諸如Microsoft SharePoint 的內(nèi)容管理應(yīng)用程序部署內(nèi)容場。一般而言,場的每個中的那組機(jī)器一起提供web服務(wù)和應(yīng)用程序服務(wù)器功能。通常,場內(nèi)的機(jī)器運(yùn)行相同構(gòu)建的應(yīng)用程序(即SiarePoint)并且共享公共的配置數(shù)據(jù)庫以服務(wù)特定的承租人和站點(diǎn)集合。場可以包含異構(gòu)的虛擬機(jī)組。云管理器105在數(shù)據(jù)存儲140內(nèi)維護(hù)“場目標(biāo)”, 該場目標(biāo)是每個場的每種角色的機(jī)器的目標(biāo)數(shù)目。某些角色包括內(nèi)容前端、內(nèi)容中央管理、內(nèi)容計時器服務(wù)、聯(lián)合中央管理、聯(lián)合應(yīng)用程序服務(wù)器等。例如,內(nèi)容場是處理傳入的顧客請求的基本SiarePoint場。聯(lián)合服務(wù)場包含可以跨場運(yùn)行的諸如搜索和簡檔存儲的 SiarePoint服務(wù)。場可以用于主存大容量公共因特網(wǎng)站點(diǎn)。某些場可以包含一組活動目錄服務(wù)器和供應(yīng)端口監(jiān)控程序(Daemon)。云管理器105自動地部署網(wǎng)絡(luò)中的虛擬機(jī)和/或讓網(wǎng)絡(luò)中的虛擬機(jī)退役,以幫助滿足所定義的目標(biāo)。這些場目標(biāo)可以自動地和/或手動地來配置。例如,場目標(biāo)可以響應(yīng)于活動和容量需求的改變而改變。網(wǎng)絡(luò)場-每個網(wǎng)絡(luò)存在一個包含可以作為整個網(wǎng)絡(luò)的資源而容易地橫向擴(kuò)展(scale out)的所有VM角色的網(wǎng)絡(luò)場。云管理器web服務(wù)API 150被設(shè)計為在大規(guī)模可伸縮的全球服務(wù)的上下文中工作。該API假定任何網(wǎng)絡(luò)請求可能失效和/或掛起在傳送中。對云管理器105的調(diào)用被配置為是冪等的。換言之,可以對云管理器105進(jìn)行多次相同的調(diào)用(只要參數(shù)是相同的) 而不改變結(jié)果。云管理器105被設(shè)計為在向任何給定的請求返回響應(yīng)之前進(jìn)行非常少的處理(< 10ms, < 50ms)。云管理器105維護(hù)記錄以保持跟蹤當(dāng)前請求。例如,云管理器105更新本地數(shù)據(jù)庫中的記錄,并且若需要則稍后調(diào)度“作業(yè)”以執(zhí)行更長的活動。云管理器保持跟蹤作為用于在網(wǎng)絡(luò)內(nèi)部署新機(jī)器的模板的映像(諸如,虛擬盤映像)。映像引用可以存儲在諸如數(shù)據(jù)庫140的數(shù)據(jù)庫中和/或某個其他位置。映像可以存儲在對其上將部署映像的網(wǎng)絡(luò)而言是本地的一個或多個共享的數(shù)據(jù)存儲中。根據(jù)一個實施例,每個映像都包括虛擬機(jī)(VM)角色類型,它指定映像可以部署的VM的類型;該映像應(yīng)當(dāng)使用的處理器的數(shù)目;將分配給該映像的RAM的數(shù)量;用于找出附近安裝點(diǎn)的網(wǎng)絡(luò) ID (使得它們不會通過跨數(shù)據(jù)中心鏈接被反復(fù)地復(fù)制);以及可以被部署代碼用于訪問VHD 的共享路徑?!愣裕稍葡到y(tǒng)100所管理的網(wǎng)絡(luò)中的機(jī)器不是以傳統(tǒng)方式通過下載數(shù)據(jù)并且將該數(shù)據(jù)合并到機(jī)器上的現(xiàn)有軟件中來升級的。相反,機(jī)器是通過用已更新的VHD替換 VHD來更新的。例如,當(dāng)場需要軟件的新版本時,部署具有安裝了該新版本的新場。當(dāng)部署新場時,將承租人從舊場移動到該新場。以此方式,由于升級造成的停機(jī)時間被最小化,并且場中的每個機(jī)器具有已被測試的相同版本。當(dāng)虛擬機(jī)需要升級時,機(jī)器上的VM可以被刪除并且被配置為運(yùn)行所需服務(wù)的VM所代替。盡管對現(xiàn)有軟件的升級不是最優(yōu)的,但是網(wǎng)絡(luò)內(nèi)的某些服務(wù)器使用原地升級的傳統(tǒng)更新過程。例如,活動目錄域控制器是通過更新服務(wù)器上的當(dāng)前軟件而不是完全替換機(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ù)庫M5、以及web服務(wù)API 2400一般而言,將在云管理系統(tǒng)(例如系統(tǒng)100)內(nèi)使用的數(shù)據(jù)庫的大小調(diào)整為實現(xiàn)高性能。例如,數(shù)據(jù)庫(諸如,工作數(shù)據(jù)庫215、機(jī)器數(shù)據(jù)庫225、承租人數(shù)據(jù)庫235和私密數(shù)據(jù)庫對幻不能超過預(yù)定義的大小限制(例如30GB、50GB、100GB等)。根據(jù)實施例,調(diào)整數(shù)據(jù)庫的大小以使得其小得足以放入物理機(jī)器的存儲器中。這有助于高讀取I/O性能。還可以基于應(yīng)用程序(諸如,與SQL服務(wù)器交互時)的性能來選擇數(shù)據(jù)庫的大小。還可以調(diào)整用在場中的數(shù)據(jù)庫的大小以實現(xiàn)高性能。例如,它們的大小可以被調(diào)整為能放入主機(jī)的存儲器中和/或被調(diào)整為使得備份操作、移動操作、復(fù)制操作、恢復(fù)操作一般在預(yù)定的時間段內(nèi)執(zhí)行。云管理器200將云管理器數(shù)據(jù)劃分成四個數(shù)據(jù)庫。工作數(shù)據(jù)庫215用于工作管理器。機(jī)器數(shù)據(jù)庫225用于機(jī)器管理器220。承租人數(shù)據(jù)庫235用于承租人管理器230,并且私密數(shù)據(jù)庫245用于存儲敏感信息,諸如系統(tǒng)賬戶和密碼信息、憑證、證書等。數(shù)據(jù)庫可以位于同一服務(wù)器上,或者跨服務(wù)器分割。根據(jù)實施例,每個數(shù)據(jù)庫被鏡像以獲得高可用性, 并且是SQL數(shù)據(jù)庫。云管理器200被配置為使用縮減的SQL特征組與數(shù)據(jù)庫交互以便有助于在數(shù)據(jù)庫升級期間提供云管理器200的可用性。例如,嘗試避免外來密鑰或已存儲的過程。外來密鑰可能使方案變化變得困難并且導(dǎo)致意料之外的故障情況。已存儲的過程將應(yīng)用程序中的更多個放置在數(shù)據(jù)庫本身中。嘗試最小化與SQL服務(wù)器的通信,因為與底層操作的成本相比,往返可能是昂貴的。例如,如果當(dāng)前SQL服務(wù)器到單個數(shù)據(jù)庫的全部交互被包裝在單個往返中,則常常是效率高得多的。極少在數(shù)據(jù)庫015,225,235)內(nèi)使用限制條件。一般而言,限制條件在其有助于在沒有額外查詢的情況下提供具有正確類型的錯誤處理的簡單更新時是有益的。例如,完全合格的域名(FQDN)表具有對“名稱”施加的限制條件,以幫助防止承租人意外地試圖主張與已經(jīng)被分配給不同承租人的FQDN相同的FQDN。當(dāng)添加索引時使用警告。索引通常以寫入操作的額外I/O為代價來改善讀取性能。由于數(shù)據(jù)庫內(nèi)的數(shù)據(jù)主要是駐留在RAM上的,因此即使全表掃描仍然是相對快的。根據(jù)實施例,一旦查詢模式已經(jīng)穩(wěn)定并且所提出的索引可以確定性能改善,就可以添加索引。 根據(jù)實施例,如果添加索引將可能花費(fèi)長時間,則“ONLINE = ON(在線=開啟)”選項可以被指定,以使得在最初構(gòu)該建索引時表不被鎖定。根據(jù)實施例,可以執(zhí)行對云管理器內(nèi)數(shù)據(jù)庫的升級而不導(dǎo)致云管理器系統(tǒng)停機(jī)。 換言之,即使在云管理器升級期間,云管理器繼續(xù)處理已接收的請求。由此,對方案作出的改變應(yīng)與之前的方案兼容。在升級云管理器所使用的web服務(wù)器之前進(jìn)行SQL方案升級。 當(dāng)web服務(wù)器升級時,它們可以開始使用數(shù)據(jù)庫中所啟用的新特性。數(shù)據(jù)庫升級被限制以使得升級中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向現(xiàn)有列添加新的可空列??梢栽诒淼慕Y(jié)尾處添加新的列。一般而言,避免對數(shù)據(jù)庫的耗時操作。例如,在創(chuàng)建時間向新添加的列添加缺省值可能在存在大量數(shù)據(jù)時是非常耗時的操作。然而,添加可空列是非??焖俚牟僮?。如上面所討論的,允許添加新的索引,但是在添加新的限制條件時應(yīng)當(dāng)采取警告,以幫助保證方案升級不會破壞現(xiàn)有數(shù)據(jù)。例如,當(dāng)添加限制條件時,該限制條件可以被設(shè)置為如下狀態(tài)該限制條件不被檢查并且避免對現(xiàn)有行和潛在的錯誤進(jìn)行高成本的驗證。舊表和不使用的列在新版本被使用并且云管理器不訪問這些表和列之后被移除。—般而言,每個數(shù)據(jù)庫中的單個行用于指示任務(wù)和/或所需狀態(tài)。例如,承租人數(shù)據(jù)庫235為每個承租人包括單個行。給定的承租人可以包括所需版本記錄。該記錄用于幫助保證該承租人被放置在運(yùn)行所需版本的場上。例如,對于要停留在SiarePoint 14 SPl 上的承租人1而言,該承租人的所需版本可以被設(shè)置為“14. 1”,并且包括14. 1的任何版本都將匹配而任何其他版本(例如14. 2. xxxx)都將不匹配。承租人記錄可以包括其他項目, 諸如已授權(quán)的用戶數(shù)目、限額(例如所允許的總數(shù)據(jù)使用、每用戶的數(shù)據(jù)使用等)、時間限制等。某個組織可能具有代表不同地理位置、組合或容量的多個承租人。根據(jù)實施例,將承租人彼此隔開而沒有(經(jīng)由外聯(lián)網(wǎng)或其他特性)對用戶的明確邀請。根據(jù)一個實施例,每個承租人都被鎖定到特定的網(wǎng)絡(luò)中。承租人被保持為相對于一小組數(shù)據(jù)庫而言是本地化的。承租人或者是小的(小于將填充一個數(shù)據(jù)庫的程度),在這種情況下,該承租人處于與其他承租人共享的恰好一個數(shù)據(jù)庫中。這意味著共享該數(shù)據(jù)庫的所有承租人需要同時升級。當(dāng)承租人變大時,其可被移動到其自己的專用數(shù)據(jù)庫,并且現(xiàn)在可以具有一個以上、但是不與其他承租人共享的數(shù)據(jù)庫。在一個或多個專用數(shù)據(jù)庫中維護(hù)大承租人有助于減少需要在單次升級中同時升級的數(shù)據(jù)庫的數(shù)目。類似地,工作數(shù)據(jù)庫215對于每個作業(yè)包括單個行。機(jī)器數(shù)據(jù)庫225可以對于每個物理機(jī)器、VM、場等包括一行。例如,機(jī)器管理器數(shù)據(jù)庫225可以包括版本字符串。根據(jù)實施例,網(wǎng)絡(luò)內(nèi)的每個VHD、場和VM具有相關(guān)聯(lián)的版本字符串。根據(jù)一個實施例,云管理器包括簡單日志系統(tǒng),該簡單日志系統(tǒng)可以被配置為為每個web服務(wù)調(diào)用記錄日志條目??梢詫崿F(xiàn)包括如所期望的那樣少和/或多的特性的日志系統(tǒng)。一般而言,日志系統(tǒng)被用于度量使用和性能剖析。根據(jù)實施例,web服務(wù)API 240是使用具有ASP. net的SOAP構(gòu)建的。API中的各種web方法遵循兩種主要模式——獲取(Gets)和更新(Updates)。一般而言,更新方法將數(shù)據(jù)結(jié)構(gòu)作為輸入,并且返回相同的結(jié)構(gòu)作為輸出。輸出結(jié)構(gòu)返回數(shù)據(jù)庫中底層對象的當(dāng)前狀態(tài),其中如果驗證或其他業(yè)務(wù)邏輯改變了某些性質(zhì)或者以其他方式填充了附加的性質(zhì) (例如記錄ID或由云管理器計算出的其他值),則該底層對象可能不同于輸入對象。更新方法用于初始對象創(chuàng)建以及隨后的更新。換言之,對web服務(wù)API 240的調(diào)用者可以簡單地請求它們想要的配置并且它們不需要保持跟蹤對象是否已經(jīng)存在。另外,這意味著更新是冪等的,其中相同的更新調(diào)用可以進(jìn)行兩次,這與僅僅發(fā)生一次具有相同效果。根據(jù)實施例,更新方法可以包括LastUpdated(最近更新)性質(zhì)。當(dāng)存在LastUpdated屬性時,若 LastUpdated的值與當(dāng)前存儲在數(shù)據(jù)庫中的值不匹配,則云管理器200拒絕更新。某些更新方法包括在對方法的第一次調(diào)用時被設(shè)置的并且在對方法的其他調(diào)用時未被設(shè)置的屬性。云管理器200被配置為避免使用回調(diào)。由于回調(diào)可能是不可靠的,因此與云管理器200交互的客戶可以在他們想要檢查更新狀態(tài)時使用web服務(wù)API來檢查對象狀態(tài)。根據(jù)實施例,對更新方法的調(diào)用導(dǎo)致云管理器200將底層對象的狀態(tài)設(shè)置為“供應(yīng) (Provisioning) ”,并且當(dāng)更新完成時,狀態(tài)被設(shè)置為“活動(Active) ”。圖3示出了存儲在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄。如所示的,記錄300包括作業(yè)標(biāo)識符302、類型304、數(shù)據(jù)306、所有者308、步驟310、上一次運(yùn)行312、期滿時間314、下次時間316、狀態(tài)318以及狀況320?!愣裕槍λ埱蟮囊獔?zhí)行的每個任務(wù),云管理器在數(shù)據(jù)庫350 (例如,圖2中的工作數(shù)據(jù)庫21 中創(chuàng)建記錄。作業(yè)標(biāo)識符302用于為所請求的任務(wù)指定唯一標(biāo)識符。類型304指定要執(zhí)行的任務(wù)。例如,類型可以包括將要執(zhí)行的腳本的名稱。例如,當(dāng)任務(wù)是要運(yùn)行名稱為“D印loyVM. psl”的腳本時,則數(shù)據(jù)306可以包括標(biāo)識符(例如 "-VMID 123”)。這允許將新任務(wù)類型添加到系統(tǒng),而不需要對該系統(tǒng)的已編譯或其他二進(jìn)制部分進(jìn)行任何改變。數(shù)據(jù)306用于存儲與任務(wù)相關(guān)聯(lián)的數(shù)據(jù)。例如,數(shù)據(jù)可以被設(shè)置為將在其上執(zhí)行任務(wù)的承租人、機(jī)器、網(wǎng)絡(luò)、VM等。數(shù)據(jù)306還可以存儲數(shù)據(jù)庫中的值被設(shè)置成的一個或多個值。執(zhí)行任務(wù)的進(jìn)程可以注意作業(yè)記錄以查看所需機(jī)器數(shù)目被設(shè)置為何值。腳本使用數(shù)據(jù)庫中的值來執(zhí)行操作。所有者308指定進(jìn)程/執(zhí)行該進(jìn)程的機(jī)器。例如,當(dāng)云管理器機(jī)器開始執(zhí)行作業(yè)時,該機(jī)器使用機(jī)器的ID來更新記錄的所有者308部分。步驟310提供對當(dāng)前腳本的步驟的指示。例如,腳本可以將任務(wù)劃分成任何數(shù)目的步驟。當(dāng)進(jìn)程完成該腳本的步驟時,步驟310被更新。進(jìn)程還可以查看步驟310以確定在腳本中要執(zhí)行什么步驟并且避免必須重新執(zhí)行之前已完成的步驟。上一次運(yùn)行312提供上一次啟動腳本的時間。每次啟動腳本時,更新上一次運(yùn)行時間。期滿時間314是指示該進(jìn)程應(yīng)當(dāng)何時終止的時間。根據(jù)實施例,期滿時間是在啟動進(jìn)程之后的預(yù)定的時間量(例如5分鐘、10分鐘...)。期滿時間可以通過經(jīng)由web服務(wù) API的請求過程來更新。下次時間316是指示任務(wù)下次應(yīng)當(dāng)何時執(zhí)行的時間。例如,進(jìn)程可以在完成某步驟之后停止,并且被指示等待直到所指定的下次時間316以恢復(fù)處理。狀態(tài)318指示當(dāng)前狀態(tài),并且狀況320指示作業(yè)的狀況(例如,已創(chuàng)建、已掛起、已恢復(fù)、執(zhí)行中、已刪除)。如果數(shù)據(jù)庫中的重復(fù)行具有相同的任務(wù)類型和數(shù)據(jù)值,則它們可以在執(zhí)行之前被移除。例如,可以進(jìn)行多個請求以執(zhí)行存儲在數(shù)據(jù)庫的多個行中的相同的任務(wù)。作業(yè)可以具有與其相關(guān)聯(lián)的一個或多個鎖355。如果鎖不可用,則作業(yè)將不被調(diào)度運(yùn)行,直到鎖可用。這些鎖可以以許多不同的方式來配置。例如,鎖可以基于互斥、信號量等。一般而言,互斥防止代碼被一個以上線程同時執(zhí)行,并且信號量將共享資源的同時使用的數(shù)目限制在最大數(shù)目。根據(jù)實施例,鎖是表示資源的字符串。該資源可以是任何類型的資源。例如,鎖可以是場、機(jī)器、承租人等。一般而言,鎖用于延遲一個或多個任務(wù)的執(zhí)行。 每個作業(yè)可以指定其在運(yùn)行以前需要的一個或多個鎖。作業(yè)可以在其操作期間的任何時間釋放鎖。當(dāng)存在鎖時,作業(yè)不被調(diào)度。需要一個以上鎖的作業(yè)一次請求所需的全部鎖。例如,已經(jīng)持有鎖的作業(yè)可以不請求附加的鎖。這樣的方案有助于防止由在多個作業(yè)間的循環(huán)鎖依賴性所造成的可能的死鎖情況。圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng)400,該網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器。示例系統(tǒng)400包括客戶機(jī)402和404,網(wǎng)絡(luò)406,負(fù)載平衡器408,web請求路由器409, WFE服務(wù)器410、412、414,后端服務(wù)器416-419,以及任選的負(fù)載平衡器420??墒褂酶嗷蚋俚目蛻魴C(jī)、WFE、后端服務(wù)器、負(fù)載平衡器和網(wǎng)絡(luò)。另外,由系統(tǒng)400中的組件所提供的功能中的某些可以由其他組件來執(zhí)行。例如,某些負(fù)載平衡可以在WFE中執(zhí)行。在示例實施例中,客戶機(jī)402和404是諸如臺式計算機(jī)、膝上型計算機(jī)、終端計算機(jī)、個人數(shù)字助理或蜂窩電話設(shè)備的計算設(shè)備??蛻魴C(jī)402和404可包括輸入/輸出設(shè)備、 中央處理單元(“CPU”)、數(shù)據(jù)存儲設(shè)備和網(wǎng)絡(luò)設(shè)備。在本申請中,術(shù)語客戶機(jī)和客戶機(jī)計算機(jī)互換地使用。WFE 410,412和414可由客戶機(jī)402和404經(jīng)由負(fù)載平衡器408和web請求路由器409通過網(wǎng)絡(luò)406訪問。如所討論的,服務(wù)器可以在場中配置。后端服務(wù)器416對WFE 410,412和414是可訪問的。負(fù)載平衡器408是專用網(wǎng)絡(luò)設(shè)備和/或一個或多個服務(wù)器計算機(jī)。負(fù)載平衡器408,web請求路由器409,負(fù)載平衡器420,WFE 410,412和414以及后端服務(wù)器416可包括輸入/輸出設(shè)備、中央處理單元(“CPU”)、數(shù)據(jù)存儲設(shè)備和網(wǎng)絡(luò)設(shè)備。 在示例實施例中,網(wǎng)絡(luò)406是因特網(wǎng),并且客戶機(jī)402和404可以遠(yuǎn)程地訪問WFE 410,412 和414以及連接到WFE 410,412和414的資源。在示例實施例中,系統(tǒng)400是在線的、基于瀏覽器的文檔協(xié)作系統(tǒng)。在線的、 基于瀏覽器的文檔協(xié)作系統(tǒng)的一個示例是來自美國華盛頓州雷蒙德市的微軟公司的 Microsoft Sharepoint 。在系統(tǒng)400中,后端服務(wù)器416-419中的一個或多個是SQL服務(wù)器,例如,來自美國華盛頓州雷蒙德市的微軟公司的SQL服務(wù)器。
WFE 410、412和414提供客戶機(jī)402和404與后端服務(wù)器416-419之間的接口。 負(fù)載平衡器408、420將請求從客戶機(jī)402和404定向到web請求路由器,并且從WFF定向到后端服務(wù)器416-419。web請求路由器409將請求定向到WFE 410,412和414,并且使用諸如WFE利用率、到WFE的連接數(shù)目和總體WFE性能的因素來確定哪個WFE服務(wù)器接收客戶機(jī)請求。類似地,負(fù)載平衡器420使用諸如后端服務(wù)器利用率、到服務(wù)器的連接數(shù)目和總體性能的因素來確定哪個后端服務(wù)器接收請求。web請求路由器409可用于從負(fù)載平衡器 408卸載處理中的某些。例如,負(fù)載平衡器408可運(yùn)行在較低的TCP/IP層(例如,層4)以使得它可以處理更多的請求。web請求路由器409提供可運(yùn)行在較高的TCP/IP層(例如, 層7)的可縮放的請求路由器。web請求路由器可以使用用于路由請求的應(yīng)用程序?qū)S眠壿嫛@?,可以基于文檔標(biāo)識符和/或包括在已接收的請求內(nèi)的用戶信息來路由請求??蛻魴C(jī)請求的示例可以是訪問存儲在后端服務(wù)器之一上的文檔,以編輯存儲在后端服務(wù)器(例如416-419)上的文檔,或者將文檔存儲在后端服務(wù)器上。當(dāng)負(fù)載平衡器408 通過網(wǎng)絡(luò)406接收客戶機(jī)請求時,負(fù)載平衡器408將請求定向到可用的web請求路由器409 中的一個。web請求路由器409確定WFE服務(wù)器410、412和414中的哪一個接收客戶機(jī)請求。類似地,負(fù)載平衡器420確定后端服務(wù)器416-419中的哪一個從WFE服務(wù)器接收請求。 后端服務(wù)器可以被配置為存儲一個或多個承租人(即顧客)的數(shù)據(jù)?,F(xiàn)在參考圖5,將描述在各實施例中利用的計算機(jī)500的說明性計算機(jī)體系結(jié)構(gòu)。 圖5所示的計算機(jī)體系結(jié)構(gòu)可被配置為服務(wù)器、臺式或移動計算機(jī),并且包括中央處理單元5( “CPU”)、包括隨機(jī)存取存儲器9 ( “RAM”)和只讀存儲器(“ROM”)10的系統(tǒng)存儲器 7、以及將存儲器耦合至中央處理單元(“CPU”)5的系統(tǒng)總線12。基本輸入/輸出系統(tǒng)存儲在ROM 10中,所述基本輸入/輸出系統(tǒng)包含幫助在諸如啟動期間在計算機(jī)內(nèi)元件之間傳遞信息的基本例程。計算機(jī)500還包括大容量存儲設(shè)備14 以用于存儲操作系統(tǒng)16、應(yīng)用程序10、數(shù)據(jù)存儲24、文件、以及與云系統(tǒng)100的執(zhí)行和同云系統(tǒng)100的交互相關(guān)的云程序26。大容量存儲設(shè)備14通過連接至總線12的大容量存儲控制器(未示出)連接到 CPU 5。大容量存儲設(shè)備14及其相關(guān)聯(lián)的計算機(jī)可讀介質(zhì)為計算機(jī)500提供非易失性存儲。雖然此處包含的計算機(jī)可讀介質(zhì)的描述針對諸如硬盤或CD-ROM驅(qū)動器等大容量存儲設(shè)備,但是計算機(jī)可讀介質(zhì)可以是計算機(jī)100可以訪問的任何可用介質(zhì)。作為示例而非限制,計算機(jī)可讀介質(zhì)可包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括以存儲如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機(jī)存儲介質(zhì)還包括,但不限于,RAM、ROM、可擦除可編程只讀存儲器(“EPR0M”)、電可擦可編程只讀存儲器 (“EEPR0M”)、閃存或其它固態(tài)存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(“DVD”)或其它光存儲、 磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或能用于存儲所需信息且可以由計算機(jī)500 訪問的任何其它介質(zhì)。根據(jù)各實施例,計算機(jī)500可以使用通過諸如因特網(wǎng)的網(wǎng)絡(luò)18至遠(yuǎn)程計算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。計算機(jī)500可以通過連接至總線12的網(wǎng)絡(luò)接口單元20來連接到網(wǎng)絡(luò)18。網(wǎng)絡(luò)連接可以是無線的和/或有線的。網(wǎng)絡(luò)接口單元20也可用于連接到其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計算機(jī)系統(tǒng)。計算機(jī)500還可以包括用于接收和處理來自多個其他設(shè)備的輸入的輸入/輸出控制器22,這些設(shè)備包括鍵盤、鼠標(biāo)或者電子指示筆(圖5中未示出)。 類似地,輸入/輸出控制器22可以向顯示屏洲、打印機(jī)或其它類型的輸出設(shè)備提供輸出。如上面簡要提到的,多個程序模塊和數(shù)據(jù)文件可以存儲在計算機(jī)500的大容量存儲設(shè)備14和RAM 9內(nèi),包括適于控制聯(lián)網(wǎng)計算機(jī)的操作的操作系統(tǒng)16,比如華盛頓州雷蒙德市的微軟公司的WINDOWS 操作系統(tǒng)。大容量存儲設(shè)備14和RAM 9還可以存儲一個或多個程序模塊。具體而言,大容量存儲設(shè)備14和RAM 9可以存儲諸如云程序沈的執(zhí)行與云系統(tǒng)相關(guān)的任務(wù)的一個或多個應(yīng)用程序。圖6示出用于在在線服務(wù)中路由通信的系統(tǒng)。云管理器605用于為在線服務(wù)部署、 配置、打補(bǔ)丁和管理網(wǎng)絡(luò)。云管理器被配置為通過不能依靠可靠網(wǎng)絡(luò)的冪等和異步的應(yīng)用程序web服務(wù)應(yīng)用程序編程接口(API) 620來接收請求。如所示的,云管理器605包括工作管理器110、機(jī)器管理器610、應(yīng)用程序管理器 120、腳本130、數(shù)據(jù)存儲630、映像640和web服務(wù)API 620。根據(jù)一個實施例,應(yīng)用程序管理器120是SharePoint承租人管理器,該管理器包括SharePoint專用邏輯。使用API 620的請求可用于在跨不同網(wǎng)絡(luò)(網(wǎng)絡(luò)1、網(wǎng)絡(luò)2)的各種拓?fù)浣Y(jié)構(gòu)中管理和部署服務(wù)器。盡管僅示出了兩個網(wǎng)絡(luò),但是一般可以管理許多更多的網(wǎng)絡(luò)(例如十個、 一百個、一千個、一萬個等)。云管理器605運(yùn)行,并且可以與上面所示和所描述的云管理器系統(tǒng)類似地來配置。web服務(wù)API 620包括用于從工作管理器110、機(jī)器管理器115和應(yīng)用程序管理器120請求服務(wù)的方法。例如,可以使用API 620進(jìn)行請求,以便更新數(shù)據(jù)庫中的承租人、添加新的SQL服務(wù)器、部署補(bǔ)丁、部署新的場、添加新的機(jī)器、更新VM、獲得數(shù)據(jù)存儲內(nèi)的值等。云系統(tǒng)600中的網(wǎng)絡(luò)被設(shè)計為是高度可伸縮的,并且具有高能力。網(wǎng)絡(luò)可包括負(fù)載平衡器(例如負(fù)載平衡器660) ,web請求路由器665、高速緩存服務(wù)器670以及可被安排在為在線服務(wù)執(zhí)行角色的場中的物理和虛擬機(jī)。負(fù)載平衡器660可包括一個或多個專用硬件設(shè)備和/或被配置為執(zhí)行負(fù)載平衡的通用計算設(shè)備。根據(jù)實施例,負(fù)載平衡器660是在層4TCP/IP連接處終止的專用硬件負(fù)載平衡器。當(dāng)負(fù)載平衡器不必執(zhí)行大量處理時,它通??梢月酚稍S多更多的消息。例如,處理安全套接字層(SSL)連接可顯著地減少負(fù)載平衡器可處理的多個請求。與較高層相比,負(fù)載平衡器可能夠在較低層路由許多更多的請求(例如,比在較低層處理多達(dá)5倍的請求)。與負(fù)載平衡器660相比,網(wǎng)絡(luò)中的web請求路由器665用于執(zhí)行更高級的處理。 web請求路由器可以是可包括內(nèi)置到硬件中的解密功能的通用計算設(shè)備(例如服務(wù)器)。例如,很多CPU已經(jīng)內(nèi)置了可被利用的解碼功能。web請求路由器通常比用于大型網(wǎng)絡(luò)的專用負(fù)載平衡器(例如負(fù)載平衡器660)更便宜??衫萌我鈹?shù)目的web請求路由器665來處理請求。在在線服務(wù)運(yùn)行期間,web請求路由器的數(shù)目也可以動態(tài)地改變。例如,取決于服務(wù)的負(fù)載,可以動態(tài)地部署/移除更多或更少的web請求路由器。web請求路由器665接收由負(fù)載平衡器660轉(zhuǎn)發(fā)的請求。它們解析請求,確定目的地并且將請求轉(zhuǎn)發(fā)到已確定的目的地(例如,網(wǎng)絡(luò)的場之一中的機(jī)器)。web請求路由器可以使用用于路由請求的應(yīng)用程序?qū)S眠壿嫛?梢曰谖臋n標(biāo)識符和/或包括在已接收的請求內(nèi)的用戶信息來路由請求。例如,請求可以是“...../wordviewer. aspx ? id = foo. docx”形式的HTTP請求。請求與特定的應(yīng)用程序相關(guān)聯(lián), 并且包括文檔標(biāo)識符“foo. docx”作為請求的部分。不同的應(yīng)用程序可以具有不同的請求結(jié)構(gòu)。一般而言,與應(yīng)用程序相關(guān)聯(lián)的請求可以包括諸如以下各項應(yīng)用程序信息、用戶信息、承租人信息、文檔信息等。很多應(yīng)用程序請求已經(jīng)包括可用于路由的信息,而不必修改請求以包括可用于路由的附加信息。換言之,web請求路由器具有關(guān)于應(yīng)用程序如何創(chuàng)建請求的應(yīng)用程序?qū)S弥R。由此,由于應(yīng)用程序可以已經(jīng)包括請求內(nèi)的可用信息,因此附加信息不必被創(chuàng)建并被存儲在請求內(nèi)。對請求的路由可以基于所請求的內(nèi)容的名稱(例如,foo.docx)。例如,對文檔 foo. docx的全部請求可被定向到單個服務(wù)器以處理請求。一旦文檔已經(jīng)被請求,它可被高速緩存到最初處理請求的服務(wù)器上。由于可以基于文檔名稱來路由請求,則該文檔很有可能位于已確定的服務(wù)器的高速緩存中。其他應(yīng)用程序?qū)S眯畔⒁部捎糜诼酚烧埱?,諸如基于應(yīng)用程序的特定版本、文檔版本、應(yīng)用程序類型等來路由。對請求的路由還可以至少部分地基于其他因素,諸如基于非用戶發(fā)起的請求來路由(bots);請求的復(fù)制(路由到多個端點(diǎn)用于調(diào)試目的);地理分布(跨網(wǎng)絡(luò)、跨數(shù)據(jù)中心路由以獲得DNS傳播期間的高可用性)等。文檔還可以被高速緩存在某些其它位置,諸如高速緩存服務(wù)器670內(nèi)。高速緩存服務(wù)器670通過從相同客戶機(jī)或其他客戶機(jī)進(jìn)行的先前的請求中檢索已保存的內(nèi)容來加速請求。高速緩存服務(wù)器670頻繁地存儲所請求的資源以使得它們可以被更快速地提供。查找表可用于確定請求的目的地。例如,查找表672可被存儲在網(wǎng)絡(luò)和/或高速緩存服務(wù)器670內(nèi)的數(shù)據(jù)存儲中。查找表由web請求路由器665訪問以確定請求的目的地。 例如,查找表可包括顧客名稱、文檔名稱以及該文檔所存儲的位置。web請求路由器使用來自請求的信息并在查找表內(nèi)為該文檔查找數(shù)據(jù)存儲的位置。當(dāng)在線服務(wù)內(nèi)的內(nèi)容位置變化時,查找表可被云管理器605更新以使得web請求路由器自動地將內(nèi)容定向到已更新的位置。如所討論的,出于很多不同的理由,內(nèi)容位置可以改變,諸如機(jī)器、場、數(shù)據(jù)庫的新部署, 升級,分隔數(shù)據(jù)庫,碎片整理操作等。當(dāng)內(nèi)容位置改變時,云管理器605可以使用新位置改變查找表內(nèi)先前位置的名稱。web請求路由器665的任何未來的查找導(dǎo)致請求被自動地路由到已更新的位置。用戶還可以指定將他們的請求路由到的目的地。例如,顧客可改變其內(nèi)容的位置以便測試新的部署。該請求可通過API 620接收并由云管理器605處理。圖7示出在在線系統(tǒng)中路由請求的過程。當(dāng)閱讀對在此提供的例程的討論時,應(yīng)當(dāng)理解,各實施例的邏輯操作被實現(xiàn)為(1) 運(yùn)行于計算系統(tǒng)上的一系列計算機(jī)實現(xiàn)的動作或程序模塊,和/或(2)計算系統(tǒng)內(nèi)互連的機(jī)器邏輯電路或電路模塊。該實現(xiàn)是取決于實現(xiàn)本發(fā)明的計算系統(tǒng)的性能要求來選擇的。 因此,所例示的并且構(gòu)成此處所描述的實施例的邏輯操作被不同地表示為操作、結(jié)構(gòu)設(shè)備、 動作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動作和模塊可用軟件、固件、專用數(shù)字邏輯以及它們的任何組合來實現(xiàn)。在啟動操作之后,過程700行進(jìn)至在其中接收請求的操作710。在被配置為將請求路由到適合的目的地的一組服務(wù)器處接收請求。請求是針對存儲在網(wǎng)絡(luò)中的一個或多個機(jī)器上的內(nèi)容。所請求的內(nèi)容可以在在線服務(wù)運(yùn)行期間在網(wǎng)絡(luò)內(nèi)移動位置。例如,數(shù)據(jù)庫可被復(fù)制到新位置、新的場可被部署等。由于網(wǎng)絡(luò)所接收的請求從負(fù)載平衡器被路由到web 請求路由器以確定目的地,因此客戶機(jī)無需知道內(nèi)容位置的改變。行進(jìn)至操作720,請求被解析。取決于請求類型,請求可被解析為不同類型的信息。 例如,不同的應(yīng)用程序可在其應(yīng)用程序?qū)S谜埱髢?nèi)包括不同的信息。每個應(yīng)用程序可以具有不同的URL結(jié)構(gòu)。請求可包括應(yīng)用程序標(biāo)識信息、文檔信息、用戶信息、認(rèn)證信息、顧客信息等。根據(jù)實施例,請求被解析為文檔名稱。移至操作730,確定請求的目的地。根據(jù)實施例,關(guān)于網(wǎng)絡(luò)中各機(jī)器上有哪些可用內(nèi)容的信息被存儲在查找表中。一個或多個機(jī)器可以存儲內(nèi)容。例如,單個數(shù)據(jù)庫可存儲用于特定承租人的內(nèi)容。只要內(nèi)容位置改變就更新查找表,以使得查找表包含的信息準(zhǔn)確地反映進(jìn)行請求時具有可用內(nèi)容的服務(wù)器。根據(jù)實施例,查找表標(biāo)識處理特定文檔的機(jī)器。 例如,一個服務(wù)器處理某些文檔,另一個服務(wù)器處理其他文檔等。通過將對相同內(nèi)容的請求發(fā)送到相同的機(jī)器,文檔將有可能被存儲在機(jī)器的高速緩存內(nèi)。如果請求是針對不具有被高速緩存的文檔的另一個服務(wù)器,則機(jī)器在獲得該文檔時必須執(zhí)行更多的步驟。也可以基于包括在最初接收的請求內(nèi)的用戶/顧客信息來確定目的地。轉(zhuǎn)移到操作740,請求被轉(zhuǎn)發(fā)到已確定的目的地。隨后該過程移至結(jié)束框并返回以處理其它動作。以上說明、示例和數(shù)據(jù)提供了對本發(fā)明的組成部分的制造和使用的全面描述。因為可以在不背離本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實施例,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于在在線服務(wù)中路由請求的方法,包括在所述在線服務(wù)的網(wǎng)絡(luò)中接收對內(nèi)容的請求,其中由所述在線服務(wù)的網(wǎng)絡(luò)中的負(fù)載平衡器接收所述請求,所述負(fù)載平衡器將所述請求路由到所述在線服務(wù)中web請求路由器組中的一個web請求路由器,以確定所述內(nèi)容的目的地(710); 解析所述請求(720);使用存儲在所述請求內(nèi)的應(yīng)用程序?qū)S眯畔泶_定所述請求的目的地(730);以及將所述請求轉(zhuǎn)發(fā)到所述目的地(740)。
2.如權(quán)利要求1所述的方法,其特征在于,確定所述目的地包括訪問包含目的地列表的查找表(672)。
3.如權(quán)利要求1所述的方法,其特征在于,解析所述請求包括確定包括在已接收的請求內(nèi)的文檔名稱(720)。
4.如權(quán)利要求1所述的方法,其特征在于,解析所述請求(720)包括確定以下的至少一個來自所述請求的所述內(nèi)容與之相關(guān)聯(lián)的應(yīng)用程序;來自所述請求的所述內(nèi)容與之相關(guān)聯(lián)的應(yīng)用程序的版本。
5.如權(quán)利要求1所述的方法,其特征在于,使用存儲在所述請求內(nèi)的所述應(yīng)用程序信息來確定所述請求的所述目的地(730)包括確定與所述請求相關(guān)聯(lián)的顧客。
6.如權(quán)利要求2所述的方法,其特征在于,還包括確定所述請求是非用戶發(fā)起的請求并且確定請求是被復(fù)制的請求(665)。
7.如權(quán)利要求2所述的方法,其特征在于,還包括允許用戶更新所述查找表以指定從承租人接收的請求的所述目的地(730)。
8.一種具有計算機(jī)可執(zhí)行指令的計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可執(zhí)行指令用于在在線服務(wù)中路由請求,包括在所述在線服務(wù)的網(wǎng)絡(luò)中接收對內(nèi)容的請求,其中由所述在線服務(wù)的網(wǎng)絡(luò)中的負(fù)載平衡器接收所述請求,所述負(fù)載平衡器將所述請求路由到所述在線服務(wù)中web請求路由器組中的一個web請求路由器,以確定所述內(nèi)容的目的地(710); 解析所述請求(720);使用存儲在所述請求內(nèi)的應(yīng)用程序?qū)S眯畔泶_定所述請求的目的地(730);以及將所述請求轉(zhuǎn)發(fā)到所述目的地(740)。
9.一種用于在在線服務(wù)中路由請求的系統(tǒng),包括 處理器和計算機(jī)可讀介質(zhì)(5);存儲在所述計算機(jī)可讀介質(zhì)上并在所述處理器上執(zhí)行的操作環(huán)境(16); 云管理器(105),耦合到不同的網(wǎng)絡(luò),用于管理在線服務(wù)中的對機(jī)器的部署和對所述網(wǎng)絡(luò)的配置;以及web請求路由器G09),每個被配置為執(zhí)行動作,包括 接收對所述在線服務(wù)中內(nèi)容的請求(710); 解析所述請求(720);使用存儲在所述請求內(nèi)的應(yīng)用程序?qū)S眯畔泶_定所述請求的目的地;其中所述應(yīng)用程序?qū)S眯畔ㄎ臋n名稱,其中確定所述目的地包括訪問包含目的地列表的查找表,所述查找表由所述web請求路由器中的每個在確定所述目的地時訪問(730);以及將所述請求轉(zhuǎn)發(fā)到所述目的地(740)。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括允許用戶通過應(yīng)用程序編程接口更新所述查找表以指定從承租人接收的請求的所述目的地(150)。
全文摘要
本發(fā)明涉及路由通信,尤其是在在線服務(wù)中以高可用性路由通信。云管理系統(tǒng)中的web請求路由器用于在網(wǎng)絡(luò)內(nèi)部路由對與在線服務(wù)相關(guān)聯(lián)的內(nèi)容的請求。web請求路由器接收請求,解析請求并將請求轉(zhuǎn)發(fā)到適合的目的地。web請求路由器可以使用用于路由請求的應(yīng)用程序?qū)S眠壿?。例如,可以基于文檔標(biāo)識符和/或包括在已接收的請求內(nèi)的用戶信息來路由請求。查找表可用于確定請求的目的地。當(dāng)在線服務(wù)內(nèi)的內(nèi)容位置變化時,可更新查找表以使得web請求路由器自動地將內(nèi)容定向到已更新的位置。用戶還可以指定將他們的請求路由到哪里。
文檔編號H04L12/56GK102420847SQ201110339860
公開日2012年4月18日 申請日期2011年10月19日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者A·霍普曼, E·??怂? T·富特旺勒 申請人:微軟公司