專利名稱:用于響應(yīng)輸出高速緩存的多高速緩存協(xié)作的制作方法
用于響應(yīng)輸出高速緩存的多高速緩存協(xié)作 背景背景和相關(guān)技術(shù)計(jì)算機(jī)和計(jì)算系統(tǒng)影響了現(xiàn)代生活的幾乎每個方面。計(jì)算機(jī)通常在工作、 消遣、醫(yī)療保健、運(yùn)輸、娛樂、家務(wù)管理等領(lǐng)域中都有所涉及。計(jì)算機(jī)的功能 也通過其經(jīng)由各種網(wǎng)絡(luò)連接來互連的能力而得到加強(qiáng)。計(jì)算系統(tǒng)可以向其他系統(tǒng)請求數(shù)據(jù)。該數(shù)據(jù)可以用多種不同的方式來獲 取。例如,數(shù)據(jù)可通過從諸如數(shù)據(jù)庫或其他數(shù)據(jù)存儲等存儲庫中檢索該數(shù)據(jù)來 獲取。數(shù)據(jù)也可由提供數(shù)據(jù)的系統(tǒng)動態(tài)地創(chuàng)建。例如,可從華盛頓州雷蒙德市的微軟公司獲得的asp.NET包括用于動態(tài)創(chuàng)建網(wǎng)頁數(shù)據(jù)的各工具。即使是普通 的web服務(wù)器也包括用于隨網(wǎng)頁請求一起接收自變量的功能以基于該網(wǎng)頁請 求中的自變量來提供定制的網(wǎng)頁數(shù)據(jù)。一種提高計(jì)算系統(tǒng)的性能的方式是通過輸出高速緩存請求數(shù)據(jù)。高速緩存 涉及將最近所請求的數(shù)據(jù)存儲在當(dāng)對于相同數(shù)據(jù)做出后續(xù)請求時可快速檢索 的位置。例如,數(shù)據(jù)可以在計(jì)算機(jī)系統(tǒng)的物理存儲器中高速緩存以使得能夠非 ??焖俚貦z索到該數(shù)據(jù)。已經(jīng)創(chuàng)建了用于確定如何存儲和保留高速緩存數(shù)據(jù)的各種高速緩存算法。 例如,F(xiàn)IFO是先進(jìn)先出的縮寫。在該方案中,數(shù)據(jù)在高速緩存位置上高速緩 存,并且當(dāng)需要為另外的高速緩存項(xiàng)目創(chuàng)建空間時,從高速緩存中移除最老的 項(xiàng)目。其他方案使用預(yù)測過濾器來確定什么被高速緩存以及高速緩存多久。通常,計(jì)算機(jī)系統(tǒng)的各單獨(dú)組件各自都將具有其自己的高速緩存組件。例 如,在web服務(wù)器上下文中,存在棧,且操作系統(tǒng)在該棧的底部,web服務(wù)器 在操作系統(tǒng)的上方,而應(yīng)用程序在web服務(wù)器的上方。該情形的一個示例是 Windows操作系統(tǒng)主存IIS服務(wù)器,而IIS服務(wù)器主存asp.NET框架,所有這 些都可從華盛頓州雷蒙德市的微軟公司獲得。操作系統(tǒng)、web服務(wù)器以及應(yīng)用程序中的每一個都各自包括其自己的高速緩存。如果這些單獨(dú)的組件在一起工 作以向客戶機(jī)提供數(shù)據(jù)時各自都高速緩存數(shù)據(jù),則可能執(zhí)行冗余高速緩存。這 可導(dǎo)致資源浪費(fèi)。例如,通過在物理存儲器中保留冗余的高速緩存項(xiàng)目,可用 于高速緩存其他項(xiàng)目的物理存儲器數(shù)量大大減少。在此要求保護(hù)的主題不限于解決任何缺點(diǎn)或僅在諸如下述環(huán)境中操作的 各個實(shí)施例。相反,提供該背景僅用以示出在其中可實(shí)踐在此描述的部分實(shí)施 例的一個示例性技術(shù)領(lǐng)域。
簡要概述一個實(shí)施例涉及一種高速緩存數(shù)據(jù)的方法??梢栽诶绨ㄏ蚩蛻魴C(jī)系統(tǒng) 提供數(shù)據(jù)的服務(wù)器系統(tǒng)的計(jì)算環(huán)境中實(shí)施。該服務(wù)器系統(tǒng)包括用于存儲數(shù)據(jù)的 多個高速緩存。該方法允許最廉價的高速緩存首先高速緩存客戶機(jī)所請求的數(shù) 據(jù)。該方法包括接收將在高速緩存處高速緩存的數(shù)據(jù)。該方法還包括確定該數(shù) 據(jù)先前沒有被高速緩存在在前高速緩存處。如果該數(shù)據(jù)先前沒有被高速緩存在 在前高速緩存處,,則在該高速緩存處高速緩存該數(shù)據(jù)。此處所描述的另一個實(shí)施例涉及從高速緩存中檢索數(shù)據(jù)??梢栽诶绨?向客戶機(jī)系統(tǒng)提供數(shù)據(jù)的服務(wù)器系統(tǒng)的計(jì)算環(huán)境中實(shí)施。該服務(wù)器系統(tǒng)包括用 于存儲數(shù)據(jù)的多個高速緩存。該方法允許數(shù)據(jù)首先從較不昂貴的高速緩存中檢 索。該方法包括在高速緩存處接收對數(shù)據(jù)的請求。該方法還包括確定該數(shù)據(jù)是 否可在該高速緩存處獲得。如果該數(shù)據(jù)可在該高速緩存處獲得,則返回所請求 的數(shù)據(jù)。如果該數(shù)據(jù)不能夠在該高速緩存處獲得,則將該請求轉(zhuǎn)發(fā)至在后高速 緩存。此處所描述的另一個實(shí)施例涉及一種具有存儲在其上的多個數(shù)據(jù)結(jié)構(gòu)的 計(jì)算機(jī)可讀介質(zhì)。該多個數(shù)據(jù)結(jié)構(gòu)包括多個高速緩存,這些高速緩存包括具有 第一速度的第一高速緩存以及在后耦合到該第一高速緩存的第二高速緩存。該 第二高速緩存具有比該第一高速緩存慢的第二速度。由于在后耦合到該第一高 速緩存,所以該第一高速緩存在該第二高速緩存之前接收數(shù)據(jù)和對數(shù)據(jù)的請 求。數(shù)據(jù)結(jié)構(gòu)還包括一策略對象。策略對象定義用于多個高速緩存的設(shè)置。提供本概述以便以簡化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些 概念。該概述不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在 用于幫助確定所要求保護(hù)的主題的范圍。另外的特征和優(yōu)點(diǎn)將在以下的描述中闡述,并且部分可從該描述中顯而易 見,或者可以從此處的教示實(shí)踐中習(xí)得。本發(fā)明的特征和優(yōu)點(diǎn)可以通過在所附 權(quán)利要求中特別指出的手段和組合來認(rèn)識并獲取。本發(fā)明的特征將從以下描述 和所附權(quán)利要求書中變得完全顯而易見,或者可通過如下所述對本發(fā)明的實(shí)踐 而獲知。
附圖簡述為了描述能夠獲得上述和其它優(yōu)點(diǎn)和特征的方式,將通過參考附圖中示出 的各具體實(shí)施例來呈現(xiàn)對以上簡述的主題的更為具體的描述。應(yīng)該理解這些附 圖僅描繪了各典型實(shí)施例,因此其不應(yīng)被認(rèn)為是對范圍的限制,通過使用附圖, 將會用另外的特征和細(xì)節(jié)來描述并解釋各實(shí)施例,在附圖中
圖1示出了高速緩存的分層組織;圖2示出了用于高速緩存及請求數(shù)據(jù)的活動的流水線; 圖3示出了高速緩存數(shù)據(jù)的方法;以及 圖4示出了檢索高速緩存的數(shù)據(jù)的方法。 詳細(xì)描述此處的各實(shí)施例可以包括含有各種計(jì)算機(jī)硬件的專用或通用計(jì)算機(jī),這將 在以下做出更詳細(xì)的討論。此處所描述的一個實(shí)施例包括其中高速緩存以分層的方式彼此連接的高 速緩存拓?fù)浣Y(jié)構(gòu)。在該拓?fù)浣Y(jié)構(gòu)中,首先訪問最快和/或最廉價的高速緩存以高 速緩存數(shù)據(jù)或檢索高速緩存的數(shù)據(jù)。如果特定高速緩存不能夠高速緩存給定數(shù) 據(jù)集,或者給定數(shù)據(jù)集不能夠在該高速緩存處獲得,則將該數(shù)據(jù)或?qū)?shù)據(jù)的請 求傳遞給在后高速緩存。在后高速緩存可能較慢或較昂貴,但是可能包括用于 高速緩存該給定數(shù)據(jù)集的功能。高速緩存拓?fù)浣Y(jié)構(gòu)可包括以分層方式連接的任 何合適數(shù)量的高速緩存,其中較快和/或較便宜的高速緩存在較慢和/或較昂貴 的高速緩存之前訪問。在一個實(shí)施例中,定義將被高速緩存的數(shù)據(jù)的策略信息可對分層結(jié)構(gòu)中的 高速緩存可用。因此,分層結(jié)構(gòu)中的高速緩存能夠參考該策略信息,以及評估 高速緩存各自的能力以確定給定數(shù)據(jù)集是否應(yīng)被高速緩存在該高速緩存處?,F(xiàn)在參考圖1,示出了在其中高速緩存拓?fù)浣Y(jié)構(gòu)ioo包括分層排列的多個 高速緩存102-1、 102-2、以及102-N的說明性示例。在所示示例中,對高速緩 存的數(shù)據(jù)的請求104或要高速緩存的數(shù)據(jù)106可被發(fā)送至第一高速緩存102-1。 為了解釋簡明起見,現(xiàn)在將對數(shù)據(jù)106被發(fā)送至第一高速緩存102-1的情況給 出第一示例。當(dāng)數(shù)據(jù)106被發(fā)送至第一高速緩存102-1時,該第一高速緩存102-1 能夠確定正在發(fā)送什么類型的數(shù)據(jù)。第一高速緩存102-1然后能夠參考策略信 息108以確定數(shù)據(jù)106是否應(yīng)被高速緩存。如果數(shù)據(jù)106應(yīng)被高速緩存,則第 一高速緩存102-2然后能夠評估其自身用于高速緩存數(shù)據(jù)的能力。如果數(shù)據(jù)106 是能夠被高速緩存在高速緩存102-1處的類型,則數(shù)據(jù)106將在被高速緩存在 第一高速緩存102-1處。另一方面,如果數(shù)據(jù)不是能夠由高速緩存102-1來高速緩存的類型,則該 數(shù)據(jù)將被轉(zhuǎn)發(fā)至第二高速緩存102-2。第二高速緩存102-2將執(zhí)行與第一高速 緩存102-1執(zhí)行的動作類似的動作,諸如參考策略信息108以確定數(shù)據(jù)106是 否應(yīng)被高速緩存以及評估其自身的能力以確定其是否能夠高速緩存數(shù)據(jù)106。 該過程能夠繼續(xù)至由省略號和102-N表示的其他高速緩存直到一高速緩存已 200780008326.7說明書第6/ll頁經(jīng)高速緩存了數(shù)據(jù)106或在向所有高速緩存呈現(xiàn)了數(shù)據(jù)106之后沒有高速緩存 已高速緩存了數(shù)據(jù)106??梢詧?zhí)行類似的過程以檢索數(shù)據(jù)。例如,對高速緩存的數(shù)據(jù)的請求104 可被發(fā)送至第一高速緩存102-1。如果該第一高速緩存102-1具有該高速緩存 的數(shù)據(jù),則將從該第一高速緩存102-1返回該高速緩存的數(shù)據(jù)。如果該第一高 速緩存102-1不具有該高速緩存的數(shù)據(jù),則該第一高速緩存102-1會將對高速 緩存的數(shù)據(jù)的請求104傳遞給第二高速緩存102-2。該過程可以繼續(xù)至由省略 號和102-N表示的高速緩存。如上所述,最快和/或最廉價的高速緩存可以是第一高速緩存102-1,且在 后高速緩存是較慢和/或較昂貴的高速緩存。例如,在一個實(shí)施例中,第一高速 緩存102-1可以是諸如web服務(wù)器等的用于較低層次組件的高速緩存。第二高 速緩存102-2可以是用于諸如應(yīng)用層組件,諸如比如可從華盛頓州雷蒙德市的 微軟公司獲得的ASP.net等較高層次組件的高速緩存。在該示例中,第一高速 緩存102-1可以是本機(jī)高速緩存,而第二高速緩存102-2可以是托管高速緩存。 本機(jī)高速緩存通常比托管高速緩存更快更便宜。如上所述,圖l示出了高速緩存策略108。在某些實(shí)施例中,該高速緩存 策略可包括對應(yīng)于每個高速緩存的策略設(shè)置。例如,高速緩存策略可包括對應(yīng) 于高速緩存102-1、 102-2、以及102-N的高速緩存策略108-1、 108-2、以及108-N。 高速緩存策略108-1、 108-2、以及108-N可以互連以使得在高速緩存策略108 中知曉所有的高速緩存設(shè)置。這允許任何有能力的高速緩存來高速緩存數(shù)據(jù) 106。因此,在最快和/或最便宜的高速緩存基于高速緩存能力以及包括對應(yīng)于 每個高速緩存的高速緩存策略的高速緩存策略108能夠高速緩存數(shù)據(jù)時,可以 使用它來高速緩存數(shù)據(jù)。在各替換實(shí)施例中,高速緩存策略108可以是高速緩存102-1、 102-2、以 及102-N中的每一個都能夠參考的通用共享配置。由此,高速緩存策略108所 指定的具有存儲數(shù)據(jù)106的能力的第一高速緩存將存儲數(shù)據(jù)106。當(dāng)高速緩存 已存儲數(shù)據(jù)106時,可以標(biāo)記數(shù)據(jù)106以使得在后高速緩存將不會試圖高速緩 存數(shù)據(jù)106。在一個實(shí)施例中,這可以通過簡單地將數(shù)據(jù)106標(biāo)記為不應(yīng)被高 速緩存的數(shù)據(jù)來實(shí)現(xiàn)。以此方式,高速緩存102-1、 102-2、以及102-N不必特11
別設(shè)計(jì)為彼此通信。相反,在前高速緩存能夠?qū)?shù)據(jù)106標(biāo)記為不應(yīng)被高速緩存的數(shù)據(jù),從而防止在后高速緩存高速緩存該數(shù)據(jù)。另外,由于能夠添加任何 數(shù)量的在后高速緩存而無需將高速緩存特別設(shè)計(jì)為彼此通信,所以圖l所示的 模型是高度可擴(kuò)展的?,F(xiàn)參考圖2,示出了工作流流水線200。工作流流水線200示出正接收請 求202。請求202可以是例如來自連接到服務(wù)器系統(tǒng)的客戶機(jī)系統(tǒng)的請求。如 果請求202可由輸出高速緩存來處理,則可以通過從高速緩存提供對請求202 的響應(yīng)而不是通過更昂貴的計(jì)算和/或網(wǎng)絡(luò)操作來重新生成或重新取得該響應(yīng) 來節(jié)省計(jì)算資源。另外,即使在高速緩存中無法獲得對請求202的響應(yīng),在某些情況下,對該請求的響應(yīng)也可通過此處將在以下更詳細(xì)描述的各種過程和事 件來生成,以使得對該請求的響應(yīng)然后能夠被存儲在高速緩存中并且隨后在響 應(yīng)中對于請求數(shù)據(jù)的客戶機(jī)可用。當(dāng)接收到請求202時可以執(zhí)行解析高速緩存功能204。解析高速緩存功能 204允許當(dāng)在高速緩存206中可獲得對請求202的響應(yīng)時從高速緩存206返回 高速緩存的數(shù)據(jù)。為了獲得高速緩存的對請求202的響應(yīng),發(fā)送對高速緩存的 數(shù)據(jù)104的請求。在圖2所示的實(shí)施例中,對高速緩存的數(shù)據(jù)104的請求可被 發(fā)送至第一高速緩存102-1,該第一高速緩存如上所述可以是較快和/較便宜的 高速緩存。如果該第一高速緩存102-1包括對請求202的響應(yīng),則該第一高速 緩存102-1可返回該響應(yīng)并防止對高速緩存的數(shù)據(jù)104的請求繼續(xù)至諸如102-2 以及102-N等在后高速緩存。如果在第一高速緩存102-1中無法獲得對請求202 的響應(yīng),則如上結(jié)合圖1的描述所述的對高速緩存的數(shù)據(jù)104的請求可被傳遞 至在后高速緩存。如上所述,在后高速緩存能夠繼續(xù)檢查對請求202的響應(yīng), 直到找到響應(yīng)或直到檢査了每個高速緩存中的響應(yīng)。圖2示出了判定框208。判定框208指示如果響應(yīng)被存儲在高速緩存之一 中,則如在210處所指示的將該響應(yīng)發(fā)送至客戶機(jī)。如果響應(yīng)沒有被存儲在高 速緩存之一中,則如在事件212處所示出的可以執(zhí)行各種動作以從另一個位置 生成或檢索響應(yīng)。如上所述,圖2示出了事件212。事件可以是被執(zhí)行以生成作為對請求202 的響應(yīng)的數(shù)據(jù)和/或響應(yīng)于請求202來獲取數(shù)據(jù)的各種活動。例如,事件212 可包括由諸如asp.NET等應(yīng)用層組件執(zhí)行的各種活動。事件212可包括用于收 集存儲在數(shù)據(jù)庫中的數(shù)據(jù)以用作滿足請求202的數(shù)據(jù)的數(shù)據(jù)庫檢索功能。某些 實(shí)施例允許事件在任何合適的層執(zhí)行。例如,事件212可以在內(nèi)核層、系統(tǒng)層、 和/或應(yīng)用層執(zhí)行。圖2還示出了更新高速緩存動作214。當(dāng)數(shù)據(jù)已通過事件212生成或檢索 時,該數(shù)據(jù)可被存儲在高速緩存206之一中。這允許該數(shù)據(jù)被用作對請求該數(shù) 據(jù)的后續(xù)請求的響應(yīng)。如上所述,數(shù)據(jù)106可被發(fā)送至第一高速緩存102-1。 該第一高速緩存102-1參考高速緩存策略108。如果高速緩存策略108指示數(shù) 據(jù)106應(yīng)被高速緩存并且該第一高速緩存102-1能夠高速緩存數(shù)據(jù)106,則該 第一高速緩存102-1高速緩存數(shù)據(jù)106。然后第一高速緩存102-1向后高速緩 存指示數(shù)據(jù)106不應(yīng)被高速緩存。在一個實(shí)施例中,這可以通過將數(shù)據(jù)106標(biāo) 記為不應(yīng)被高速緩存的數(shù)據(jù)來實(shí)現(xiàn)。或者,第一高速緩存102-1可以將不要高 速緩存數(shù)據(jù)106的獨(dú)立消息發(fā)送至諸如高速緩存102-2以及102-N等在后高速 緩存。圖2還示出了處理程序216。處理程序216可與在事件212處所表示的計(jì) 算機(jī)硬件和軟件相關(guān)聯(lián)。處理程序216能夠向高速緩存策略108提供策略信息。 具體地,處理程序216可具有定義當(dāng)由事件212生成時什么特定類型的數(shù)據(jù)應(yīng) 被高速緩存的可用信息。該信息可由處理程序216傳送至高速緩存策略108。現(xiàn)參考圖3,示出了一種用于存儲數(shù)據(jù)的方法300。可以例如在包括向客 戶機(jī)系統(tǒng)提供數(shù)據(jù)的服務(wù)器系統(tǒng)的計(jì)算環(huán)境中實(shí)施。該服務(wù)器系統(tǒng)包括用于存 儲數(shù)據(jù)的多個高速緩存。方法300包括多個動作。例如,方法300包括接收將 在高速緩存處被高速緩存的數(shù)據(jù)(動作302)。方法300還包括確定該數(shù)據(jù)先 前沒有被高速緩存在在前高速緩存處(動作304)。如果該數(shù)據(jù)先前沒有被高 速緩存在在前高速緩存處,則方法300示出確定高速緩存策略是否允許該數(shù)據(jù) 被高速緩存在該高速緩存處(動作305)。如果高速緩存策略允許該數(shù)據(jù)被高 速緩存在該高速緩存處,則方法300示出該數(shù)據(jù)被高速緩存在該高速緩存處(動 作306)。否則,該數(shù)據(jù)不被高速緩存在該高速緩存處(308)。某些實(shí)施例允許該數(shù)據(jù)被轉(zhuǎn)發(fā)至在后高速緩存??梢詷?biāo)記該數(shù)據(jù)以使得在 后高速緩存不高速緩存該數(shù)據(jù)。例如,該數(shù)據(jù)可被標(biāo)記為不要高速緩存的數(shù)據(jù) 以使得在后高速緩存不高速緩存該數(shù)據(jù)。或者,該高速緩存可向在后高速緩存 傳達(dá)該數(shù)據(jù)不應(yīng)被高速緩存。如上所述,在前高速緩存可以是比該高速緩存成本更低的高速緩存。例如, 如圖1所示,因?yàn)榈谝桓咚倬彺?02-1是較快的高速緩存或需要比第一高速緩存102-2更少的資源,所以它可以成本更低。換言之,在后高速緩存可以是比 該高速緩存成本更高的高速緩存。由此,成本較低和/或最快的高速緩存有機(jī)會 在成本較高和/或較慢的高速緩存之前存儲數(shù)據(jù)。方法300還包括確定高速緩存是否包括用于高速緩存數(shù)據(jù)的功能性能力。 在一個示例中這可以在動作305處執(zhí)行。如果該高速緩存包括用于高速緩存數(shù) 據(jù)的功能性能力,則執(zhí)行在該高速緩存處高速緩存數(shù)據(jù)(動作306)。例如, 并再次參考圖1,第一高速緩存102-1能夠參考高速緩存策略108以確定應(yīng)該 高速緩存什么類型的數(shù)據(jù)。第一高速緩存102-1然后能夠參考其自身的高速緩 存能力以確定其是否具有高速緩存數(shù)據(jù)的能力。由此,確定高速緩存是否包括用于高速緩存數(shù)據(jù)的功能性能力可包括將該 高速緩存的功能性能力與諸如適用于多個高速緩存的高速緩存策略108等對象 中的一組公共設(shè)置相比較。如上所述,確定高速緩存是否包括用于高速緩存數(shù)據(jù)的功能性能力可包括 將該高速緩存的功能性能力與適用于多個高速緩存的一組經(jīng)協(xié)調(diào)的設(shè)置相比 較。該經(jīng)協(xié)調(diào)的設(shè)置可以是對應(yīng)于能夠共享信息的多個高速緩存中的每一個高 速緩存的各自設(shè)置的集合。由此,在前高速緩存可以使用來自在后高速緩存的 策略設(shè)置來確定該在前高速緩存是否能夠高速緩存數(shù)據(jù)。方法300可包括通過咨詢高速緩存策略來確定數(shù)據(jù)是否應(yīng)被高速緩存并 且如果高速緩存策略指示該數(shù)據(jù)應(yīng)被高速緩存則在該高速緩存處高速緩存該 數(shù)據(jù)(動作306)。這可以例如在動作305處執(zhí)行。如上所述,高速緩存策略 108包括指示什么類型的數(shù)據(jù)應(yīng)被高速緩存在多個高速緩存中的高速緩存處的"f曰息。方法300可以是使得接收將在高速緩存處高速緩存的數(shù)據(jù)包括從在前高 速緩存接收該數(shù)據(jù)。例如,如果在前高速緩存由于功能限制不能夠高速緩存數(shù) 據(jù),則高速緩存可以從該在前高速緩存接收該數(shù)據(jù)。
如上所述,高速緩存可具有其中在訪問較慢的高速緩存之前訪問較快的高速緩存的變化的功能。由此,在一個實(shí)施例中,該高速緩存可以是web服務(wù)器,而在后高速緩存可以是應(yīng)用層高速緩存。類似地,該高速緩存可以是本機(jī)高速 緩存,而在后高速緩存可以是托管高速緩存?,F(xiàn)參考圖4,示出了一種方法400??梢岳缭诎ㄏ蚩蛻魴C(jī)系統(tǒng)提供數(shù) 據(jù)的服務(wù)器系統(tǒng)的計(jì)算環(huán)境中實(shí)施。該服務(wù)器系統(tǒng)包括用于存儲數(shù)據(jù)的多個高 速緩存。該方法包括用于提供客戶機(jī)所請求的高速緩存的數(shù)據(jù)的各種動作。該 方法包括接收對高速緩存處的數(shù)據(jù)的請求(動作402)。例如,如圖2所示, 可以接收請求104。該方法還包括確定該數(shù)據(jù)是否可在該高速緩存處獲得(動作404)。例如, 第一高速緩存102-1確定對數(shù)據(jù)104的請求所請求的數(shù)據(jù)是否可在該第一高速 緩存102-1處獲得。如果該數(shù)據(jù)可在該高速緩存處獲得,則返回所請求的數(shù)據(jù) (動作406)。例如,圖2示出了向客戶機(jī)210發(fā)送響應(yīng)。如果該數(shù)據(jù)不能夠 在該高速緩存處獲得,則將該請求轉(zhuǎn)發(fā)至在后高速緩存(動作408)。例如, 可將請求104轉(zhuǎn)發(fā)至第二高速緩存102-2。如此處在其他實(shí)施例中所描述的,該高速緩存可以比在后高速緩存更快。所要求保護(hù)的方法400還可包括如果數(shù)據(jù)不能夠在多個高速緩存處獲得, 則生成該數(shù)據(jù)或從除了多個高速緩存之外的位置檢索該數(shù)據(jù)。例如,如圖2所 示,如事件212所示出的可以執(zhí)行各種動作以生成該數(shù)據(jù)或諸如從數(shù)據(jù)庫或其 他數(shù)據(jù)源檢索該數(shù)據(jù)。當(dāng)已檢索或生成了數(shù)據(jù)時,方法400還可包括用于向高速緩存提供該數(shù) 據(jù)、確定該數(shù)據(jù)先前沒有被高速緩存在多個高速緩存中的在前高速緩存處、以 及如果如在確定該數(shù)據(jù)先前沒有被高速緩存過的步驟中所確定的該數(shù)據(jù)先前 沒有被高速緩存在多個高速緩存中的在前高速緩存處則在該高速緩存處高速 緩存該數(shù)據(jù)的各種動作。另外,生成或檢索數(shù)據(jù)可包括向多個高速緩存提供指定數(shù)據(jù)應(yīng)被高速緩存 在多個高速緩存處的高速緩存策略信息。各實(shí)施例還可以包括用于承載或其上存儲有計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié) 構(gòu)的計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)訪 問的任何可用介質(zhì)。作為示例而非限制,這樣的計(jì)算機(jī)可讀介質(zhì)可包括RAM、 ROM、 EEPROM、 CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、 或可用于承載或存儲計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置 且可由通用或?qū)S糜?jì)算機(jī)訪問的任何其它介質(zhì)。當(dāng)信息通過網(wǎng)絡(luò)或另一通信連 接(硬連線、無線或硬連線或無線的組合)傳輸或提供給計(jì)算機(jī)時,該計(jì)算機(jī) 將該連接適當(dāng)?shù)匾暈橛?jì)算機(jī)可讀介質(zhì)。因此,任何這樣的連接被適當(dāng)?shù)胤Q為計(jì) 算機(jī)可讀介質(zhì)。以上的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。計(jì)算機(jī)可執(zhí)行指令包括例如,使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè) 備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。盡管用對結(jié)構(gòu)特征和/或方法動作專 用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于 上述具體特征或動作。相反,上述具體特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例 形式公開的。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所述實(shí)施例 在所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附 權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效技術(shù)方案的含義和范圍 內(nèi)的所有改變應(yīng)被權(quán)利要求書的范圍涵蓋。
權(quán)利要求
1. 一種在包括向客戶機(jī)系統(tǒng)提供數(shù)據(jù)的服務(wù)器系統(tǒng)的計(jì)算環(huán)境中首先在最廉價的高速緩存處高速緩存客戶機(jī)所請求的數(shù)據(jù)的方法,所述服務(wù)器系統(tǒng)包括用于存儲數(shù)據(jù)的多個高速緩存,所述方法包括以下動作接收將被高速緩存在高速緩存處的數(shù)據(jù);確定所述數(shù)據(jù)先前沒有被高速緩存在在前高速緩存處;以及如果如在所述確定所述數(shù)據(jù)先前沒有被高速緩存的步驟中所確定的所述數(shù)據(jù)先前沒有被高速緩存在在前高速緩存處,則在所述高速緩存處高速緩存所述數(shù)據(jù)。
2. 如權(quán)利要求1所述的方法,其特征在于,所述在前高速緩存是比 所述高速緩存成本更低的高速緩存。
3. 如權(quán)利要求1所述的方法,其特征在于,還包括將所述數(shù)據(jù)轉(zhuǎn)發(fā) 至在后高速緩存。
4. 如權(quán)利要求3所述的方法,其特征在于,所述在后高速緩存是比 所述高速緩存成本更高的高速緩存。
5. 如權(quán)利要求l所述的方法,其特征在于,還包括 確定所述高速緩存是否包括用于高速緩存所述數(shù)據(jù)的功能性能力;以及 其中如果所述高速緩存包括用于高速緩存所述數(shù)據(jù)的功能性能力,則執(zhí)行在所述高速緩存處高速緩存所述數(shù)據(jù)。
6. 如權(quán)利要求5所述的方法,其特征在于,確定所述高速緩存是否 包括用于高速緩存所述數(shù)據(jù)的功能性能力包括將所述高速緩存的功能性能力 與適用于所述多個高速緩存的對象中的一組公共設(shè)置相比較。
7. 如權(quán)利要求5所述的方法,其特征在于,確定所述高速緩存是否 包括用于高速緩存所述數(shù)據(jù)的功能性能力包括將所述高速緩存的功能性能力 與適用于所述多個高速緩存的一組經(jīng)協(xié)調(diào)的設(shè)置相比較。
8. 如權(quán)利要求l所述的方法,其特征在于,還包括 通過咨詢高速緩存策略來確定所述數(shù)據(jù)是否應(yīng)被高速緩存;以及 其中如果所述高速緩存策略指示所述數(shù)據(jù)應(yīng)被高速緩存,則執(zhí)行在所述高速緩存處高速緩存所述數(shù)據(jù)。
9. 如權(quán)利要求1所述的方法,其特征在于,接收將在高速緩存處高 速緩存的數(shù)據(jù)包括從在前高速緩存接收所述數(shù)據(jù)。
10. 如權(quán)利要求2所述的方法,其特征在于,所述高速緩存是web服 務(wù)器高速緩存,而所述在后高速緩存是應(yīng)用層高速緩存。
11. 如權(quán)利要求2所述的方法,其特征在于,所述高速緩存是本機(jī)高 速緩存,而所述在后高速緩存是托管高速緩存。
12. —種在包括向客戶機(jī)系統(tǒng)提供數(shù)據(jù)的服務(wù)器系統(tǒng)的計(jì)算環(huán)境中的 通過首先從較廉價的高速緩存檢索數(shù)據(jù)來提供客戶機(jī)所請求的高速緩存的數(shù) 據(jù)的方法,所述服務(wù)器系統(tǒng)包括用于存儲數(shù)據(jù)的多個高速緩存,所述方法包括 以下動作在高速緩存處接收對數(shù)據(jù)的請求; 確定所述數(shù)據(jù)是否可在所述高速緩存處獲得;如果所述數(shù)據(jù)可在所述高速緩存處獲得,則返回所請求的數(shù)據(jù);以及 如果所述數(shù)據(jù)不能夠在所述高速緩存處獲得,則將所述請求轉(zhuǎn)發(fā)至在后高 速緩存。
13. 如權(quán)利要求12所述的方法,其特征在于,所述高速緩存比所述在 后高速緩存快。
14. 如權(quán)利要求12所述的方法,其特征在于,還包括如果所述數(shù)據(jù)不 能夠在所述多個高速緩存處獲得,則生成所述數(shù)據(jù)或從除了所述多個高速緩存 之外的位置檢索所述數(shù)據(jù)。
15. 如權(quán)利要求14所述的方法,其特征在于,還包括 向所述高速緩存提供所述數(shù)據(jù);確定所述數(shù)據(jù)先前沒有被高速緩存在所述多個高速緩存中的在前高速緩 存處;以及如果如在所述確定所述數(shù)據(jù)先前沒有被高速緩存過的步驟中所確定的所 述數(shù)據(jù)先前沒有被高速緩存在所述多個高速緩存中的所述在前高速緩存處,則 在所述高速緩存處高速緩存所述數(shù)據(jù)。
16. 如權(quán)利要求14所述的方法,其特征在于,生成或檢索所述數(shù)據(jù)包 括向所述多個高速緩存提供指定應(yīng)被高速緩存在所述多個高速緩存處的數(shù)據(jù) 的高速緩存策略信息。
17. —種具有存儲在其上的多個數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),所述多 個數(shù)據(jù)結(jié)構(gòu)包括多個高速緩存,包括-具有第一速度的第一高速緩存;以及在后耦合到所述第一高速緩存的第二高速緩存,所述第二高速緩存具有比 所述第一高速緩存慢的第二速度,其中因?yàn)樵诤篑詈系剿龅谝桓咚倬彺?,?以所述第一高速緩存在所述第二高速緩存之前接收數(shù)據(jù)以及對數(shù)據(jù)的請求;以 及策略對象,其中所述策略對象定義對應(yīng)于所述多個高速緩存的設(shè)置。
18. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于 生成和/或檢索數(shù)據(jù)的計(jì)算機(jī)可執(zhí)行指令。
19. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于 生成將被存儲在所述策略對象中的策略信息的計(jì)算機(jī)可執(zhí)行指令。
20. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述第二高 速緩存在后耦合到所述第一高速緩存允許數(shù)據(jù)和對數(shù)據(jù)的請求從所述第一高 速緩存被發(fā)送至所述第二高速緩存。
全文摘要
高速緩存數(shù)據(jù)??梢岳缭诎ㄏ蚩蛻魴C(jī)系統(tǒng)提供數(shù)據(jù)的服務(wù)器系統(tǒng)的計(jì)算環(huán)境中實(shí)施一種方法。該服務(wù)器系統(tǒng)包括用于存儲數(shù)據(jù)的多個高速緩存。該方法允許最廉價的高速緩存首先高速緩存或返回客戶機(jī)所請求的數(shù)據(jù)。該方法包括接收將在高速緩存處高速緩存的數(shù)據(jù)。該方法還包括確定該數(shù)據(jù)先前沒有被高速緩存在在前高速緩存處。如果該數(shù)據(jù)先前沒有被高速緩存在在前高速緩存處,則在該高速緩存處高速緩存該數(shù)據(jù)?;蛘?,可以在第一高速緩存處接收對數(shù)據(jù)的請求。如果該數(shù)據(jù)在該第一高速緩存處,則該第一高速緩存返回該數(shù)據(jù)。如果該數(shù)據(jù)不在該第一高速緩存處,則將該數(shù)據(jù)請求轉(zhuǎn)發(fā)至在后高速緩存。
文檔編號G06F17/30GK101401079SQ200780008326
公開日2009年4月1日 申請日期2007年2月6日 優(yōu)先權(quán)日2006年3月8日
發(fā)明者A·K·魯伊阿, E·B·奧爾森, M·沃洛達(dá)爾斯基 申請人:微軟公司