專利名稱:分布式高速緩存中維護(hù)數(shù)據(jù)的方法、系統(tǒng)和程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種方法,系統(tǒng)和程序,用于在分布式高速緩存中維護(hù)數(shù)據(jù)。
背景技術(shù):
因特網(wǎng)用戶通常向中央因特網(wǎng)服務(wù)器請(qǐng)求數(shù)據(jù)。因特網(wǎng)信息供應(yīng)商面對(duì)的一個(gè)挑戰(zhàn)是這樣一個(gè)目標(biāo),即當(dāng)因特網(wǎng)傳輸和用戶量以指數(shù)速率增加時(shí),保持對(duì)用戶請(qǐng)求返回信息的及時(shí)響應(yīng)速率。針對(duì)為數(shù)量增加的用戶提供服務(wù)的需求的一個(gè)解決方案是在不同位置維護(hù)數(shù)據(jù)拷貝,使得用戶數(shù)據(jù)請(qǐng)求從在不同地理位置的鏡像服務(wù)器得到服務(wù),以服務(wù)于最接近該鏡像服務(wù)器的用戶。其它解決方案涉及維護(hù)數(shù)據(jù)拷貝的分布式高速緩存的使用,其中中央目錄被維護(hù)以跟蹤分布式高速緩存服務(wù)器上的數(shù)據(jù)。在組織中的不同點(diǎn)部署高速緩存服務(wù)器以服務(wù)于特定客戶端用戶組。中央目錄提供映射以維護(hù)有關(guān)高速緩存服務(wù)器內(nèi)對(duì)象的信息。
高速緩存和復(fù)制因特網(wǎng)服務(wù)性能(CRISP)項(xiàng)目已開發(fā)出因特網(wǎng)高速緩存服務(wù),該服務(wù)使用被構(gòu)造為通過(guò)映射服務(wù)共享其內(nèi)容的自主代理服務(wù)器集合的分布式代理高速緩存。
盡管當(dāng)前使用分布式高速緩存來(lái)服務(wù)于客戶端萬(wàn)維網(wǎng)訪問要求,然而本領(lǐng)域持續(xù)需要為諸如因特網(wǎng)請(qǐng)求的客戶端網(wǎng)絡(luò)請(qǐng)求提供服務(wù)的其它改進(jìn)技術(shù)。
發(fā)明內(nèi)容
在第一方面,本發(fā)明提供在分布式高速緩存中維護(hù)數(shù)據(jù)的方法,包括在至少一個(gè)高速緩存中保持對(duì)象的拷貝,其中多個(gè)高速緩存可具有該對(duì)象的不同版本,并且其中對(duì)象能夠具有可修改數(shù)據(jù)單元;維護(hù)每個(gè)高速緩存中保持的每個(gè)對(duì)象的更新信息,其中每個(gè)高速緩存中每個(gè)對(duì)象的更新信息指示該對(duì)象、包含該對(duì)象的高速緩存,并且指示該對(duì)象中的每個(gè)數(shù)據(jù)單元是否被修改;在接收對(duì)一個(gè)目標(biāo)高速緩存中一個(gè)目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元的修改之后,更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示該目標(biāo)數(shù)據(jù)單元被修改,其中在任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改。
該方法最好還在接收修改數(shù)據(jù)單元的請(qǐng)求之后執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元被修改,則把接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元。
該方法最好還在接收修改之后執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值;如果另一個(gè)高速緩存不包含最近的目標(biāo)數(shù)據(jù)單元值,則把修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元;以及更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
該方法最好還在接收修改之后執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元數(shù)值;以及如果另一個(gè)高速緩存包含最近的目標(biāo)數(shù)據(jù)單元值,則從所確定高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用所檢索的最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象。
該方法最好還執(zhí)行在用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元;以及更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
最好是,中央服務(wù)器執(zhí)行確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值的步驟,以及從其它高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值的步驟,還包括由中央服務(wù)器返回最近的目標(biāo)數(shù)據(jù)單元值,其中在最近的目標(biāo)數(shù)據(jù)單元值被提供給目標(biāo)高速緩存之后,對(duì)目標(biāo)數(shù)據(jù)單元的修改被應(yīng)用于目標(biāo)高速緩存。
最好是,一個(gè)高速緩存服務(wù)器被連接到每個(gè)高速緩存,并且其中每個(gè)高速緩存服務(wù)器維護(hù)該高速緩存服務(wù)器連接到的至少一個(gè)高速緩存中的每個(gè)對(duì)象的更新信息,并且其中中央服務(wù)器維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的更新信息。
該方法最好還執(zhí)行維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的無(wú)效信息,其中一個(gè)高速緩存中的一個(gè)對(duì)象的無(wú)效信息指示該對(duì)象中的每個(gè)數(shù)據(jù)單元是有效還是無(wú)效。
該方法最好還執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息指示目標(biāo)數(shù)據(jù)單元無(wú)效,則根據(jù)更新信息確定包含目標(biāo)對(duì)象的最近的目標(biāo)數(shù)據(jù)單元值的高速緩存;從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象。
該方法最好還執(zhí)行在用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元;更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改;更新包含目標(biāo)對(duì)象的每個(gè)高速緩存的無(wú)效信息以指示目標(biāo)數(shù)據(jù)單元無(wú)效。
該方法最好還執(zhí)行更新所確定的高速緩存中的目標(biāo)對(duì)象的更新信息以指示數(shù)據(jù)單元未被修改。
最好是,中央服務(wù)器執(zhí)行確定目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息是否指示目標(biāo)數(shù)據(jù)單元無(wú)效的步驟,確定包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值的高速緩存的步驟,以及從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值的步驟,還包括通過(guò)中央服務(wù)器返回最近的目標(biāo)數(shù)據(jù)單元值,其中在最近的目標(biāo)數(shù)據(jù)單元值被提供給目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,對(duì)目標(biāo)數(shù)據(jù)單元的修改被應(yīng)用于目標(biāo)高速緩存。
最好是,一個(gè)高速緩存服務(wù)器被連接到每個(gè)高速緩存,并且其中每個(gè)高速緩存服務(wù)器維護(hù)該高速緩存服務(wù)器所連接到的至少一個(gè)高速緩存中的每個(gè)對(duì)象的更新信息,并且其中中央服務(wù)器維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的更新信息和無(wú)效信息,還包括由接收對(duì)目標(biāo)數(shù)據(jù)單元的修改的目標(biāo)高速緩存服務(wù)器確定目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息是否指示目標(biāo)數(shù)據(jù)單元被修改;并且在確定目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元被修改之后,由目標(biāo)高速緩存服務(wù)器更新目標(biāo)高速緩存中的目標(biāo)對(duì)象中的數(shù)據(jù)單元。
該方法最好還包括由目標(biāo)高速緩存服務(wù)器向中央服務(wù)器發(fā)送請(qǐng)求以修改目標(biāo)數(shù)據(jù)單元;并且由中央服務(wù)器向目標(biāo)高速緩存服務(wù)器返回消息以繼續(xù)執(zhí)行(i)在沒有其它高速緩存具有最近的目標(biāo)數(shù)據(jù)單元值的情況下,不包含最近的目標(biāo)數(shù)據(jù)單元值的修改,或(2)在另一個(gè)高速緩存具有最近的目標(biāo)數(shù)據(jù)單元值的情況下,包含最近的目標(biāo)數(shù)據(jù)單元值的修改;并且在把所接收修改應(yīng)用到目標(biāo)數(shù)據(jù)單元值之前,由目標(biāo)高速緩存服務(wù)器把所接收的最近的目標(biāo)數(shù)據(jù)單元值提供給目標(biāo)高速緩存中的目標(biāo)頁(yè)面。
在第二方面,本發(fā)明提供一種維護(hù)數(shù)據(jù)的系統(tǒng),包括多個(gè)高速緩存;用于在至少一個(gè)高速緩存中維護(hù)對(duì)象的拷貝的裝置,其中高速緩存可具有對(duì)象的不同版本,并且其中對(duì)象能夠具有可修改數(shù)據(jù)單元;用于維護(hù)每個(gè)高速緩存中維護(hù)的每個(gè)對(duì)象的更新信息的裝置,其中每個(gè)高速緩存中每個(gè)對(duì)象的更新信息指示該對(duì)象、包含該對(duì)象的高速緩存,并且指示對(duì)象中的每個(gè)數(shù)據(jù)單元是否被修改;以及用于在接收對(duì)一個(gè)目標(biāo)高速緩存中一個(gè)目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元的修改之后,更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改的裝置,其中在任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改。
該系統(tǒng)最好還包括用于在接收修改數(shù)據(jù)單元的請(qǐng)求之后,并且如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元被修改,則把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元的裝置。
該最好還包括用于在接收修改之后執(zhí)行以下操作的裝置如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值;如果另一個(gè)高速緩存不包含最近的目標(biāo)數(shù)據(jù)單元值,則把修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元;以及更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
該系統(tǒng)最好還包括用于在接收修改之后執(zhí)行以下操作的裝置如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元數(shù)值;以及如果另一個(gè)高速緩存包含最近的目標(biāo)數(shù)據(jù)單元值,則從所確定高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用所檢索的最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象。
該系統(tǒng)最好還包括用于維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的無(wú)效信息的裝置,其中一個(gè)高速緩存中的一個(gè)對(duì)象的無(wú)效信息指示該對(duì)象中的每個(gè)數(shù)據(jù)單元是有效還是無(wú)效。
該系統(tǒng)最好還包括如果目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息指示目標(biāo)數(shù)據(jù)單元無(wú)效,用于根據(jù)更新信息確定包含目標(biāo)對(duì)象的最近的目標(biāo)數(shù)據(jù)單元值的高速緩存的裝置;和從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象的裝置。
最好是,中央服務(wù)器實(shí)現(xiàn)用于確定目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息是否指示目標(biāo)數(shù)據(jù)單元無(wú)效,確定包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值的高速緩存,以及從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值的裝置,還包括用于通過(guò)中央服務(wù)器返回最近的目標(biāo)數(shù)據(jù)單元值的裝置,其中在最近的目標(biāo)數(shù)據(jù)單元值被提供給目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,對(duì)目標(biāo)數(shù)據(jù)單元的修改被應(yīng)用于目標(biāo)高速緩存。
在第三方面,本發(fā)明提供一種計(jì)算機(jī)程序,包括計(jì)算機(jī)程序代碼,其中當(dāng)計(jì)算機(jī)程序代碼載入計(jì)算機(jī)系統(tǒng)并且在其上執(zhí)行時(shí),執(zhí)行根據(jù)第一方面的方法的所有步驟。
最好是,本發(fā)明提供一種用于在分布式高速緩存中維護(hù)數(shù)據(jù)的產(chǎn)品,其中該產(chǎn)品導(dǎo)致操作被執(zhí)行,所述操作包括在至少一個(gè)高速緩存中維護(hù)對(duì)象的拷貝,其中多個(gè)高速緩存可具有該對(duì)象的不同版本,并且其中該對(duì)象能夠具有可修改數(shù)據(jù)單元;維護(hù)每個(gè)高速緩存中維護(hù)的每個(gè)對(duì)象的更新信息,其中每個(gè)高速緩存中每個(gè)對(duì)象的更新信息指示該對(duì)象、包含該對(duì)象的高速緩存,并且指示對(duì)象中的每個(gè)數(shù)據(jù)單元是否被修改;以及在接收對(duì)一個(gè)目標(biāo)高速緩存中一個(gè)目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元的修改之后,更新該目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中在任何其他高速緩存中該目標(biāo)對(duì)象的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改。
在接收修改數(shù)據(jù)單元的請(qǐng)求之后,該產(chǎn)品可以進(jìn)一步執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元被修改,則把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元。
在接收修改之后,該產(chǎn)品可進(jìn)一步執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值;如果另一個(gè)高速緩存不包含最近的目標(biāo)數(shù)據(jù)單元值,則把修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元;以及更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
在接收修改之后,該產(chǎn)品可進(jìn)一步執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元數(shù)值;以及如果另一個(gè)高速緩存包含最近的目標(biāo)數(shù)據(jù)單元值,則從所確定高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用所檢索的最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象。
該產(chǎn)品可進(jìn)一步執(zhí)行在用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元;以及更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
該產(chǎn)品可以是這樣一種產(chǎn)品,其中中央服務(wù)器執(zhí)行確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值的步驟,以及從其它高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值的步驟,還包括由中央服務(wù)器返回最近的目標(biāo)數(shù)據(jù)單元值,其中在最近的目標(biāo)數(shù)據(jù)單元值被提供給目標(biāo)高速緩存之后,對(duì)目標(biāo)數(shù)據(jù)單元的修改被應(yīng)用于目標(biāo)高速緩存。
該產(chǎn)品可以是這樣一種產(chǎn)品,其中一個(gè)高速緩存服務(wù)器被連接到每個(gè)高速緩存,并且其中每個(gè)高速緩存服務(wù)器維護(hù)該高速緩存服務(wù)器連接到的至少一個(gè)高速緩存中的每個(gè)對(duì)象的更新信息,并且其中中央服務(wù)器維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的更新信息。
該產(chǎn)品可以是這樣一種產(chǎn)品,其還包括維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的無(wú)效信息,其中一個(gè)高速緩存中的一個(gè)對(duì)象的無(wú)效信息指示該對(duì)象中的每個(gè)數(shù)據(jù)單元是有效還是無(wú)效。
該產(chǎn)品可以是這樣一種產(chǎn)品,其還包括如果目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息指示目標(biāo)數(shù)據(jù)單元無(wú)效,則根據(jù)更新信息確定包含目標(biāo)對(duì)象的最近的目標(biāo)數(shù)據(jù)單元值的高速緩存;從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象。
該產(chǎn)品可以是這樣一種產(chǎn)品,其還包括在用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元;更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改;更新包含目標(biāo)對(duì)象的每個(gè)高速緩存的無(wú)效信息以指示目標(biāo)數(shù)據(jù)單元無(wú)效。
該產(chǎn)品可以是這樣一種產(chǎn)品,其還包括更新所確定的高速緩存中的目標(biāo)對(duì)象的更新信息以指示數(shù)據(jù)單元未被修改。
該產(chǎn)品可以是這樣一種產(chǎn)品,其中中央服務(wù)器執(zhí)行確定目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息是否指示目標(biāo)數(shù)據(jù)單元無(wú)效的步驟,確定包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值的高速緩存的步驟,以及從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值的步驟,還包括通過(guò)中央服務(wù)器返回最近的目標(biāo)數(shù)據(jù)單元值,其中在最近的目標(biāo)數(shù)據(jù)單元值被提供給目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,對(duì)目標(biāo)數(shù)據(jù)單元的修改被應(yīng)用于目標(biāo)高速緩存。
該產(chǎn)品可以是這樣一種產(chǎn)品,其中一個(gè)高速緩存服務(wù)器被連接到每個(gè)高速緩存,并且其中每個(gè)高速緩存服務(wù)器維護(hù)該高速緩存服務(wù)器所連接到的至少一個(gè)高速緩存中的每個(gè)對(duì)象的更新信息,并且其中中央服務(wù)器維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的更新信息和無(wú)效信息,還包括由接收對(duì)目標(biāo)數(shù)據(jù)單元的修改的目標(biāo)高速緩存服務(wù)器確定目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息是否指示目標(biāo)數(shù)據(jù)單元被修改;并且在確定目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元被修改之后,由目標(biāo)高速緩存服務(wù)器更新目標(biāo)高速緩存中的目標(biāo)對(duì)象中的數(shù)據(jù)單元。
該產(chǎn)品可以是這樣一種產(chǎn)品,其還包括由目標(biāo)高速緩存服務(wù)器向中央服務(wù)器發(fā)送請(qǐng)求以修改目標(biāo)數(shù)據(jù)單元;并且由中央服務(wù)器向目標(biāo)高速緩存服務(wù)器返回消息以繼續(xù)執(zhí)行(i)在沒有其它高速緩存具有最近的目標(biāo)數(shù)據(jù)單元值的情況下,不包含最近的目標(biāo)數(shù)據(jù)單元值的修改,或(2)在另一個(gè)高速緩存具有最近的目標(biāo)數(shù)據(jù)單元值的情況下,包含最近的目標(biāo)數(shù)據(jù)單元值的修改;并且在把所接收修改應(yīng)用到目標(biāo)數(shù)據(jù)單元值之前,由目標(biāo)高速緩存服務(wù)器把所接收的最近的目標(biāo)數(shù)據(jù)單元值提供給目標(biāo)高速緩存中的目標(biāo)頁(yè)面。
提供了在分布式高速緩存中維護(hù)數(shù)據(jù)的方法,系統(tǒng)和程序。在至少一個(gè)高速緩存中維護(hù)對(duì)象的拷貝,其中多個(gè)高速緩存可具有該對(duì)象的不同版本,并且其中該對(duì)象能夠具有可修改數(shù)據(jù)單元。維護(hù)每個(gè)高速緩存中維護(hù)的每個(gè)對(duì)象的更新信息,其中每個(gè)高速緩存中每個(gè)對(duì)象的更新信息指示該對(duì)象、包含該對(duì)象的高速緩存,并且指示對(duì)象中的每個(gè)數(shù)據(jù)單元是否被修改。在接收對(duì)一個(gè)目標(biāo)高速緩存中一個(gè)目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元的修改之后,更新該目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中在任何其他高速緩存中該目標(biāo)對(duì)象的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改。
在其它實(shí)現(xiàn)中,在接收修改數(shù)據(jù)單元的請(qǐng)求之后,并且如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元被修改,則把所接收修改應(yīng)用到目標(biāo)高速緩存中的目標(biāo)對(duì)象中的數(shù)據(jù)單元。
還有,在接收修改之后,并且如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則可以確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值。如果另一個(gè)高速緩存不包含最近的目標(biāo)數(shù)據(jù)單元值,則修改被應(yīng)用于目標(biāo)高速緩存中的目標(biāo)對(duì)象中的數(shù)據(jù)單元,并且目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息被更新以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
在其它實(shí)現(xiàn)中,在接收修改之后,并且如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則可以確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值。如果另一個(gè)高速緩存包含最近的目標(biāo)數(shù)據(jù)單元值,則從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用所檢索的最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象。
還有,可維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的無(wú)效信息,其中一個(gè)高速緩存中的一個(gè)對(duì)象的無(wú)效信息指示該對(duì)象中的每個(gè)數(shù)據(jù)單元是有效還是無(wú)效。
針對(duì)分布式高速緩存中維護(hù)的數(shù)據(jù),所描述的實(shí)現(xiàn)提供技術(shù),用于以避免執(zhí)行任何不一致數(shù)據(jù)操作的方式管理多個(gè)分布式高速緩存中的數(shù)據(jù)對(duì)象的分布式存儲(chǔ)。
現(xiàn)在僅通過(guò)舉例的方式,參照附圖定義本發(fā)明的優(yōu)選實(shí)施例,其中圖1圖解了分布式網(wǎng)絡(luò)計(jì)算環(huán)境,其中實(shí)現(xiàn)本發(fā)明的一些方面;圖2和3圖解了數(shù)據(jù)結(jié)構(gòu),用以維護(hù)有關(guān)網(wǎng)絡(luò)計(jì)算環(huán)境中在不同高速緩存上維護(hù)的數(shù)據(jù)的信息;圖4圖解了邏輯,用以根據(jù)本發(fā)明的實(shí)現(xiàn)處理對(duì)象或頁(yè)面的請(qǐng)求;圖5和6圖解了邏輯,用以根據(jù)本發(fā)明的實(shí)現(xiàn)向高速緩存返回對(duì)象或頁(yè)面;圖6和7圖解了邏輯,用以根據(jù)本發(fā)明的實(shí)現(xiàn)處理修改高速緩存中的對(duì)象的請(qǐng)求;圖8圖解了網(wǎng)絡(luò)環(huán)境中計(jì)算部件的結(jié)構(gòu),諸如高速緩存服務(wù)器和中央服務(wù)器,以及任何其他計(jì)算設(shè)備。
具體實(shí)施例方式
在下面的說(shuō)明中,對(duì)構(gòu)成說(shuō)明一部分以及圖解若干本發(fā)明的實(shí)施例的附圖進(jìn)行參照。應(yīng)當(dāng)理解可以使用其它實(shí)施例,并且可以在不偏離本發(fā)明范圍的前提下進(jìn)行結(jié)構(gòu)和操作的改變。
圖1圖解了網(wǎng)絡(luò)計(jì)算環(huán)境,其中實(shí)現(xiàn)本發(fā)明的一些方面。多個(gè)高速緩存服務(wù)器2a,2b…2n連接到中央服務(wù)器4,其中中央服務(wù)器4被連接到因特網(wǎng)6,或本領(lǐng)域已知的任何其他類型網(wǎng)絡(luò)。高速緩存和中央服務(wù)器2a,2b…2n可以包括本領(lǐng)域已知的任何類型的計(jì)算設(shè)備,包含服務(wù)器類機(jī)器,工作站,個(gè)人計(jì)算機(jī)等。高速緩存服務(wù)器2a,2b…2n均被連接到高速緩存8a,8b…8n,所述高速緩存將通過(guò)因特網(wǎng)6下載的Web頁(yè)面存儲(chǔ)為存儲(chǔ)器頁(yè)面10a,10b…10n。每個(gè)存儲(chǔ)器頁(yè)面10a,10b…10n可以包含對(duì)象或部件,這里被稱作數(shù)據(jù)單元12a,12b…12n,14a,14b…14n,和16a,16b…16n,其中數(shù)據(jù)單元可以被修改。數(shù)據(jù)單元可以包括存儲(chǔ)器頁(yè)面10a,10b…10n內(nèi)的任何粒度,包含字,字段,行,幀,整個(gè)頁(yè)面,段,對(duì)象等等。盡管圖1顯示每個(gè)高速緩存8a,8b…8n包含相同數(shù)量的頁(yè)面,其中每個(gè)頁(yè)面具有相同數(shù)量的數(shù)據(jù)單元,然而在所描述的實(shí)現(xiàn)中,每個(gè)高速緩存8a,8b…8n可以維護(hù)不同數(shù)量的存儲(chǔ)器頁(yè)面和不同的存儲(chǔ)器頁(yè)面,其中每個(gè)存儲(chǔ)器頁(yè)面可以具有不同數(shù)量的數(shù)據(jù)單元。在不同高速緩存8a,8b…8n中的存儲(chǔ)器頁(yè)面可以表示從在不同因特網(wǎng)地址(例如,通用資源定位碼(URL)等)的不同因特網(wǎng)網(wǎng)服務(wù)器下載的Web頁(yè)面。存儲(chǔ)器頁(yè)面可以存儲(chǔ)相同文件格式或不同文件格式的Web頁(yè)面。存儲(chǔ)器頁(yè)面可以包含本領(lǐng)域已知的任何媒體文件格式的內(nèi)容,諸如超文本語(yǔ)言標(biāo)記(HTML),可擴(kuò)展標(biāo)記語(yǔ)言(XML),文本文件,運(yùn)動(dòng)文件,圖片文件,聲音文件等。
多個(gè)客戶端系統(tǒng)18a,18b,18c,18d,18e,18f,18g包含向指定高速緩存服務(wù)器2a,2b…2n傳送Web頁(yè)面請(qǐng)求,使得可以從高速緩存8a,8b…8n服務(wù)客戶端請(qǐng)求的瀏覽器20a,20b,20c,20d,20e,20f,20g??蛻舳讼到y(tǒng)18a,18b…18g可以包括本領(lǐng)域已知的任何計(jì)算設(shè)備,諸如個(gè)人計(jì)算機(jī),膝上型計(jì)算機(jī),工作站,大型機(jī),電話設(shè)備,手持計(jì)算機(jī),服務(wù)器,網(wǎng)絡(luò)設(shè)備,等等,并且瀏覽器20a,20b…20g可以包括能通過(guò)網(wǎng)絡(luò)請(qǐng)求文件的任何程序,諸如因特網(wǎng)瀏覽器程序,電影播放器,聲音播放器,等等,并且把來(lái)自這些文件的數(shù)據(jù)以本領(lǐng)域已知的任何媒體格式呈現(xiàn)給用戶。在某些實(shí)現(xiàn)中,瀏覽器20a,20b…20g處的用戶可以修改或更新高速緩存8a,8b…8n中存儲(chǔ)器頁(yè)面中數(shù)據(jù)單元中的數(shù)據(jù)。
中央服務(wù)器4包含中央服務(wù)器目錄程序22和高速緩存服務(wù)器2a,2b…2n,高速緩存服務(wù)器均包含高速緩存服務(wù)器程序24a,24b…24n以執(zhí)行高速緩存相關(guān)操作。中央服務(wù)器目錄程序22維護(hù)中央目錄26,中央目錄26維護(hù)有關(guān)可以在每個(gè)高速緩存8a,8b…8n中的每個(gè)存儲(chǔ)器頁(yè)面中更新的數(shù)據(jù)單元的信息。每個(gè)高速緩存服務(wù)器程序24a,24b…24n也維護(hù)本地高速緩存目錄28a,28b…28n,本地高速緩存目錄具有維護(hù)有關(guān)可以在本地高速緩存8a,8b…8n中的存儲(chǔ)器頁(yè)面10a,10b…10n中更新的數(shù)據(jù)單元的信息的目錄項(xiàng)。本地高速緩存目錄28a,28b…28n中的目錄項(xiàng)對(duì)應(yīng)于中央目錄26中的相同存儲(chǔ)器頁(yè)面的目錄項(xiàng)。
圖2圖解了中央目錄26和本地高速緩存目錄28a,28b…28n中維護(hù)的目錄項(xiàng)的格式50。每個(gè)目錄項(xiàng)50包含每個(gè)本地高速緩存目錄28a,28b…28n的一或多個(gè)信息元組,其中本地高速緩存目錄維護(hù)對(duì)應(yīng)于本地高速緩存8a,8b…8n中目錄項(xiàng)的頁(yè)面的拷貝。每個(gè)目錄項(xiàng)50對(duì)應(yīng)于特定存儲(chǔ)器頁(yè)面地址,其中不同高速緩存8a,8b…8n可以維護(hù)該頁(yè)面的拷貝。針對(duì)具有頁(yè)面拷貝的每個(gè)高速緩存8a,8b…8n維護(hù)的每個(gè)信息元組包含高速緩存服務(wù)器ID 52a…52n指示包含目錄項(xiàng)所指示的存儲(chǔ)器頁(yè)面的特定高速緩存服務(wù)器2a,2b…2n。這個(gè)信息在本地高速緩存目錄28a,28b…28n中的目錄項(xiàng)中可選。
更新字54a…54n每個(gè)字具有多個(gè)位,其中一個(gè)位被提供給更新字所指示的頁(yè)面中的每個(gè)可更新數(shù)據(jù)單元。如果高速緩存8a,8b…8n中的頁(yè)面中的數(shù)據(jù)單元已經(jīng)修改,則設(shè)置每個(gè)位為“on”,并且如果對(duì)應(yīng)數(shù)據(jù)單元尚未修改,則設(shè)置為“off”。
無(wú)效字56a…56n若干位組成的字,其中存在對(duì)應(yīng)于高速緩存8a,8b…8n中的每個(gè)存儲(chǔ)器頁(yè)面10a,10b…10n的一個(gè)位。一個(gè)位被設(shè)置為“on”,以指示該位所表示的本地高速緩存8a,8b…8n上的存儲(chǔ)器頁(yè)面中的該數(shù)據(jù)單元上的數(shù)據(jù)是無(wú)效的或被更新,并且設(shè)置為“off”,以指示本地高速緩存8a,8b…8n上的存儲(chǔ)器頁(yè)面中的數(shù)據(jù)單元沒有被更新或不是無(wú)效的。這個(gè)字對(duì)于在本地高速緩存目錄28a,28b…28n中的目錄項(xiàng)是可選的。
圖3和5圖解了高速緩存服務(wù)器程序24a,24b…24n中實(shí)現(xiàn)的邏輯,并且圖4和6圖解了中央目錄服務(wù)器程序22中實(shí)現(xiàn)的邏輯,其用于協(xié)同訪問其中的存儲(chǔ)器頁(yè)面和數(shù)據(jù)單元,以保證以允許客戶端18a,18b…18g快速訪問數(shù)據(jù)的方式維護(hù)數(shù)據(jù)一致性。
圖3和4分別圖解了高速緩存服務(wù)器程序24a,24b..24n和中央目錄服務(wù)器程序22執(zhí)行的操作,其用于向客戶端瀏覽器20a,20b…20n提供對(duì)作為所請(qǐng)求Web頁(yè)面一部分的存儲(chǔ)器頁(yè)面的讀取訪問。參照?qǐng)D4,控制在模塊100開始,其中高速緩存服務(wù)器程序24a,24b…24n從瀏覽器20a,20b…20g之一接收存儲(chǔ)器頁(yè)面請(qǐng)求。在某些實(shí)現(xiàn)中,每個(gè)客戶端18a,18b…18g會(huì)把其所有頁(yè)面請(qǐng)求指引到一個(gè)指定的高速緩存服務(wù)器2a,2b…2n??蛇x地,每個(gè)客戶端可以指引請(qǐng)求到許多指定的可選高速緩存服務(wù)器之一。響應(yīng)于接收到請(qǐng)求,如果(在模塊102)所請(qǐng)求頁(yè)面在連接到接收方高速緩存服務(wù)器2a,2b…2n的高速緩存8a,8b…8n中,則高速緩存服務(wù)器程序24a,24b…24n從高速緩存8a,8b…8n返回(在模塊104)所請(qǐng)求的存儲(chǔ)器頁(yè)面。在該實(shí)現(xiàn)中,高速緩存服務(wù)器程序24a,24b…24n提供從高速緩存8a,8b…8n到頁(yè)面的直接訪問,然而所返回頁(yè)面可能不具有某些數(shù)據(jù)單元的值的最近的拷貝。如果所請(qǐng)求頁(yè)面未在附連的高速緩存8a,8b…8n中,則高速緩存服務(wù)器程序24a,24b…24n向中央服務(wù)器4發(fā)送(在模塊106)針對(duì)所請(qǐng)求頁(yè)面的請(qǐng)求,并且控制執(zhí)行到圖4中的模塊120,其中中央目錄服務(wù)器程序22處理請(qǐng)求。
參照?qǐng)D4,響應(yīng)于接收(在模塊120)到存儲(chǔ)器頁(yè)面請(qǐng)求,中央目錄服務(wù)器程序22確定(在模塊122)中央目錄26是否包含所請(qǐng)求頁(yè)面的目錄項(xiàng)。如果沒有,則中央目錄服務(wù)器程序22從因特網(wǎng)6上下載(在模塊124)所請(qǐng)求頁(yè)面。針對(duì)檢索的頁(yè)面產(chǎn)生(在模塊126)中央目錄26中的目錄項(xiàng)50,其中所產(chǎn)生的目錄項(xiàng)50在高速緩存服務(wù)器ID字段52a…52n中標(biāo)識(shí)發(fā)起請(qǐng)求的高速緩存服務(wù)器2a,2b…2n,并且包含更新字54a…54n和無(wú)效字56a…56n,其所有數(shù)據(jù)單元位(圖2和3)初始設(shè)置為“off”。接著,所檢索的頁(yè)面和所產(chǎn)生的目錄項(xiàng)50被返回(在模塊128)到請(qǐng)求方高速緩存服務(wù)器2a,2b…2n,以在本地高速緩存8a,8b…8n中緩沖,并且維護(hù)本地高速緩存目錄28a,28b…28n中的新接收目錄項(xiàng)。
如果(在模塊122)中央目錄26中存在所請(qǐng)求頁(yè)面的目錄項(xiàng),并且如果(在模塊130)不存在這樣的目錄項(xiàng),即其針對(duì)所請(qǐng)求頁(yè)面的更新字54a…54n的數(shù)據(jù)單元位54a…54n(圖2)設(shè)置為“on”,以指示沒有其它高速緩存服務(wù)器2a,2b…2n更新了所請(qǐng)求頁(yè)面的數(shù)據(jù)單元12a,12b…12n,14a,14b…14n以及16a,16b…16n,則中央目錄服務(wù)器程序22向一個(gè)高速緩存服務(wù)器2a,2b…2n訪問(在模塊132)所請(qǐng)求頁(yè)面,其中該高速緩存服務(wù)器2a,2b…2n在所請(qǐng)求頁(yè)面的目錄項(xiàng)50的一個(gè)信息元組中的高速緩存服務(wù)器ID字段52a…52n中標(biāo)識(shí)。由于沒有高速緩存服務(wù)器2a,2b…2n維護(hù)具有更新數(shù)據(jù)的數(shù)據(jù)單元,可以向目錄項(xiàng)50標(biāo)識(shí)的任何高速緩存8a,8b…8n訪問頁(yè)面。中央目錄服務(wù)器程序22產(chǎn)生(在模塊134)信息元組以加入到所請(qǐng)求頁(yè)面的目錄項(xiàng)50,其中所產(chǎn)生的信息元組在字段52a…52n中標(biāo)識(shí)請(qǐng)求方高速緩存服務(wù)器2a,2b…2n,并且包含更新字54a…54n和無(wú)效字56a…56n,其中所有數(shù)據(jù)單元位54a…54n和56a…56n設(shè)置為“off”。所檢索的頁(yè)面和所產(chǎn)生的信息元組被返回(在模塊136)到請(qǐng)求方高速緩存服務(wù)器136。注意,在可選實(shí)現(xiàn)中,只有所產(chǎn)生的更新字54a…54n可以被發(fā)送,而不是發(fā)送信息元組。
如果(在模塊130)所請(qǐng)求頁(yè)面的目錄項(xiàng)50中針對(duì)另一個(gè)高速緩存服務(wù)器2a,2b…2n的一個(gè)信息元組中的一個(gè)更新字54a…54n具有設(shè)置為“on”的一個(gè)數(shù)據(jù)單元位,則中央目錄服務(wù)器程序22確定(在模塊138)所請(qǐng)求頁(yè)面的目錄項(xiàng)50中的信息元組的更新字54a…54n具有設(shè)置為“on”的多數(shù)數(shù)據(jù)單元位。接著,中央目錄服務(wù)器程序22從所確定信息元組的字段52a…52n所標(biāo)識(shí)的高速緩存服務(wù)器2a,2b…2n檢索(在模塊140)所請(qǐng)求頁(yè)面,其中信息元組具有最大數(shù)量的最近數(shù)據(jù)單元值。針對(duì)頁(yè)面的目錄項(xiàng)50中的每個(gè)其它元組(其更新字54a…54n具有設(shè)置為“on”的數(shù)據(jù)單元位),中央目錄服務(wù)器程序22會(huì)向該元組的字段52a…52n所標(biāo)識(shí)的高速緩存服務(wù)器2a,2b…2n訪問(在模塊142)對(duì)應(yīng)于設(shè)置為“on”的位的對(duì)應(yīng)數(shù)據(jù)單元,并且把所訪問的數(shù)據(jù)加入到所檢索頁(yè)面中的對(duì)應(yīng)數(shù)據(jù)單元。針對(duì)請(qǐng)求方高速緩存服務(wù)器2a,2b…2n產(chǎn)生(在模塊144)所檢索頁(yè)面的目錄項(xiàng)的元組,其在字段52a…52n中標(biāo)識(shí)請(qǐng)求方高速緩存服務(wù)器,并且包含更新字54a…54n和無(wú)效字56a…56n,其中所有數(shù)據(jù)單元位設(shè)置為“off”。接著控制執(zhí)行到模塊136,以返回所檢索頁(yè)面和所產(chǎn)生元組(或其相關(guān)部分)到請(qǐng)求方高速緩存服務(wù)器2a,2b…2n。
通過(guò)圖3和4的邏輯,如果本地高速緩存中不存在拷貝,則客戶端瀏覽器頁(yè)面請(qǐng)求首先由本地高速緩存8a,8b…n,并且然后由遠(yuǎn)端高速緩存服務(wù)。如果本地高速緩存或遠(yuǎn)端高速緩存中不存在所請(qǐng)求頁(yè)面的拷貝,則從因特網(wǎng)6上下載該頁(yè)面。由于通過(guò)因特網(wǎng)下載的訪問等待時(shí)間最長(zhǎng),通過(guò)優(yōu)先從本地高速緩存,接著從遠(yuǎn)端高速緩存,及最終從因特網(wǎng)下載來(lái)優(yōu)化訪問性能。此外,在某些實(shí)現(xiàn)中,當(dāng)?shù)谝淮谓邮沾鎯?chǔ)在遠(yuǎn)端高速緩存中的頁(yè)面時(shí),所返回頁(yè)面包含所有遠(yuǎn)端高速緩存中維護(hù)的數(shù)據(jù)單元的最近值。
圖5圖解了在高速緩存服務(wù)器程序24a,24b…24n中實(shí)現(xiàn)的邏輯,用于處理客戶端瀏覽器20a,20b…20g的修改數(shù)據(jù)單元的請(qǐng)求,所述數(shù)據(jù)單元被稱作一個(gè)頁(yè)面中的目標(biāo)數(shù)據(jù)單元,該頁(yè)面稱作目標(biāo)頁(yè)面??刂圃谀K200開始,其中高速緩存服務(wù)器程序24a,24b…24n從一個(gè)客戶端18a,18b…18g接收修改一個(gè)頁(yè)面中的數(shù)據(jù)單元的請(qǐng)求,其中指定該客戶端發(fā)送頁(yè)面請(qǐng)求到接收請(qǐng)求的高速緩存服務(wù)器2a,2b…2n。如果(在模塊202)對(duì)應(yīng)于目標(biāo)數(shù)據(jù)單元、所請(qǐng)求頁(yè)面的本地高速緩存目錄28a…28n中更新字中的數(shù)據(jù)單元位被設(shè)置成“on”,以指示接收請(qǐng)求的高速緩存服務(wù)器2a,2b…2n(稱作接收方高速緩存服務(wù)器)具有目標(biāo)數(shù)據(jù)單元12a,12b…12n,14a,14b 14n,16a,16b…16n的最近的值,則接收方高速緩存服務(wù)器程序24a,24b…24n用所接收的修改數(shù)據(jù)單元更新(在模塊204)連接到接收方高速緩存服務(wù)器2a,2b…2n的高速緩存8a,8b…8n中的目標(biāo)頁(yè)面中的數(shù)據(jù)單元。否則,如果接收方高速緩存服務(wù)器2a,2b…2n上的更新字54a…54n,28a,28b…28n不具有對(duì)應(yīng)于目標(biāo)數(shù)據(jù)單元、設(shè)置為“on”的位,則接收方高速緩存服務(wù)器程序24a,24b…24n發(fā)送(在模塊202)修改目標(biāo)頁(yè)面中的目標(biāo)數(shù)據(jù)單元的請(qǐng)求到中央服務(wù)器4。
圖6圖解了中央目錄服務(wù)器程序22響應(yīng)來(lái)自接收方高速緩存服務(wù)器2a,2b…2n(在圖5中的模塊206)、修改目標(biāo)頁(yè)面中的目標(biāo)數(shù)據(jù)單元的請(qǐng)求而執(zhí)行的操作。響應(yīng)于接收到這個(gè)請(qǐng)求(在模塊210),中央目錄服務(wù)器程序22確定(在模塊214)在所請(qǐng)求頁(yè)面的目錄項(xiàng)50的接收方高速緩存服務(wù)器2a,2b…2n(如字段52a…52n所示)的元組中,無(wú)效字56a…56中對(duì)應(yīng)于目標(biāo)數(shù)據(jù)單元的數(shù)據(jù)單元位是否被設(shè)置成“on”,即指示“無(wú)效”。如果是這樣的話,另一個(gè)高速緩存服務(wù)器2a,2b…2n已經(jīng)修改目標(biāo)數(shù)據(jù)單元。在這種情況下,中央目錄服務(wù)器程序22確定(在模塊216)其它高速緩存服務(wù)器2a,2b…2n的目錄項(xiàng)中,即高速緩存服務(wù)器的具有所針對(duì)的數(shù)據(jù)單元的最近數(shù)據(jù)的目錄項(xiàng)中,具有其目標(biāo)數(shù)據(jù)單元位56(圖2)被設(shè)置為“on”的更新字56的元組。接著中央目錄服務(wù)器程序22從所確定的元組指示的其它高速緩存服務(wù)器2a,2b…2n檢索(在模塊218)目標(biāo)數(shù)據(jù)單元的最近的值,并且返回(在模塊220)所檢索的最近的數(shù)據(jù)單元值到接收方高速緩存服務(wù)器。在所確定的元組中,由于在更新操作之后接收方高速緩存服務(wù)器會(huì)更新目標(biāo)數(shù)據(jù)單元并且具有目標(biāo)數(shù)據(jù)單元的最近的值,其它高速緩存服務(wù)器2a,2b…2n的更新字54a…54n中的目標(biāo)數(shù)據(jù)單元位被設(shè)置(在模塊222)為“off”。
在提供最近的數(shù)據(jù)值給接收方高速緩存服務(wù)器之后(從模塊222)或如果接收方高速緩存服務(wù)器具有目標(biāo)數(shù)據(jù)單元的最近的值(來(lái)自模塊214的否分支),控制執(zhí)行到模塊224和226,其中中央目錄服務(wù)器程序22在請(qǐng)求方高速緩存服務(wù)器的目錄項(xiàng)中,設(shè)置(在模塊224)更新字54a…54n中對(duì)應(yīng)于目標(biāo)數(shù)據(jù)單元的數(shù)據(jù)單元位為“on”,并且設(shè)置請(qǐng)求方高速緩存服務(wù)器的目錄項(xiàng)中的無(wú)效字56a…56n中的位為“off”。中央目錄服務(wù)器程序22也在所有其它高速緩存服務(wù)器的目標(biāo)頁(yè)面的目錄項(xiàng)50中元組中,將無(wú)效字56a…56n中的數(shù)據(jù)單元位設(shè)置(在模塊226)為“on”,以指示其它高速緩存服務(wù)器在其目標(biāo)頁(yè)面拷貝中具有目標(biāo)數(shù)據(jù)單元的無(wú)效數(shù)據(jù)。接著,中央目錄服務(wù)器程序22返回(在模塊228)消息到接收方高速緩存服務(wù)器以繼續(xù)修改目標(biāo)數(shù)據(jù)單元。該消息也可以包含顯式或隱含的消息,其指示請(qǐng)求方高速緩存服務(wù)器更新所接收頁(yè)面的其有效和無(wú)效字中的相關(guān)位,以指示請(qǐng)求方高速緩存服務(wù)器具有在頁(yè)面中更新的數(shù)據(jù)單元的最近更新。在可選實(shí)現(xiàn)中,中央目錄服務(wù)器程序22可以返回修改的有效和無(wú)效字。
當(dāng)從中央目錄服務(wù)器程序22接收(在圖5中的模塊250)修改的目標(biāo)數(shù)據(jù)單元時(shí),高速緩存服務(wù)器程序24a,24b…24n用所接收的修改數(shù)據(jù)單元更新(在模塊252)其高速緩存8a,8b…8n中的目標(biāo)頁(yè)面中的目標(biāo)數(shù)據(jù)單元。當(dāng)接收(在模塊254)消息以修改目標(biāo)數(shù)據(jù)單元時(shí),請(qǐng)求方高速緩存服務(wù)器24a,24b…24n把從客戶端瀏覽器20a,20b...20g接收的已修改數(shù)據(jù)單元加入到高速緩存8a,8b…8n中的頁(yè)面10a,10b…10n。
所描述實(shí)現(xiàn)提供用于分布式高速緩存服務(wù)器系統(tǒng)的協(xié)議,以允許客戶端瀏覽器在一個(gè)高速緩存服務(wù)器上進(jìn)行更新,并且同時(shí)維護(hù)所有高速緩存服務(wù)器之間的數(shù)據(jù)一致性。這也提供了不嚴(yán)格的數(shù)據(jù)更新一致性,因?yàn)槿绻跒g覽器中更新數(shù)據(jù),則只在具有包含被修改數(shù)據(jù)單元的頁(yè)面拷貝的遠(yuǎn)端高速緩存服務(wù)器的中央目錄中設(shè)置無(wú)效數(shù)據(jù)位。關(guān)于更新的信息沒有被包含在遠(yuǎn)端高速緩存服務(wù)器中,并且遠(yuǎn)端高速緩存服務(wù)器的瀏覽器和客戶端可以持續(xù)從不具有最近的數(shù)據(jù)單元值的本地高速緩存讀取頁(yè)面。然而,如果從不具有最近數(shù)據(jù)的高速緩存服務(wù)器接收數(shù)據(jù)的瀏覽器試圖修改數(shù)據(jù)單元,則瀏覽器將在應(yīng)用修改之前接收最近數(shù)據(jù)。
其它實(shí)現(xiàn)細(xì)節(jié)所描述用于管理分布式高速緩存服務(wù)器系統(tǒng)的技術(shù)可使用產(chǎn)生軟件,固件,硬件或任何其組合的標(biāo)準(zhǔn)編程和/或工程技術(shù)實(shí)現(xiàn)為方法,裝置或產(chǎn)品。這里使用的術(shù)語(yǔ)“產(chǎn)品”是指在硬件邏輯(例如,集成電路芯片,可編程門陣列(PGA),專用集成電路(ASIC)等)或諸如磁存儲(chǔ)介質(zhì)(例如,硬盤驅(qū)動(dòng)器,軟盤驅(qū)動(dòng)器,磁帶等等)的計(jì)算機(jī)可讀介質(zhì),光學(xué)存儲(chǔ)器(CD-ROM,光盤等等),易失和非易失存儲(chǔ)器設(shè)備(例如,EEPROM,ROM,PROM,RAM,DRAM,SRAM,固件,可編程邏輯等等)中實(shí)現(xiàn)的代碼或邏輯。處理器訪問和執(zhí)行計(jì)算機(jī)可讀介質(zhì)中的代碼。其中實(shí)現(xiàn)優(yōu)選實(shí)施例的代碼還可以通過(guò)傳輸介質(zhì)或通過(guò)網(wǎng)絡(luò)從文件服務(wù)器訪問。在這種情況下,其中實(shí)現(xiàn)代碼的產(chǎn)品可以包括諸如網(wǎng)絡(luò)傳輸線路,無(wú)線傳輸介質(zhì),空間信號(hào)傳播,無(wú)線電波,紅外信號(hào)等的傳輸介質(zhì)。因而,“產(chǎn)品”可以包括其中體現(xiàn)代碼的介質(zhì)。另外,“產(chǎn)品”可以包括其中體現(xiàn),處理和執(zhí)行代碼的硬件和軟件部件的組合。當(dāng)然,本領(lǐng)域的技術(shù)人員會(huì)認(rèn)識(shí)到,可以在不偏離本發(fā)明范圍的情況下對(duì)這個(gè)結(jié)構(gòu)進(jìn)行許多修改,并且產(chǎn)品可以包括本領(lǐng)域已知任何信息承載介質(zhì)。
在已描述實(shí)現(xiàn)中,針對(duì)中央服務(wù)器中的每個(gè)目錄項(xiàng)中的每個(gè)信息元組維護(hù)無(wú)效字和更新字。在可選實(shí)現(xiàn)中,只有更新字被維護(hù)。在這種實(shí)現(xiàn)中,為確定請(qǐng)求方高速緩存服務(wù)器是否具有舊數(shù)據(jù),中央服務(wù)器要處理其它高速緩存服務(wù)器的元組中的更新字,以確定任何其它高速緩存服務(wù)器是否已修改數(shù)據(jù)單元。
在所描述實(shí)現(xiàn)中,在高速緩存中維護(hù)的頁(yè)面包括存儲(chǔ)器頁(yè)面,其中多個(gè)存儲(chǔ)器頁(yè)面會(huì)存儲(chǔ)通過(guò)因特網(wǎng)從URL訪問的單個(gè)Web頁(yè)面的數(shù)據(jù)。可選地,高速緩存中的存儲(chǔ)器頁(yè)面可以包括Web頁(yè)面。
在所描述實(shí)現(xiàn)中,中央服務(wù)器和中央目錄服務(wù)器程序管理更新操作以確保請(qǐng)求方高速緩存服務(wù)器在應(yīng)用更新之前接收最近的數(shù)據(jù)。在可選實(shí)現(xiàn)中,所描述由中央服務(wù)器和中央目錄服務(wù)器程序執(zhí)行的操作可以分布在高速緩存服務(wù)器中,以提供分布式中央目錄。在這種實(shí)現(xiàn)中(其中中央目錄服務(wù)器程序執(zhí)行的操作被分布),在中央服務(wù)器的更新字和無(wú)效字中維護(hù)的信息將被分布到高速緩存服務(wù)器,以允許高速緩存服務(wù)器執(zhí)行分布式高速緩存管理操作。
在所描述實(shí)現(xiàn)中,高速緩存服務(wù)器維護(hù)高速緩存服務(wù)器2a,2b…2n的高速緩存8a,8b…8n中每個(gè)頁(yè)面的更新字的拷貝??蛇x地,高速緩存服務(wù)器可以不維護(hù)更新字,并是通過(guò)中央服務(wù)器處理所有一致性操作。
描述為包含在更新和無(wú)效字中的信息可以在本領(lǐng)域已知的任何一或多個(gè)數(shù)據(jù)結(jié)構(gòu)中實(shí)現(xiàn),以提供更新及無(wú)效信息。例如,更新及無(wú)效信息可以在一或多個(gè)數(shù)據(jù)對(duì)象,數(shù)據(jù)庫(kù)的數(shù)據(jù)記錄,表項(xiàng),單獨(dú)對(duì)象等中實(shí)現(xiàn)。
在高速緩存中維護(hù)的頁(yè)面可以包括任何數(shù)據(jù)對(duì)象類型,包含任何類型的多媒體對(duì)象,其中客戶端或用戶可以輸入或添加數(shù)據(jù)以修改對(duì)象內(nèi)容。
在所描述實(shí)現(xiàn)中,存在單獨(dú)的被連接到每個(gè)高速緩存的高速緩存服務(wù)器。高速緩存和高速緩存服務(wù)器可以在相同封裝單元,或可以在不同單元中。在可選實(shí)現(xiàn)中,一個(gè)高速緩存服務(wù)器可以被連接到多個(gè)高速緩存,并且維護(hù)多個(gè)連接的高速緩存的更新信息。
在所描述實(shí)現(xiàn)中,中央服務(wù)器從因特網(wǎng)上下載頁(yè)面??蛇x地,中央服務(wù)器可以從任何網(wǎng)絡(luò)下載頁(yè)面,諸如內(nèi)部網(wǎng),局域網(wǎng)(LAN),廣域網(wǎng)(WAN),存儲(chǔ)區(qū)網(wǎng)絡(luò)(SAN),等等。此外,高速緩存服務(wù)器可以直接訪問因特網(wǎng)以下載頁(yè)面。
圖4-7所圖解的邏輯說(shuō)明按某個(gè)次序出現(xiàn)的某些事件。在可選實(shí)現(xiàn)中,某些操作可以按不同次序執(zhí)行,修改或消除。此外,各步驟可以加入到上述邏輯并且仍然與所描述實(shí)現(xiàn)相符。此外,這里描述的操作可以順序出現(xiàn),或某些操作可以并行處理。此外,操作可以通過(guò)單個(gè)處理單元,或通過(guò)分布式處理單元執(zhí)行。
圖8圖解網(wǎng)絡(luò)部件的計(jì)算機(jī)結(jié)構(gòu)300的一個(gè)實(shí)現(xiàn),諸如圖1中說(shuō)明的中央服務(wù)器和高速緩存服務(wù)器。結(jié)構(gòu)300可以包含處理器302(例如,微處理器),存儲(chǔ)器304(例如,易失存儲(chǔ)器設(shè)備),以及存儲(chǔ)設(shè)備306(例如,非易失存儲(chǔ)器,諸如磁盤驅(qū)動(dòng)器,光驅(qū),磁帶驅(qū)動(dòng)器等等)。存儲(chǔ)設(shè)備306可以包括內(nèi)部存儲(chǔ)裝置或附加或網(wǎng)絡(luò)訪問的存儲(chǔ)器。存儲(chǔ)設(shè)備306中的程序被載入存儲(chǔ)器304并且通過(guò)處理器302以本領(lǐng)域已知的方式執(zhí)行。結(jié)構(gòu)還包含網(wǎng)卡308以允許與網(wǎng)絡(luò)通信。輸入設(shè)備310用于向處理器302提供用戶輸入,并且可以包含鍵盤,鼠標(biāo),輸入筆,話筒,觸摸顯示屏,或本領(lǐng)域已知的任何其他激活或輸入機(jī)構(gòu)。輸出設(shè)備312能夠呈現(xiàn)從處理器302或其它部件,諸如顯示監(jiān)視器,打印機(jī),存儲(chǔ)器等發(fā)送的信息。
權(quán)利要求
1.一種在分布式高速緩存中維護(hù)數(shù)據(jù)的方法,包括在至少一個(gè)高速緩存中維護(hù)對(duì)象的拷貝,其中多個(gè)高速緩存可具有該對(duì)象的不同版本,并且其中該對(duì)象能夠具有可修改數(shù)據(jù)單元;維護(hù)每個(gè)高速緩存中維護(hù)的每個(gè)對(duì)象的更新信息,其中每個(gè)高速緩存中每個(gè)對(duì)象的更新信息指示該對(duì)象、包含該對(duì)象的高速緩存,并且指示對(duì)象中的每個(gè)數(shù)據(jù)單元是否被修改;以及在接收對(duì)一個(gè)目標(biāo)高速緩存中一個(gè)目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元的修改之后,更新該目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中在任何其他高速緩存中該目標(biāo)對(duì)象的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改。
2.如權(quán)利要求1所述的方法,其中在接收修改數(shù)據(jù)單元的請(qǐng)求之后進(jìn)一步執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元被修改,則把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元。
3.如權(quán)利要求1或2所述的方法,其中在接收修改之后進(jìn)一步執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值;如果另一個(gè)高速緩存不包含最近的目標(biāo)數(shù)據(jù)單元值,則把修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元;以及更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
4.如權(quán)利要求1,2或3所述的方法,其中在接收修改之后進(jìn)一步執(zhí)行如果目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改,則確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元數(shù)值;以及如果另一個(gè)高速緩存包含最近的目標(biāo)數(shù)據(jù)單元值,則從所確定高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用所檢索的最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象。
5.如權(quán)利要求4所述的方法,還包括在用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的數(shù)據(jù)單元;以及更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示數(shù)據(jù)單元未被修改。
6.如權(quán)利要求4所述的方法,其中中央服務(wù)器執(zhí)行確定另一個(gè)高速緩存是否包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值的步驟,以及從其它高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值的步驟,還包括由中央服務(wù)器返回最近的目標(biāo)數(shù)據(jù)單元值,其中在最近的目標(biāo)數(shù)據(jù)單元值被提供給目標(biāo)高速緩存之后,對(duì)目標(biāo)數(shù)據(jù)單元的修改被應(yīng)用于目標(biāo)高速緩存,并且其中一個(gè)高速緩存服務(wù)器被連接到每個(gè)高速緩存,并且其中每個(gè)高速緩存服務(wù)器維護(hù)該高速緩存服務(wù)器連接到的至少一個(gè)高速緩存中的每個(gè)對(duì)象的更新信息,并且其中中央服務(wù)器維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的更新信息。
7.如前面權(quán)利要求中任何一個(gè)所述的方法,還包括維護(hù)每個(gè)高速緩存中的每個(gè)對(duì)象的無(wú)效信息,其中一個(gè)高速緩存中的一個(gè)對(duì)象的無(wú)效信息指示該對(duì)象中的每個(gè)數(shù)據(jù)單元是有效還是無(wú)效;如果目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息指示目標(biāo)數(shù)據(jù)單元無(wú)效,則根據(jù)更新信息確定包含目標(biāo)對(duì)象的最近的目標(biāo)數(shù)據(jù)單元值的高速緩存;從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值并且用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象;在用最近的目標(biāo)數(shù)據(jù)單元值更新目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,把所接收的修改應(yīng)用到目標(biāo)高速緩存中目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元;更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改;更新包含目標(biāo)對(duì)象的每個(gè)高速緩存的無(wú)效信息以指示目標(biāo)數(shù)據(jù)單元無(wú)效;以及更新所確定的高速緩存中的目標(biāo)對(duì)象的更新信息以指示數(shù)據(jù)單元未被修改。
8.如權(quán)利要求7所述的方法,其中中央服務(wù)器執(zhí)行確定目標(biāo)對(duì)象和目標(biāo)高速緩存的無(wú)效信息是否指示目標(biāo)數(shù)據(jù)單元無(wú)效的步驟,確定包含目標(biāo)對(duì)象和最近的目標(biāo)數(shù)據(jù)單元值的高速緩存的步驟,以及從所確定的高速緩存檢索最近的目標(biāo)數(shù)據(jù)單元值的步驟,還包括通過(guò)中央服務(wù)器返回最近的目標(biāo)數(shù)據(jù)單元值,其中在最近的目標(biāo)數(shù)據(jù)單元值被提供給目標(biāo)高速緩存中的目標(biāo)對(duì)象之后,對(duì)目標(biāo)數(shù)據(jù)單元的修改被應(yīng)用于目標(biāo)高速緩存。
9.一種維護(hù)數(shù)據(jù)的系統(tǒng),包括多個(gè)高速緩存;用于在至少一個(gè)高速緩存中維護(hù)對(duì)象的拷貝的裝置,其中高速緩存可具有對(duì)象的不同版本,并且其中對(duì)象能夠具有可修改數(shù)據(jù)單元;用于維護(hù)每個(gè)高速緩存中維護(hù)的每個(gè)對(duì)象的更新信息的裝置,其中每個(gè)高速緩存中每個(gè)對(duì)象的更新信息指示該對(duì)象、包含該對(duì)象的高速緩存,并且指示對(duì)象中的每個(gè)數(shù)據(jù)單元是否被修改;以及用于在接收對(duì)一個(gè)目標(biāo)高速緩存中一個(gè)目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元的修改之后,更新目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息以指示目標(biāo)數(shù)據(jù)單元被修改的裝置,其中在任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改。
10.一種計(jì)算機(jī)程序,包括計(jì)算機(jī)程序代碼,其中當(dāng)計(jì)算機(jī)程序代碼載入計(jì)算機(jī)系統(tǒng)并且在其上執(zhí)行時(shí),導(dǎo)致所述計(jì)算機(jī)系統(tǒng)執(zhí)行根據(jù)權(quán)利要求1到8的任何一個(gè)的方法的所有步驟。
全文摘要
提供在分布式高速緩存中維護(hù)數(shù)據(jù)的方法,系統(tǒng)和程序。對(duì)象的拷貝被保持在至少一個(gè)高速緩存中,其中多個(gè)高速緩存可以具有該對(duì)象的不同版本,并且其中對(duì)象能夠具有可修改數(shù)據(jù)單元。維護(hù)每個(gè)高速緩存中維護(hù)的每個(gè)對(duì)象的更新信息,其中每個(gè)高速緩存中每個(gè)對(duì)象的更新信息指示該對(duì)象、包含該對(duì)象的高速緩存,并且指示對(duì)象中每個(gè)數(shù)據(jù)單元是否被修改。在接收對(duì)一個(gè)目標(biāo)高速緩存中的一個(gè)目標(biāo)對(duì)象中的目標(biāo)數(shù)據(jù)單元的修改之后,目標(biāo)對(duì)象和目標(biāo)高速緩存的更新信息被更新以指示目標(biāo)數(shù)據(jù)單元被修改,其中任何其他高速緩存中的目標(biāo)對(duì)象的更新信息指示目標(biāo)數(shù)據(jù)單元未被修改。
文檔編號(hào)G06F17/30GK1672151SQ03817427
公開日2005年9月21日 申請(qǐng)日期2003年9月26日 優(yōu)先權(quán)日2002年9月27日
發(fā)明者桑德拉·約翰遜 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司