專利名稱:分布式高速緩存安排的制作方法
分布式高速緩存安排背景計(jì)算機(jī)技術(shù)(例如,微處理器速度、存儲(chǔ)器容量、數(shù)據(jù)傳輸帶寬、軟件功能等)的逐 漸進(jìn)步一般有助于各行業(yè)中的計(jì)算機(jī)應(yīng)用的增長(zhǎng)。通常提供常被配置為服務(wù)器陣列的甚至 更強(qiáng)大的服務(wù)器系統(tǒng)來服務(wù)源自諸如萬維網(wǎng)等外部源的請(qǐng)求。通常,計(jì)算機(jī)系統(tǒng)中的一個(gè)持續(xù)存在的問題仍是處理不斷增長(zhǎng)的可用信息或數(shù)據(jù) 量。以某種形式存儲(chǔ)在數(shù)據(jù)庫(kù)的盤或其他介質(zhì)上的純粹的信息量顯著地增大。在幾十年 之前文件和盤是以數(shù)千字節(jié)度量的一當(dāng)時(shí)是數(shù)百萬字節(jié)(兆字節(jié)),接下來是數(shù)十億字節(jié) (GB)—而現(xiàn)在,正在創(chuàng)建百萬兆字節(jié)(萬億字節(jié))和甚至數(shù)十億兆字節(jié)的數(shù)據(jù)庫(kù),并將它們 用于日常的活動(dòng)中。此外,各種形式的存儲(chǔ)設(shè)備允許信息保留相對(duì)較長(zhǎng)的時(shí)間,而不會(huì)有信息退化。一 種常見的存儲(chǔ)介質(zhì)是閃存;具體而言,閃存是保留信息而不利用恒定電源的非易失性形式 的存儲(chǔ)器。這種類型的存儲(chǔ)器常常用于各種消費(fèi)電子產(chǎn)品中,如存儲(chǔ)器卡、通用串行總線 (USB)、閃速驅(qū)動(dòng)器、個(gè)人數(shù)據(jù)助理(PDA)、數(shù)字音頻播放器、數(shù)碼相機(jī)、移動(dòng)電話等等。另一種常見類型的非易失性存儲(chǔ)介質(zhì)是磁盤,磁盤使信息能根據(jù)磁化模式來記 錄。類似于其他存儲(chǔ)介質(zhì),磁盤能夠以各種方式來配置(例如,磁阻隨機(jī)存取存儲(chǔ)器)以及 用于許多不同應(yīng)用。這種類型的存儲(chǔ)設(shè)備通常與數(shù)據(jù)庫(kù)和模擬記錄結(jié)合起來使用。同樣, 還存在易失性形式的存儲(chǔ),該存儲(chǔ)提供也可以伴隨有特定缺點(diǎn)的某些優(yōu)點(diǎn)。例如,易失性介 質(zhì)的檢索時(shí)間一般比非易失性介質(zhì)的檢索時(shí)間更快,并且由于明確建立的標(biāo)準(zhǔn),許多操作 具有提高的統(tǒng)一性。此外,當(dāng)今應(yīng)用程序在不同層上、在不同服務(wù)邊界中,以及在不同平臺(tái)(例如,服 務(wù)器、臺(tái)式機(jī)、設(shè)備)上運(yùn)行。例如,在典型的web應(yīng)用程序中,許多應(yīng)用程序駐留在支持大 量用戶的服務(wù)器上;然而,應(yīng)用程序的某些客戶機(jī)組件可以在臺(tái)式機(jī)、移動(dòng)設(shè)備以及web瀏 覽器等上運(yùn)行。此外,連接的進(jìn)步和便宜的存儲(chǔ)與軟件管理的復(fù)雜性相結(jié)合促進(jìn)了在線服 務(wù)和軟件即服務(wù)。在這樣的服務(wù)模型中,應(yīng)用程序(和相關(guān)聯(lián)的數(shù)據(jù))通常被主存在中央 數(shù)據(jù)中心(有時(shí)也稱為“云”)中,并可通過web訪問和共享。分布式應(yīng)用程序要求支持大量用戶、高性能、吞吐量和響應(yīng)時(shí)間。這樣的服務(wù)方向 也要求服務(wù)成本低,從而要求低成本的可伸縮性和性能。實(shí)現(xiàn)存儲(chǔ)系統(tǒng)的另一挑戰(zhàn)是對(duì)數(shù)據(jù)和應(yīng)用程序的分布和不均勻性的支持。應(yīng)用程 序正在從可以是本地的,聯(lián)合的,或基于云的源創(chuàng)作(例如,混搭)數(shù)據(jù)和業(yè)務(wù)邏輯。復(fù)合 應(yīng)用程序需要以最適合該應(yīng)用程序的形式形成聚集數(shù)據(jù)。數(shù)據(jù)和邏輯共享也是復(fù)合應(yīng)用程 序中的重要要求。如前面所說明的,數(shù)據(jù)和應(yīng)用程序可以駐留在具有不同語義和訪問模式的不同層 上。例如,后端服務(wù)器/群集或云中的數(shù)據(jù)往往是權(quán)威性的;導(dǎo)線上的數(shù)據(jù)是面向消息的; 中層中的數(shù)據(jù)是出于性能考慮的高速緩存數(shù)據(jù)或者應(yīng)用程序會(huì)話數(shù)據(jù);設(shè)備上的數(shù)據(jù)可以 是本地?cái)?shù)據(jù)或從后端源高速緩存的數(shù)據(jù)。隨著存儲(chǔ)器成本的不斷下降,可以在臺(tái)式機(jī)和服 務(wù)器機(jī)器上配置相當(dāng)大的高速緩存。隨著64位硬件的成熟,對(duì)于客戶機(jī)和服務(wù)器機(jī)器,64位CPU正在成為主流。真正的64位體系結(jié)構(gòu)支持64位CPU,數(shù)據(jù)或地址總線,虛擬可尋址 性,并顯著地增加存儲(chǔ)器極限(至字節(jié))。操作系統(tǒng)(例如,Windows,Linux)也被升級(jí),以 支持并利用64位地址空間和大存儲(chǔ)器。例如,臺(tái)式機(jī)可以配置有16GBRAM,而服務(wù)器可以配 置有高達(dá)2TB的RAM。較大的存儲(chǔ)器高速緩存允許數(shù)據(jù)靠近應(yīng)用程序,從而給應(yīng)用程序提 供顯著的性能好處。另外,在其中幾百個(gè)GB的存儲(chǔ)是普通的世界中,在存儲(chǔ)器(大高速緩 存)中處理大多數(shù)數(shù)據(jù)以及容易地從表轉(zhuǎn)移到樹到對(duì)象圖是用于下一代應(yīng)用程序的程序 員生產(chǎn)率的關(guān)鍵。概述以下提出了簡(jiǎn)化概述以便提供對(duì)在此描述的某些方面的基本理解。此小結(jié)不是所 要求保護(hù)的主題的詳盡的概述。它既不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵或重要的要 素,也不描繪其范圍。其唯一的目的是以簡(jiǎn)化形式呈現(xiàn)一些概念,作為稍后呈現(xiàn)的更詳細(xì)描 述的序言。本發(fā)明允許將多個(gè)計(jì)算機(jī)的存儲(chǔ)器容量聚集成單個(gè)統(tǒng)一的高速緩存中,該高速緩 存可以經(jīng)由分層安排伸縮(例如,動(dòng)態(tài)伸縮)到多個(gè)機(jī)器。這樣的分層安排可以高速緩存 任何可串行化的公共語言運(yùn)行時(shí)(CLR)對(duì)象,并通過簡(jiǎn)單的高速緩存應(yīng)用程序編程接口 (API)來提供訪問。該分層安排包括能夠以模塊化的方式實(shí)現(xiàn)的數(shù)據(jù)管理器組件、對(duì)象管理 器組件和分布式對(duì)象管理器組件。一方面,數(shù)據(jù)管理器組件提供基本數(shù)據(jù)功能(例如,散列 函數(shù)),而對(duì)象管理器組件在其上實(shí)現(xiàn)包括高速緩存對(duì)象的對(duì)象立面-而分布式對(duì)象管理 器在分布式高速緩存中提供數(shù)據(jù)分布。由此,對(duì)象管理器組件可以將區(qū)域映射到容器,并管 理數(shù)據(jù)驅(qū)逐閾值,并為高速緩存的數(shù)據(jù)提供策略管理。這樣的區(qū)域可以表示高速緩存容器, 這些高速緩存容器通常保證放置/插入在容器中的對(duì)象的共同位置(例如,同一節(jié)點(diǎn)中的 對(duì)象的共同位置)。另外,對(duì)象管理器組件可以為分布式高速緩存的各個(gè)區(qū)域或?qū)ο笠l(fā)通 知(例如,由于對(duì)高速緩存的數(shù)據(jù)作出的變更)。同樣,分布式對(duì)象管理器組件可以將請(qǐng)求 分派到與分布式高速緩存的不同區(qū)域相關(guān)聯(lián)的各個(gè)節(jié)點(diǎn)。此外,對(duì)于給定請(qǐng)求,這樣的分布 式對(duì)象管理器與分布式高速緩存的分區(qū)地圖接口 ;并方便將分布式環(huán)境中的聚集的高速緩 存抽象到單個(gè)統(tǒng)一的高速緩存。一方面,分布式對(duì)象管理器組件位于對(duì)象管理器組件之上, 而對(duì)象管理器組件本身位于數(shù)據(jù)管理器組件之上。此外,可以提供與ASP. NET的緊密集成, 以允許在高速緩存中高速緩存ASP. NET會(huì)話數(shù)據(jù),而不必將這些數(shù)據(jù)寫入到源數(shù)據(jù)庫(kù)。這提供可以容易地適應(yīng)用戶需求的可插入功能(例如,基于用戶要求來將數(shù)據(jù)管 理器組件替換為另一種類型。)同樣,可以用另一對(duì)象管理器組件來替換對(duì)象管理器組件, 其中通過在整個(gè)棧中的回調(diào)期間啟用具有保持鎖的回調(diào)機(jī)制來允許在分層安排中插入不 同模型。在一相關(guān)方面,本發(fā)明的分層安排提供方便不同層和通信襯底(例如,TCP/IP)上 的操作的模塊化安排,并且該模塊化安排可以用兩種拓?fù)淠P蛠韺?shí)現(xiàn),即實(shí)現(xiàn)為獨(dú)立分離 層模型或嵌入式應(yīng)用程序模型。在獨(dú)立并且分離的層模型中,高速緩存層本身充當(dāng)獨(dú)立分 離層(可以位于應(yīng)用程序服務(wù)器和數(shù)據(jù)服務(wù)器之間)。例如,在這樣的配置中,分布式高速 緩存作為由Windows激活服務(wù)(WAS)或者窗口服務(wù)主存的服務(wù)來運(yùn)行,并與應(yīng)用程序分開 運(yùn)行。應(yīng)用程序可以采用由分布式高速緩存提供的客戶機(jī)占位程序來交談,或者通過直接 到服務(wù)中的代表性狀態(tài)傳輸(REST)API。
或者,在嵌入式應(yīng)用程序模型中,高速緩存可以與應(yīng)用程序本身嵌入在一起(例 如,將應(yīng)用程序連接在一起以形成群集一如將高速緩存嵌入在ASP. net實(shí)例中以形成ASP. net機(jī)器的群集,其中在將項(xiàng)目存儲(chǔ)在本地高速緩存中后,可以從其他機(jī)器查看該項(xiàng)目。) 這樣,還可以允許從功能觀點(diǎn)對(duì)對(duì)象進(jìn)行標(biāo)記和語言集成查詢(LINQ)查詢。然后,LINQ查 詢可以在存儲(chǔ)的對(duì)象上本機(jī)地運(yùn)行;并且(可以嵌入在.Net應(yīng)用程序中)。為實(shí)現(xiàn)上述及相關(guān)目的,在此結(jié)合以下描述和附圖描述了所要求保護(hù)的主題的某 些說明性方面。這些方面指示可實(shí)踐本主題的各種方式,它們均落在所要求保護(hù)的主題的 范圍之內(nèi)。當(dāng)結(jié)合附圖閱讀以下詳細(xì)描述時(shí),本發(fā)明的其他優(yōu)點(diǎn)和新穎特征將變得顯而易 見。附圖簡(jiǎn)述
圖1示出了根據(jù)本發(fā)明的一方面的示例性分層安排。圖2示出了根據(jù)本發(fā)明的一示例性方面的涉及獨(dú)立分離層模型實(shí)現(xiàn)的分層安排 的另一拓?fù)淠P?。圖3示出了涉及嵌入式應(yīng)用程序模型的分層安排的拓?fù)淠P汀D4示出了根據(jù)本發(fā)明的一特定方面的包括部署在多個(gè)機(jī)器上的運(yùn)行時(shí)環(huán)境的 分布式高速緩存。圖5示出了根據(jù)本發(fā)明的一方面的分布高速緩存的特定方法。圖6示出了根據(jù)本發(fā)明的一方面的實(shí)現(xiàn)用于分布式高速緩存的分層安排的另一 種方法。圖7示出了根據(jù)另一方面的統(tǒng)一高速緩存視圖的示例性圖示。圖8示出了根據(jù)本發(fā)明的一方面的可以用來方便推斷和/或確定何時(shí)、在哪里,如 何在分布式環(huán)境中高速緩存數(shù)據(jù)的人工智能(Al)組件。圖9示出了用于實(shí)現(xiàn)本發(fā)明的各方面的示例性環(huán)境。圖10是根據(jù)本發(fā)明的一方面的可以用于分布高速緩存的示例計(jì)算環(huán)境的示意性 框圖。詳細(xì)描述現(xiàn)在將參考附圖描述本發(fā)明的各方面,全部附圖中相同的標(biāo)號(hào)指的是相同或相應(yīng) 的元素。然而應(yīng)該了解,附圖及其相關(guān)詳細(xì)描述不旨在將所要求保護(hù)的主題限于所公開的 具體形式。相反,其意圖是覆蓋落在所要求保護(hù)的主題的精神和范圍內(nèi)的所有修改、等效和 替換方案。圖1示出了根據(jù)本發(fā)明的一方面的可以將多個(gè)計(jì)算機(jī)的存儲(chǔ)器容量聚集成單個(gè) 統(tǒng)一的高速緩存的示例性分層安排。這樣的分層安排100提供可以針對(duì)諸如TCP/IP之類 的不同類型的通信層定制的可伸縮系統(tǒng),以及可以為容易地適應(yīng)用戶需求而進(jìn)一步啟用的 可插入功能。實(shí)現(xiàn)分層安排100的分布式高速緩存可以通過將附加計(jì)算機(jī)作為節(jié)點(diǎn)添加到 機(jī)器群集來隨著與其相關(guān)聯(lián)的應(yīng)用程序的增長(zhǎng)動(dòng)態(tài)地伸縮其本身。如圖1所示,在高速緩 存節(jié)點(diǎn)131,133(1到n,n是整數(shù))上,包括數(shù)據(jù)管理器組件110、對(duì)象管理器組件112和分 布式對(duì)象管理器組件114的分層安排100—以模塊化的方式實(shí)現(xiàn)的設(shè)置一其中分布式對(duì)象 管理器組件114位于對(duì)象管理器組件112之上,而對(duì)象管理器組件112本身位于數(shù)據(jù)管理 器組件110之上。數(shù)據(jù)管理器組件110提供基本數(shù)據(jù)功能(例如,散列函數(shù)),而對(duì)象管理器組件112在其上實(shí)現(xiàn)包括高速緩存對(duì)象的對(duì)象立面,且分布式對(duì)象管理器組件114提供 分布。由此,對(duì)象管理器組件112和數(shù)據(jù)管理器組件110可以充當(dāng)本地實(shí)體,其中分布式對(duì) 象管理器組件114執(zhí)行分布。此外,群集襯底可以在構(gòu)成單個(gè)統(tǒng)一高速緩存的多個(gè)節(jié)點(diǎn)之 間建立群集協(xié)議。例如,當(dāng)一個(gè)節(jié)點(diǎn)將加入或離開群集時(shí),管理加入或離開群集的所需的操 作,其中分布式組件可用性襯底可以使用這樣的信息來管理操作(例如,監(jiān)視節(jié)點(diǎn)的健康 狀況,管理節(jié)點(diǎn)的生命周期,在另一機(jī)器上創(chuàng)建主節(jié)點(diǎn))。另外,對(duì)于每一個(gè)節(jié)點(diǎn),基于用戶 需求,系統(tǒng)要求等,形成分層安排的每一個(gè)組件都可以是可插入的。如前面所說明的,數(shù)據(jù)管理器組件110(例如,存儲(chǔ)器中)提供諸如散列表、 Btree (二叉樹)之類的基本高性能數(shù)據(jù)結(jié)構(gòu)。由于這樣的數(shù)據(jù)管理器110是受存儲(chǔ)器限制 的,并且本發(fā)明的分布式高速緩存的所有操作都是原子的,因此它通??梢詫?shí)現(xiàn)高度并發(fā) 散列表。這進(jìn)一步促進(jìn)了創(chuàng)建用于提供容器和對(duì)容器的索引的基礎(chǔ)結(jié)構(gòu)。另外,它提供了 對(duì)這些散列結(jié)構(gòu)的簡(jiǎn)單驅(qū)逐和期滿??梢岳斫猓捎谟煞謱影才?00所提供的可插入功能, 用戶可以插入針對(duì)用戶要求定制的不同類型的數(shù)據(jù)管理器,諸如事務(wù)數(shù)據(jù)管理器或盤分頁 數(shù)據(jù)管理器等等。同樣,對(duì)象管理器組件112提供對(duì)象抽象,并通過使用由數(shù)據(jù)管理器提供 的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)已命名的高速緩存和區(qū)域的概念。類似地,分布式對(duì)象管理器組件114使用本地對(duì)象管理器并與分布式組件111集 成,以提供分布式高速緩存的抽象。本發(fā)明的分布式高速緩存的核心是分布式組件/可用 性襯底111,其提供傳輸和數(shù)據(jù)一致性操作以使系統(tǒng)變得可伸縮且可用。對(duì)象分布組件可任 選地被實(shí)現(xiàn)為客戶機(jī)層的一部分,以方便將請(qǐng)求分派(例如,直接)到與單個(gè)統(tǒng)一高速緩存 相關(guān)聯(lián)的節(jié)點(diǎn)。在一特定方面,分布式對(duì)象管理器組件114還可以包括分派管理器組件117和分 布式管理器組件119。分派管理器組件117還可以查找路由表,以將請(qǐng)求分派到作為可動(dòng) 態(tài)伸縮分布式高速緩存的一部分的主節(jié)點(diǎn)(例如,一個(gè)區(qū)域位于那里)。此外,這樣的分派 管理器組件117也可以存在于客戶機(jī)中,以使得客戶機(jī)可以將請(qǐng)求直接分派到主節(jié)點(diǎn)。例 如,接收節(jié)點(diǎn)上的分布式對(duì)象管理器111可以與分區(qū)圖進(jìn)行交互,以檢查節(jié)點(diǎn)是否的確被 指定為作為與分布式高速緩存相關(guān)聯(lián)的多個(gè)節(jié)點(diǎn)的一部分的主節(jié)點(diǎn),并調(diào)用對(duì)象管理器組 件114來執(zhí)行該操作。在寫操作的情況下,這樣的分布式對(duì)象管理器組件114也可以與復(fù) 制器進(jìn)行通信,以將數(shù)據(jù)復(fù)制到副節(jié)點(diǎn)。它也可以與故障轉(zhuǎn)移管理器系統(tǒng)(未示出)進(jìn)行 交互,以克隆區(qū)域以便在可能的故障之后的重新配置過程期間創(chuàng)建新的副或主節(jié)點(diǎn)。對(duì)象管理器組件112還可以包括跟蹤對(duì)區(qū)域和對(duì)象的改變并將通知中繼到監(jiān)聽 那些事件的代表的通知管理組件123。此外,應(yīng)用程序也可以注冊(cè)代表以便在可以不同于對(duì) 象駐留在其上的主節(jié)點(diǎn)的任何節(jié)點(diǎn)上接收通知。分布式對(duì)象管理器組件114還可以按分布 式方式管理通知的傳播,包括當(dāng)主節(jié)點(diǎn)發(fā)生故障時(shí)為這樣的通知提供高可用性。例如,可以 通過在應(yīng)用程序在其上注冊(cè)代表的節(jié)點(diǎn)上維護(hù)按代表id索引的本地查找表,來對(duì)此進(jìn)行 處理。存儲(chǔ)對(duì)象的主節(jié)點(diǎn)維護(hù)代表id和始發(fā)節(jié)點(diǎn)信息。當(dāng)這樣的對(duì)象在分布式對(duì)象管理 器組件114中改變時(shí),主節(jié)點(diǎn)可以通知傳遞代表id的所有始發(fā)節(jié)點(diǎn)。類似地,與接收者相關(guān)聯(lián)的分布式對(duì)象管理器組件114可以使用查找表來調(diào)用適 當(dāng)?shù)拇?,由此以分布式方式將變更信息提供給應(yīng)用程序。例如,通知可以是異步的,并且 還可以使用相同的副節(jié)點(diǎn)來進(jìn)行備份。因此,在發(fā)生故障的情況下,副節(jié)點(diǎn)嘗試提供待決通知,其中在主節(jié)點(diǎn)發(fā)生故障期間可以重新發(fā)送通知一因?yàn)樵诎l(fā)生故障之前主節(jié)點(diǎn)可能還沒 有同步關(guān)于所傳遞的通知的信息。由于所有通知都攜帶區(qū)域、密鑰和版本信息,因此應(yīng)用程 序可以使用版本來忽略重復(fù)的通知。
示例一區(qū)域級(jí)回調(diào)elec_cbk);為對(duì)區(qū)域的任何更新調(diào)用的回調(diào)示例一對(duì)象級(jí)回調(diào)public delegate CacheltemRemovedCallbackelec_cbk = new CacheltemRemovedCallback();H向?qū)ο筇砑踊卣{(diào);將調(diào)用eleC_(Ak代表H只要對(duì)象改變而不管對(duì)象存在于哪里catalog. AddC ElectronicsRegion, “ “ key, “ object, elec_cbk);同樣,可用性襯底111向包含與本發(fā)明的分布式高速緩存相關(guān)聯(lián)的存儲(chǔ)組件的系 統(tǒng)提供可伸縮性和可用性。例如,可用性襯底可包括負(fù)載平衡器、故障轉(zhuǎn)移管理器、復(fù)制器 等等。與這樣的可用性襯底111進(jìn)行交互的是通信襯底109,其提供對(duì)節(jié)點(diǎn)的故障檢測(cè)以及 節(jié)點(diǎn)之間的可靠的消息傳遞。此外,通信襯底109提供通信信道和群集管理。只要一新節(jié) 點(diǎn)加入群集或者一節(jié)點(diǎn)死亡或不能響應(yīng)交換的消息(例如,心搏消息)時(shí),這樣的通信襯底 109可以提供回調(diào)。此外,通信襯底109可以提供高效的點(diǎn)對(duì)點(diǎn)和多播傳遞信道,并且還可 以提供實(shí)現(xiàn)復(fù)制協(xié)議所需的可靠的消息傳遞。例如,通信襯底109通過在高速緩存項(xiàng)目中 維護(hù)代表信息并當(dāng)項(xiàng)目被修改時(shí)觸發(fā)通知來支持通知。這樣的組件還基于在區(qū)域或已命名 的高速緩存級(jí)別定義的策略來觸發(fā)驅(qū)逐。圖2和圖3示出了兩種拓?fù)淠P?,即分別為獨(dú)立分離層模型,以及嵌入式應(yīng)用程序 模型。根據(jù)一特定方面,在圖2的獨(dú)立且分離層模型中,高速緩存層220本身充當(dāng)獨(dú)立分離 層(其可以位于應(yīng)用服務(wù)器和數(shù)據(jù)服務(wù)器之間)。例如,在這樣的配置中,分布式高速緩存 作為由WAS或者窗口服務(wù)主存的服務(wù)來運(yùn)行,并與應(yīng)用程序分開運(yùn)行。應(yīng)用程序201,203, 205(1到m,m是整數(shù))可以使用由分布式高速緩存提供的客戶機(jī)占位程序來交談,或者通 過直接到服務(wù)中的代表性狀態(tài)傳輸(REST)API?;蛘?,在嵌入式應(yīng)用程序模型中,高速緩存可以嵌入到應(yīng)用程序本身中,如圖3所 示。這可以通過將應(yīng)用程序310,312,314 (1到k,k是整數(shù))連接在一起以形成群集來發(fā)生; 例如,將高速緩存嵌入在ASP. net實(shí)例中,以形成ASP. net機(jī)器的群集,其中在將一個(gè)項(xiàng)目 存儲(chǔ)在本地高速緩存中后,可以從其他機(jī)器查看該項(xiàng)目。例如,分布式高速緩存運(yùn)行時(shí)dll 與應(yīng)用程序一起編譯,并且應(yīng)用程序充當(dāng)分布式高速緩存運(yùn)行時(shí)環(huán)境的高速緩存主機(jī)。所 有線程池和存儲(chǔ)器來自應(yīng)用程序的容器。在一相關(guān)方面,在一個(gè)或多個(gè)節(jié)點(diǎn)被淹沒(inundate)的情況下,負(fù)載平衡器302 可以動(dòng)態(tài)地將負(fù)載重新分布在群集中。例如,可以重新劃分?jǐn)?shù)據(jù)以將其傳播到具有較少負(fù) 載的節(jié)點(diǎn)。所有這樣的節(jié)點(diǎn)都可以周期性地發(fā)送它們的負(fù)載作為配置元數(shù)據(jù)的一部分。負(fù)
public delegate CacheCallbackelec_cbk = new CacheCallback(myclass. handler);catalog. addCallback(" ElectronicsRegion,"載平衡器302還周期性地查詢配置,以確定哪些節(jié)點(diǎn)過載并需要進(jìn)行平衡。例如,分布負(fù)載 是重新劃分主節(jié)點(diǎn)上的熱數(shù)據(jù)分區(qū),并將其傳播到其副節(jié)點(diǎn)中的一個(gè)(或多個(gè))。這要求改 變配置數(shù)據(jù)(分區(qū)圖)并且沒有數(shù)據(jù)移動(dòng)(因?yàn)楦惫?jié)點(diǎn)已經(jīng)具有數(shù)據(jù))。在其他情況下,可 能需要將數(shù)據(jù)分發(fā)給其他非副節(jié)點(diǎn),因?yàn)楦惫?jié)點(diǎn)本身可能已被加載,且無法處理其他節(jié)點(diǎn)。 在這樣的情況下,副節(jié)點(diǎn)(對(duì)于這些副節(jié)點(diǎn),此節(jié)點(diǎn)是主節(jié)點(diǎn))上的數(shù)據(jù)分區(qū)需要進(jìn)行進(jìn)一 步的負(fù)載平衡;或者可以選擇非副節(jié)點(diǎn)以分布負(fù)載,在這樣的情況下,除改變分區(qū)圖之外, 也將需要移動(dòng)數(shù)據(jù)。圖4示出了包括部署在來自一群集的多個(gè)機(jī)器410、411、412 (1到m,m是整數(shù))上 的運(yùn)行時(shí)環(huán)境的分布式高速緩存400。在每一個(gè)機(jī)器410、411、412上,可以存在也被稱為 “高速緩存主機(jī)”的一個(gè)或多個(gè)運(yùn)行時(shí)環(huán)境。每一個(gè)高速緩存主機(jī)422、423主存一個(gè)或多個(gè) 已命名的高速緩存。已命名的高速緩存可以在分布式高速緩存配置文件中配置。此外,已 命名的高速緩存可以在該群集中的所有機(jī)器或機(jī)器子集中傳播。另外,在每一個(gè)已命名的 高速緩存內(nèi),可以存在一個(gè)或多個(gè)區(qū)域433。這樣的區(qū)域可由分布式高速緩存來隱式地創(chuàng) 建,或可由應(yīng)用程序來顯式地定義。一般而言,區(qū)域433中的所有項(xiàng)目可以被保證位于高速 緩存主機(jī)上的同處。對(duì)于諸如查詢及其他設(shè)置操作之類的操作區(qū)域中的多個(gè)項(xiàng)目的操作, 這可以提高性能。此外,區(qū)域所在的節(jié)點(diǎn)可以被視為該區(qū)域的主節(jié)點(diǎn),其中對(duì)此區(qū)域的訪問 通常將被路由到該區(qū)域的主節(jié)點(diǎn)。如果已命名的高速緩存被配置成具有“備份”以取得高 可用性,則選擇一個(gè)或多個(gè)其他節(jié)點(diǎn)以包含此數(shù)據(jù)的副本。這樣的節(jié)點(diǎn)被稱為該區(qū)域的副 節(jié)點(diǎn)。對(duì)主節(jié)點(diǎn)作出的所有變更也都反映在這些副節(jié)點(diǎn)上。由此,如果一個(gè)區(qū)域的主節(jié)點(diǎn) 發(fā)生故障,則可以使用副節(jié)點(diǎn)來檢索數(shù)據(jù),而不必將日志寫入到盤中。下面是示出已命名的高速緩存和區(qū)域的創(chuàng)建的代碼示例。//CacheFactory (高速緩存工廠)類提供返回高速緩存對(duì)象的方法// ^1JM cachefactory (reads appconf ig) StJ^MCacheFactory fac = new CacheFactory ();H從該工廠獲取已命名的高速緩存Cache catalog = fac. GetCache{“ catalogcache“);Il-------------------------------------------------------ζ/簡(jiǎn)單的Get/Put
catalog. Put (" toy-101, ‘‘ new Toy(" thomas, ‘‘ ·,·))//來自相同或不同的客戶機(jī)Toy toyObj = (Toy)catalog. Get (" toy-101");Il-----------------------------------------------------
Toy toyObj = (Toy)catalog. Get(〃 toyRegion, “ “ toy-101")//基于區(qū)域的Get/Putcatalog· CreateRegion(〃 toyRegion");//toy和toyparts兩者都被放置在相同的區(qū)域中catalog. Put(" toyRegion, ‘‘ “ toy-101, ‘‘ new Toy(.,.));Catalog. Put(“ toyRegion, “ “ toypart-100, “ newToyParts(···))
圖5示出了根據(jù)本發(fā)明的又一方面的分布高速緩存的相關(guān)方法500。雖然該示例 性方法此處被示出并描述為表示各種事件和/或動(dòng)作的一系列框,但本發(fā)明并不受所示出 的這些框的排序的限制。例如,根據(jù)本發(fā)明,除了在此示出的次序之外,某些動(dòng)作或事件可 以按不同的次序發(fā)生和/或與其他動(dòng)作或事件同時(shí)發(fā)生。此外,不是所有示出的框、事件或 動(dòng)作都是實(shí)施根據(jù)本發(fā)明的方法所必需的。此外,將會(huì)認(rèn)識(shí)到根據(jù)本發(fā)明的該示例性方法 和其他方法可以與在此圖示并描述的方法相關(guān)聯(lián)地實(shí)現(xiàn),也可與未示出或描述的其他系統(tǒng) 和裝置相關(guān)聯(lián)地實(shí)現(xiàn)。最初在510處,可以標(biāo)識(shí)對(duì)系統(tǒng)可用的高速緩存,其中這樣的高速緩 存可以經(jīng)由分層安排伸縮至多個(gè)機(jī)器(例如,通過添加新節(jié)點(diǎn)來動(dòng)態(tài)伸縮)。隨后,在520 處,可以將這樣的高速緩存聚集成呈現(xiàn)給用戶的單個(gè)統(tǒng)一高速緩存。在530處,可以將應(yīng)用 程序/數(shù)據(jù)分布在整個(gè)這樣的聚集高速緩存中。接下來,在540處,可以取決于應(yīng)用程序和 /或數(shù)據(jù)的變化的要求來伸縮聚集高速緩存。圖6示出了根據(jù)本發(fā)明的一方面的經(jīng)由分層安排來實(shí)現(xiàn)分布式高速緩存的相關(guān) 方法600。最初,在610處,可以提供分層安排,該分層安排包括數(shù)據(jù)管理器組件、對(duì)象管理 器組件和分布式對(duì)象管理器組件,該社會(huì)資可以按模塊化方式實(shí)現(xiàn);其中分布式對(duì)象管理 器組件位于對(duì)象管理器組件之上,而對(duì)象管理器組件本身位于數(shù)據(jù)管理器組件之上。在620處,數(shù)據(jù)管理器組件提供基本數(shù)據(jù)功能(例如,散列函數(shù))。同樣,在630處, 對(duì)象管理器組件在其上實(shí)現(xiàn)包括高速緩存對(duì)象的對(duì)象立面,其中分布式對(duì)象管理器組件提 供分布。由此,對(duì)象管理器組件和數(shù)據(jù)管理器組件可以充當(dāng)本地實(shí)體,其中在640處,分布 管理器執(zhí)行分布。圖7示出了本發(fā)明的另一示例性方面,該方面示出了對(duì)于分布在各機(jī)器進(jìn)程上的 客戶機(jī)的統(tǒng)一高速緩存視圖720。這樣的系統(tǒng)700為用于所有種類的數(shù)據(jù)的顯式、分布式, 存儲(chǔ)器中應(yīng)用程序高速緩存提供一致性和查詢。這樣的數(shù)據(jù)可以駐留在具有不同語義的不 同的層中(不同的服務(wù)邊界中)。例如,存儲(chǔ)在后端數(shù)據(jù)庫(kù)中的數(shù)據(jù)是權(quán)威性的,并要求高 度數(shù)據(jù)一致性和完整性。通常,對(duì)于任何數(shù)據(jù)實(shí)例,往往存在單個(gè)權(quán)威性源。中層中的由業(yè)務(wù)邏輯操作的大 多數(shù)數(shù)據(jù)往往是權(quán)威性數(shù)據(jù)的副本。這樣的副本適于高速緩存。由此,理解不同類型的數(shù) 據(jù)及其在不同層中的語義定義可能的不同程度的高速緩存。參考數(shù)據(jù)參考數(shù)據(jù)是權(quán)威性數(shù)據(jù)的一個(gè)版本。它或者是原始數(shù)據(jù)的直接副本(版本),或者 從多個(gè)數(shù)據(jù)源聚集并變換。參考數(shù)據(jù)實(shí)際上是不可變的-改變參考數(shù)據(jù)(或?qū)?yīng)的權(quán)威性 數(shù)據(jù))創(chuàng)建參考數(shù)據(jù)的新版本。即,每一個(gè)參考數(shù)據(jù)版本都是唯一的。參考數(shù)據(jù)是供高速 緩存的候選者;因?yàn)閰⒖紨?shù)據(jù)不會(huì)變化,所以它可以在多個(gè)應(yīng)用程序(用戶)之間共享,從 而增大規(guī)模和性能。例如,可以考慮跨多個(gè)后端應(yīng)用程序和數(shù)據(jù)源聚集產(chǎn)品信息的產(chǎn)品目 錄應(yīng)用程序。對(duì)目錄數(shù)據(jù)的最常見的操作是讀取(或?yàn)g覽);典型的目錄瀏覽操作在大量 產(chǎn)品數(shù)據(jù)上迭代,過濾這些數(shù)據(jù),個(gè)性化這些數(shù)據(jù),并且然后向用戶呈現(xiàn)所選數(shù)據(jù)?;诿?鑰和基于查詢的訪問是一種常見形式操作。高速緩存是對(duì)于目錄訪問的關(guān)鍵要求。如果沒 有被高速緩存,則針對(duì)這樣的聚集目錄的操作要求操作被分解成對(duì)底層源的操作,調(diào)用底 層操作,收集響應(yīng),并將結(jié)果聚集成內(nèi)粘響應(yīng)。對(duì)于每一個(gè)目錄操作,訪問大型后端數(shù)據(jù)集 可能是非常昂貴的,并會(huì)顯著地影響應(yīng)用程序的響應(yīng)時(shí)間和吞吐量。高速緩存更接近目錄應(yīng)用程序的后端產(chǎn)品數(shù)據(jù)會(huì)顯著地提高應(yīng)用程序的性能和可伸縮性。類似地,聚集的航班 時(shí)刻表是參考數(shù)據(jù)的另一示例。參考數(shù)據(jù)可以從其源,通常以經(jīng)配置的間隔周期性地刷新, 或當(dāng)權(quán)威性數(shù)據(jù)源變化時(shí)刷新。對(duì)參考數(shù)據(jù)的訪問,盡管共享,但主要是讀取。常常執(zhí)行本 地更新以便進(jìn)行標(biāo)記(以更好地組織數(shù)據(jù))。為支持大規(guī)模,可以在群集中的不同機(jī)器上的 多個(gè)高速緩存中復(fù)制參考數(shù)據(jù)。如上文所提及的,參考數(shù)據(jù)可以被容易地高速緩存,并可以 提供高可伸縮性。活動(dòng)數(shù)據(jù)活動(dòng)數(shù)據(jù)是由當(dāng)前正在執(zhí)行的活動(dòng)作為商業(yè)交易的一部分來生成。這樣的數(shù)據(jù)作 為商業(yè)交易的一部分始發(fā),并最終在商業(yè)交易關(guān)閉時(shí),它被作為歷史(或日志)信息退回到 后端數(shù)據(jù)源。例如,可以考慮在線購(gòu)物應(yīng)用程序中的購(gòu)物車數(shù)據(jù)。對(duì)于每一個(gè)在線購(gòu)物會(huì) 話,存在有一個(gè)獨(dú)占購(gòu)物車。在購(gòu)物會(huì)話期間,購(gòu)物車被高速緩存并利用購(gòu)買的產(chǎn)品來更 新,其中該購(gòu)物車只對(duì)該購(gòu)物交易可見和可訪問。在結(jié)賬時(shí),一旦進(jìn)行支付,購(gòu)物車就被退 回(從高速緩存)到后端應(yīng)用程序以供進(jìn)一步處理。一旦由后端應(yīng)用程序處理商業(yè)交易, 則出于審計(jì)(和歷史)目的來記錄購(gòu)物車信息。當(dāng)購(gòu)物會(huì)話是活動(dòng)的時(shí)候,訪問購(gòu)物車以便讀取和寫入;然而,它不被共享?;顒?dòng) 數(shù)據(jù)的這種獨(dú)占訪問性質(zhì)使其適于分布式高速緩存。為支持購(gòu)物應(yīng)用程序的較大可伸縮 性,購(gòu)物車可以分布在高速緩存的群集中。由于不共享購(gòu)物車,一次你可以跨分布式高速緩 存劃分購(gòu)物車的集合。通過動(dòng)態(tài)地配置分布式高速緩存,可以控制伸縮程度。資源數(shù)據(jù)參考(共享讀取)和活動(dòng)(獨(dú)占寫入)數(shù)據(jù)兩者都可以被高速緩存??梢岳斫猓?非所有應(yīng)用程序數(shù)據(jù)都落入這兩個(gè)類別。存在由大量事務(wù)共享,并發(fā)讀取和寫入并訪問的 數(shù)據(jù)。例如,考慮庫(kù)存管理應(yīng)用程序,商品的庫(kù)存具有對(duì)商品和當(dāng)前數(shù)量的描述。數(shù)量信息 是權(quán)威性的,易失性的,并由大量用戶訪問并發(fā)訪問以便讀取/寫入。這樣的數(shù)據(jù)被稱為資 源數(shù)據(jù);業(yè)務(wù)邏輯(例如,訂單應(yīng)用程序邏輯)靠近資源數(shù)據(jù)(例如,數(shù)量數(shù)據(jù))運(yùn)行。資 源數(shù)據(jù)通常存儲(chǔ)在后端數(shù)據(jù)存儲(chǔ)中。然而,出于性能原因,它被高速緩存在應(yīng)用程序?qū)又小?盡管將數(shù)量數(shù)據(jù)高速緩存在單個(gè)機(jī)器上的存儲(chǔ)器中可以提供性能增強(qiáng),但當(dāng)訂單量比較高 時(shí),單個(gè)高速緩存不能提供可用性或伸縮。因此,數(shù)量數(shù)據(jù)可以跨分布式高速緩存在多個(gè)高 速緩存中復(fù)制。圖8示出了可以用來方便推斷和/或確定何時(shí)、在哪里,如何伸縮分布式高速緩存 和/或在它們之間分發(fā)應(yīng)用程序數(shù)據(jù)的人工智能(Al)組件830。例如,這樣的人工智能組 件830可以利用分布式高速緩存管理器來提供附加分析,以改善系統(tǒng)的分布和/或伸縮。如 此處所使用的,術(shù)語“推斷”通常指的是根據(jù)經(jīng)由事件和/或數(shù)據(jù)捕獲的一組觀察結(jié)果來推 出或推斷系統(tǒng)、環(huán)境、和/或用戶狀態(tài)的過程??梢允褂猛茢鄟碜R(shí)別特定上下文或操作,也 可以生成,例如狀態(tài)上的概率分布。推斷可以是概率性的,即,基于對(duì)數(shù)據(jù)和事件的考慮計(jì) 算所關(guān)注狀態(tài)的概率分布。推斷也可以是指用于從一組事件和/或數(shù)據(jù)構(gòu)成較高級(jí)別的事 件的技術(shù)。這樣的推斷導(dǎo)致從一組觀察到的事件和/或存儲(chǔ)的事件數(shù)據(jù)構(gòu)建新的事件或操 作,不管事件在時(shí)間上是否緊密相關(guān),以及事件和數(shù)據(jù)是來自一個(gè)還是多個(gè)事件和數(shù)據(jù)源。AI組件830可采用如上文中結(jié)合促進(jìn)此處所描述的本發(fā)明的各方面描述的各種 合適的基于AI的方案中的任一種。例如,可以經(jīng)由自動(dòng)分類系統(tǒng)和過程來促進(jìn)用于顯式或隱式地學(xué)習(xí)對(duì)怎樣的或什么候選者感興趣過程。分類可采用基于概率和/或基于統(tǒng)計(jì)的分 析(例如,分解成分析效用和成本)來預(yù)測(cè)或推斷用戶期望自動(dòng)執(zhí)行的動(dòng)作。例如,可采用 支持向量機(jī)(SVM)分類器??刹捎闷渌诸惙椒?,包括貝葉斯網(wǎng)絡(luò)、決策樹、以及提供不同 獨(dú)立性模式的概率分類模型。如這里所使用的分類還包括被用來開發(fā)優(yōu)先級(jí)模型的統(tǒng)計(jì)回 歸。如從本說明書中可以容易地理解的,本發(fā)明可以使用顯式訓(xùn)練(例如,經(jīng)由一般 訓(xùn)練數(shù)據(jù))以及隱式訓(xùn)練(例如,經(jīng)由觀察用戶行為、接收外來信息)的分類器,以使得使 用分類器來根據(jù)預(yù)定準(zhǔn)則自動(dòng)確定向問題返回哪一個(gè)答案。例如,對(duì)于公知的SVM,SVM經(jīng) 由分類器構(gòu)造器和特征選擇模塊中的學(xué)習(xí)或訓(xùn)練階段來配置。分類器是將輸入屬性矢量χ =(xl,x2,x3,x4,xn)映射到該輸入屬于一個(gè)類的置信度的函數(shù),即f (χ)=置信度(類)。 此外,還可采用基于規(guī)則的機(jī)制來進(jìn)行路由管理器和相關(guān)聯(lián)的路由層的交互(例如,負(fù)載 平衡、存儲(chǔ)器分配等)。在此使用詞語“示例性”意指用作示例、實(shí)例或說明。在此被描述為“示例性”的 任何方面或設(shè)計(jì)并不一定要被解釋為相比其他方面或設(shè)計(jì)更優(yōu)選或有利。類似地,在此提 供的示例只是出于清楚和理解的目的并且并不意味著以任何方式限制本發(fā)明或其部分???以理解,本可呈現(xiàn)多個(gè)其他或替換示例,但已出于簡(jiǎn)明的目的而省略了。此外,本發(fā)明的全部或部分可以使用產(chǎn)生控制計(jì)算機(jī)以實(shí)現(xiàn)所公開的發(fā)明的軟 件、固件、硬件或其任意組合的標(biāo)準(zhǔn)編程和/或工程技術(shù)而被實(shí)現(xiàn)為方法、裝置或制品。例 如,計(jì)算機(jī)可讀介質(zhì)可以包括但不限于磁存儲(chǔ)設(shè)備(例如,硬盤、軟盤、磁帶……)、光盤(例 如,緊致盤(⑶)、數(shù)字多功能盤(DVD)……)、智能卡和閃存設(shè)備(例如,卡、棒、鑰匙驅(qū)動(dòng) 器……)。另外,應(yīng)該理解,可以使用載波攜帶計(jì)算機(jī)可讀的電子數(shù)據(jù),如那些在傳輸和接收 電子郵件或在訪問諸如因特網(wǎng)或局域網(wǎng)(LAN)之類的網(wǎng)絡(luò)時(shí)所使用的。當(dāng)然,本領(lǐng)域的技 術(shù)人員將會(huì)認(rèn)識(shí)到,在不背離所要求保護(hù)的主題的范圍或精神的前提下可以對(duì)這一配置進(jìn) 行許多修改。此外,本發(fā)明的全部或部分可以使用產(chǎn)生控制計(jì)算機(jī)以實(shí)現(xiàn)所公開的發(fā)明的軟 件、固件、硬件或其任意組合的標(biāo)準(zhǔn)編程和/或工程技術(shù)而被實(shí)現(xiàn)為方法、裝置或制品。例 如,計(jì)算機(jī)可讀介質(zhì)可以包括但不限于磁存儲(chǔ)設(shè)備(例如,硬盤、軟盤、磁帶……)、光盤(例 如,緊致盤(⑶)、數(shù)字多功能盤(DVD)……)、智能卡和閃存設(shè)備(例如,卡、棒、鑰匙驅(qū)動(dòng) 器……)。另外,應(yīng)該理解,可以使用載波攜帶計(jì)算機(jī)可讀的電子數(shù)據(jù),如那些在傳輸和接收 電子郵件或在訪問諸如因特網(wǎng)或局域網(wǎng)(LAN)之類的網(wǎng)絡(luò)時(shí)所使用的。當(dāng)然,本領(lǐng)域的技 術(shù)人員將會(huì)認(rèn)識(shí)到,在不背離所要求保護(hù)的主題的范圍或精神的前提下可以對(duì)這一配置進(jìn) 行許多修改。為了對(duì)所公開的主題的各個(gè)方面提供上下文,圖9和10以及以下討論旨在提供對(duì) 其中可實(shí)現(xiàn)所公開的主題的各方面的合適的環(huán)境的簡(jiǎn)要、概括描述。盡管以上在運(yùn)行在一 臺(tái)和/或多臺(tái)計(jì)算機(jī)上的計(jì)算機(jī)程序的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述了本主題, 但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,本發(fā)明也可結(jié)合其他程序模塊實(shí)現(xiàn)。如在本申請(qǐng)中所使用的,術(shù)語“組件”、“系統(tǒng)”、“引擎”旨在表示計(jì)算機(jī)相關(guān)的實(shí) 體,其可以是硬件、硬件和軟件的組合、軟件、或者執(zhí)行中的軟件。例如,組件可以是但不限 于在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行代碼、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說明,運(yùn)行在服務(wù)器上的應(yīng)用程序和服務(wù)器都可以是組件。一個(gè)或多個(gè)組件可以駐留在 進(jìn)程和/或執(zhí)行的線程內(nèi),且組件可以位于一臺(tái)計(jì)算機(jī)上和/或分布在兩臺(tái)或更多的計(jì)算 機(jī)之間。一般而言,程序模塊包括執(zhí)行特定任務(wù)和/或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程 序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。而且,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明的方法可用其他計(jì) 算機(jī)系統(tǒng)配置實(shí)現(xiàn),包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算設(shè)備、大型計(jì)算機(jī)、以 及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備(例如,個(gè)人數(shù)字助理(PDA)、電話、手表…)、基于微處理器 或可編程消費(fèi)產(chǎn)品或工業(yè)電子設(shè)備等。所示各方面也可在任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程 處理設(shè)備中執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。然而,即使不是本發(fā)明的全部方面,至少也有本 發(fā)明的部分方面可以在獨(dú)立計(jì)算機(jī)上實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地 和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。參考圖9,描述了用于實(shí)現(xiàn)本發(fā)明的各方面的示例性環(huán)境910,其包括計(jì)算機(jī)912。 計(jì)算機(jī)912包括處理單元914、系統(tǒng)存儲(chǔ)器916以及系統(tǒng)總線918。系統(tǒng)總線918將系統(tǒng)組 件,包括,但不僅限于,系統(tǒng)存儲(chǔ)器916耦合到處理單元914。處理單元914可以是各種處理 器中的任何一種。也可以使用雙微處理器及其他多處理器體系結(jié)構(gòu)作為處理單元914。系統(tǒng)總線918可以是若干類型的總線結(jié)構(gòu)中的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器 控制器、外圍總線或外部總線、和/或使用各種可用的總線體系結(jié)構(gòu)中的任一種的局部總 線,可用的總線體系結(jié)構(gòu)包括,但不限于,11位總線、工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)、微通道體系 結(jié)構(gòu)(MCA)、擴(kuò)展ISA(EISA)、智能驅(qū)動(dòng)器電子接口(IDE)、VESA局部總線(VLB)、外圍部件 互連(PCI)、通用串行總線(USB)、高級(jí)圖形接口(AGP)、個(gè)人計(jì)算機(jī)存儲(chǔ)卡國(guó)際協(xié)會(huì)總線 (PCMCIA)以及小型計(jì)算機(jī)系統(tǒng)接口(SCSI)。系統(tǒng)存儲(chǔ)器916包括易失性存儲(chǔ)器920和非易失性存儲(chǔ)器922。基本輸入/輸出 系統(tǒng)¢10 通常存儲(chǔ)在非易失性存儲(chǔ)器922中,包含例如在啟動(dòng)過程中幫助在計(jì)算機(jī)912 內(nèi)的元件之間傳輸信息的基本例程。作為說明而非限制,非易失性存儲(chǔ)器922可以包括只 讀存儲(chǔ)器(ROM)、可編程ROM(PROM)、電可編程ROM(EPROM)、電可擦除ROM(EEPROM)或者閃 存。易失性存儲(chǔ)器920包括充當(dāng)外部高速緩沖存儲(chǔ)器的隨機(jī)存取存儲(chǔ)器(RAM)。作為示例 而非限制,RAM以多種形式可用,諸如同步RAM(SRAM)、動(dòng)態(tài)RAM(DRAM)、同步DRAM(SDRAM)、 雙倍數(shù)據(jù)速率SDRAM (DDR SDRAM)、增強(qiáng)型SDRAM (ESDRAM)、同步鏈路DRAM (SLDRAM)以及直 接存儲(chǔ)器總線(Rambus)RAM(DRRAM)。計(jì)算機(jī)912還包括可移動(dòng)的/不可移動(dòng)的,易失性/非易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)。 圖9示出了盤存儲(chǔ)924,其中這一盤存儲(chǔ)擬4包括但不限于諸如磁盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、磁 帶驅(qū)動(dòng)器、Jaz驅(qū)動(dòng)器、Zip驅(qū)動(dòng)器、LS-60驅(qū)動(dòng)器、閃存卡、或者記憶棒等設(shè)備。另外,盤存 儲(chǔ)擬4還可包括存儲(chǔ)介質(zhì),分開地或與其他存儲(chǔ)介質(zhì)相結(jié)合,包括,但不僅限于,諸如光盤 ROM設(shè)備之類的光盤驅(qū)動(dòng)器(⑶-ROM)、⑶可記錄驅(qū)動(dòng)器(⑶-R驅(qū)動(dòng)器)、⑶可重寫驅(qū)動(dòng)器 (⑶-RW驅(qū)動(dòng)器)或數(shù)字多功能盤ROM驅(qū)動(dòng)器(DVD-ROM)。為便于磁盤存儲(chǔ)設(shè)備擬4連接到 系統(tǒng)總線918,通常使用諸如接口擬6之類的可移動(dòng)或不可移動(dòng)接口。應(yīng)該明白,圖9描述了在用戶和在合適的操作環(huán)境910中描述的基本計(jì)算機(jī)資源 之間擔(dān)當(dāng)中介的軟件。這樣的軟件包括操作系統(tǒng)928??梢源鎯?chǔ)在盤存儲(chǔ)擬4上的操作系 統(tǒng)擬8用于控制和分配計(jì)算機(jī)系統(tǒng)912的資源。系統(tǒng)應(yīng)用程序930利用由操作系統(tǒng)擬8通過存儲(chǔ)在系統(tǒng)存儲(chǔ)器916或者存儲(chǔ)在盤存儲(chǔ)擬4上的程序模塊932和程序數(shù)據(jù)934對(duì)資源 的管理。應(yīng)該明白,在此描述的各個(gè)組件可以用各種操作系統(tǒng)或操作系統(tǒng)的組合來實(shí)施。用戶通過輸入設(shè)備936向計(jì)算機(jī)912輸入命令或信息。輸入設(shè)備936包括,但不限 于,諸如鼠標(biāo)、軌跡球、指示筆、觸摸板之類的指示設(shè)備、鍵盤、麥克風(fēng)、游戲桿、游戲操縱桿、 碟形衛(wèi)星天線、掃描儀、TV調(diào)諧器卡、數(shù)碼相機(jī)、數(shù)字?jǐn)z像機(jī)、網(wǎng)絡(luò)攝像頭等等。這些及其他 輸入設(shè)備通過系統(tǒng)總線918經(jīng)由接口端口 938連接到處理單元914。接口端口 938包括,例 如,串行端口、并行端口、游戲端口以及通用串行總線(USB)。輸出設(shè)備940與輸入設(shè)備936 使用一些相同類型的端口。如此,例如,可以使用USB端口來向計(jì)算機(jī)912提供輸入,以及 從計(jì)算機(jī)912向輸出設(shè)備940輸出信息。提供輸出適配器942是為了示出存在如監(jiān)視器、 揚(yáng)聲器、和打印機(jī)以及其他輸出設(shè)備940等需要特殊適配器的一些輸出設(shè)備940。輸出適配 器942包括,作為說明而不是限制,在輸出設(shè)備940和系統(tǒng)總線918之間提供連接裝置的視 頻卡和聲卡。應(yīng)該注意,其他設(shè)備和/或設(shè)備的系統(tǒng)提供諸如遠(yuǎn)程計(jì)算機(jī)944之類的輸入 和輸出兩種功能。計(jì)算機(jī)912可以使用到諸如遠(yuǎn)程計(jì)算機(jī)944之類的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯 連接,在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)944可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、工 作站、基于微處理器的電器、對(duì)等設(shè)備或其他公共網(wǎng)絡(luò)節(jié)點(diǎn)等等,并通常包括通常包括上文 參考計(jì)算機(jī)912所描述的許多或全部元件。為了簡(jiǎn)潔起見,與遠(yuǎn)程計(jì)算機(jī)944 一起,只示出 了存儲(chǔ)器存儲(chǔ)設(shè)備946。遠(yuǎn)程計(jì)算機(jī)944通過網(wǎng)絡(luò)接口 948在邏輯上連接到計(jì)算機(jī)912,然 后,經(jīng)由通信連接950在物理上連接。網(wǎng)絡(luò)接口 948涵蓋諸如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN) 這樣的通信網(wǎng)絡(luò)。LAN技術(shù)包括光纖分布式數(shù)據(jù)接口(FDDI)、銅分布式數(shù)據(jù)接口(CDDI)、以 太網(wǎng)/IEEE 802. 3、令牌環(huán)/IEEE 802. 5等。WAN技術(shù)包括,但不限于,點(diǎn)對(duì)點(diǎn)鏈路、電路交 換網(wǎng),如綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)以及其變體,分組交換網(wǎng)絡(luò)以及數(shù)字用戶線(DSL)。通信連接950是指用來將網(wǎng)絡(luò)接口 948連接到總線918的硬件/軟件。盡管用于 清楚起見通信連接950被示為在計(jì)算機(jī)912內(nèi)部,但是,它也可以位于計(jì)算機(jī)912外部。連 接到網(wǎng)絡(luò)接口 948所需的硬件/軟件包括,只作示例,內(nèi)部和外部技術(shù),如,調(diào)制解調(diào)器,包 括常規(guī)電話分級(jí)調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和DSL調(diào)制解調(diào)器、ISDN適配器以及以太網(wǎng) 網(wǎng)卡。圖10是根據(jù)本發(fā)明的一方面的可用于分布高速緩存的示例計(jì)算環(huán)境1000的示意性 框圖。系統(tǒng)1000包括一個(gè)或多個(gè)客戶機(jī)1010??蛻魴C(jī)1010可以是硬件和/或軟件(例 如,線程、進(jìn)程、計(jì)算設(shè)備)。系統(tǒng)1000還包括一個(gè)或多個(gè)服務(wù)器1030。服務(wù)器1030也可 以是硬件和/或軟件(例如,線程、進(jìn)程、計(jì)算設(shè)備)。服務(wù)器1030可以容納各線程以通過 例如利用在此描述的各組件執(zhí)行轉(zhuǎn)換。在客戶機(jī)1010和服務(wù)器1030之間的一種可能的通 信能夠以適合在兩個(gè)或更多計(jì)算機(jī)進(jìn)程之間傳輸?shù)臄?shù)據(jù)分組的形式進(jìn)行。系統(tǒng)1000包括 通信框架1050,該通信框架1050可以被用來促進(jìn)客戶機(jī)1010和服務(wù)器1030之間的通信。 客戶機(jī)1010可在操作上連接至一個(gè)或多個(gè)客戶機(jī)數(shù)據(jù)存儲(chǔ)1060,客戶機(jī)數(shù)據(jù)存儲(chǔ)可用來 存儲(chǔ)對(duì)客戶機(jī)1010本地的信息。同樣地,服務(wù)器1030可在操作上連接到可以用來存儲(chǔ)對(duì) 服務(wù)器630本地的信息的一個(gè)或多個(gè)服務(wù)器數(shù)據(jù)存儲(chǔ)1040。以上描述的內(nèi)容包括各個(gè)示例性方面。當(dāng)然,出于描繪這些方面的目的而描述每 一個(gè)可以想到的組件或方法的組合是不可能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員應(yīng)該認(rèn)識(shí)到, 許多進(jìn)一步的組合和排列都是可能的。因此,在此描述的各方面旨在包括所有這些屬于所附權(quán)利要求書的精神和范圍內(nèi)的改變、修改和變型。此外,就在說明書或權(quán)利要求書中使用 術(shù)語“包括”而言,這一術(shù)語旨在以與術(shù)語“包含”在被用作權(quán)利要求書中的過渡詞時(shí)所解 釋的相似的方式為包含性的。
權(quán)利要求
1.一種包括以下計(jì)算機(jī)可執(zhí)行組件的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)為與其相關(guān)聯(lián)的應(yīng)用程序提供顯式聚集高速緩存的分層安排(100),所述分層安排包括分布式對(duì)象管理器組件(114),所述分布式對(duì)象管理器組件方便將分布式環(huán)境中的顯 式聚集高速緩存抽象成單個(gè)統(tǒng)一高速緩存;以及對(duì)象管理器組件(112),所述對(duì)象管理器組件管理與存儲(chǔ)在形成所述單個(gè)統(tǒng)一高速緩 存的節(jié)點(diǎn)中的每一個(gè)中的對(duì)象相關(guān)聯(lián)的策略。
2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,還包括為所述對(duì)象提供存儲(chǔ) 數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)管理器組件。
3.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述分布式對(duì)象管理器組件 位于所述對(duì)象管理器組件之上,而所述對(duì)象管理器組件位于所述數(shù)據(jù)管理器組件之上。
4.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,每一個(gè)節(jié)點(diǎn)的所述分布式管 理器組件、所述對(duì)象管理器組件和通信層是可插入的。
5.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,還包括在形成所述單個(gè)統(tǒng)一 高速緩存的節(jié)點(diǎn)之間建立群集協(xié)議的群集襯底。
6.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述顯式聚集高速緩存被實(shí) 現(xiàn)為嵌入式應(yīng)用程序拓?fù)浣Y(jié)構(gòu)的一部分。
7.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述顯式聚集高速緩存被實(shí) 現(xiàn)為獨(dú)立層的一部分。
8.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,還包括為所述單個(gè)統(tǒng)一高速 緩存提供數(shù)據(jù)一致性操作的可用性襯底。
9.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述顯式聚集高速緩存還與 ASP. net實(shí)例相關(guān)聯(lián)。
10.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述顯式聚集高速緩存還包 括方便在所述高速緩存上分布數(shù)據(jù)的人工智能組件。
11.一種包括下列計(jì)算機(jī)可執(zhí)行動(dòng)作的計(jì)算機(jī)實(shí)現(xiàn)的方法經(jīng)由包括對(duì)象分布組件和對(duì)象管理器組件(11 的分層安排(100)來聚集存儲(chǔ)空間以 形成單個(gè)統(tǒng)一高速緩存;由所述對(duì)象管理器組件(11 來管理與存儲(chǔ)在所述單個(gè)統(tǒng)一高速緩存中的對(duì)象相關(guān) 聯(lián)的策略;以及由所述對(duì)象分布組件來將請(qǐng)求分派到與所述單個(gè)統(tǒng)一高速緩存相關(guān)聯(lián)的節(jié)點(diǎn)。
12.如權(quán)利要求11所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括經(jīng)由負(fù)載平衡器來 動(dòng)態(tài)地將負(fù)載重新分布在與所述單個(gè)統(tǒng)一高速緩存相關(guān)聯(lián)的群集上。
13.如權(quán)利要求11所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述單個(gè)統(tǒng)一高速緩存是 顯式高速緩存層。
14.如權(quán)利要求12所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述對(duì)象分布組件被實(shí)現(xiàn) 為客戶機(jī)層的一部分以便于所述分派動(dòng)作。
15.一種包括下列計(jì)算機(jī)可執(zhí)行組件的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)用于為相關(guān)聯(lián)的多個(gè)應(yīng)用程序(310、312、314)創(chuàng)建顯式聚集高速緩存的裝置(100);以及用于管理來自所述顯式聚集高速緩存的數(shù)據(jù)的驅(qū)逐策略的裝置(123)。
全文摘要
本發(fā)明涉及經(jīng)由分層安排將多個(gè)計(jì)算機(jī)的存儲(chǔ)器容量聚集成單個(gè)統(tǒng)一的高速緩存的系統(tǒng)和方法。這樣的分層安排可伸縮到多個(gè)機(jī)器,并包括能夠以模塊化的方式實(shí)現(xiàn)的數(shù)據(jù)管理器組件、對(duì)象管理器組件和分布式對(duì)象管理器組件。此外,該分層安排可以提供應(yīng)用程序知道的顯式高速緩存層(例如,高速緩存旁側(cè)(cache-aside)體系結(jié)構(gòu)),其中顯式地作出在這些應(yīng)用程序中放置/移除哪些對(duì)象的決定(與其中應(yīng)用程序不知道高速緩存的存在的隱式高速緩存形成對(duì)比)。
文檔編號(hào)G06F15/00GK102057366SQ200980122471
公開日2011年5月11日 申請(qǐng)日期2009年5月15日 優(yōu)先權(quán)日2008年6月12日
發(fā)明者A·K·諾瑞, M·克里希納普拉塞德, S·穆拉利達(dá) 申請(qǐng)人:微軟公司