亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種網(wǎng)站多數(shù)據(jù)源切換方法和裝置的制作方法

文檔序號:6471219閱讀:169來源:國知局
專利名稱:一種網(wǎng)站多數(shù)據(jù)源切換方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)站的創(chuàng)建與維護技術(shù),尤其涉及一種網(wǎng)站多數(shù)據(jù)源切換方法 和裝置。
背景技術(shù)
目前,隨著互聯(lián)網(wǎng)技術(shù)的深入發(fā)展,尤其是企業(yè)信息化的高速發(fā)展,企業(yè) 已經(jīng)認(rèn)識到依托于互聯(lián)網(wǎng)打造個性化的企業(yè)信息門戶網(wǎng)站,以此來推薦自己、 推銷產(chǎn)品的重要性,進(jìn)而使得企業(yè)依托于互聯(lián)網(wǎng)建立企業(yè)信息化門戶的需求越 來越廣泛。
現(xiàn)有的網(wǎng)站建設(shè)方案通常會為每個網(wǎng)站提供專屬的數(shù)據(jù)庫,由每個網(wǎng)站獨 立維護其數(shù)據(jù)庫連接,以提高網(wǎng)站數(shù)據(jù)的安全性和可維護性。在數(shù)據(jù)庫連接的 維護操作中通常會釆用連接池技術(shù),即為每個網(wǎng)站預(yù)先創(chuàng)建一批數(shù)據(jù)庫連接組
成數(shù)據(jù)庫連接池,并對數(shù)據(jù)庫連接池中的數(shù)據(jù)庫連接進(jìn)行管理;當(dāng)應(yīng)用程序使 用完一個數(shù)據(jù)庫連接時,并不是真正關(guān)閉該數(shù)據(jù)庫連接,而是將該數(shù)據(jù)庫歸還 到數(shù)據(jù)庫連接池中,從而使得其他的數(shù)據(jù)庫訪問操作可以繼續(xù)使用該數(shù)據(jù)庫連 接,而不需再創(chuàng)建新的數(shù)據(jù)庫連接。使用連接池的好處在于,它可以提高數(shù)據(jù) 庫訪問操作的效率,因為頻繁的打開和關(guān)閉數(shù)據(jù)庫連接比較耗時。
然而,由于用戶訪問網(wǎng)站具有一定的隨機性, 一個網(wǎng)站有可能一段時間內(nèi) 訪問的用戶比較多,而另一段時間內(nèi)又幾乎沒有訪問的用戶。如果每個網(wǎng)站都 建立單獨的數(shù)據(jù)庫連接池,則在網(wǎng)站的訪問用戶較多時,會導(dǎo)致該網(wǎng)站的數(shù)據(jù) 庫連接資源緊張;在網(wǎng)站的訪問用戶很少時,會導(dǎo)致該網(wǎng)站的數(shù)據(jù)庫連接資源 空閑;也即不能及時根據(jù)用戶的訪問情況調(diào)整資源的分配,這在一定程度上會 造成資源的浪費。另外,由于單臺數(shù)據(jù)庫服務(wù)器的最大連接數(shù)有限,因此為每個網(wǎng)站維護獨立的數(shù)據(jù)庫連接池,不利于網(wǎng)站的大規(guī)模部署,例如 一臺數(shù)據(jù) 庫服務(wù)器具有部署100家網(wǎng)站的能力,如果應(yīng)用程序為每個網(wǎng)站分別維護獨立 的數(shù)據(jù)庫連接池,而每個數(shù)據(jù)庫連接池中又包括多個數(shù)據(jù)庫連接,那么這臺數(shù) 據(jù)庫服務(wù)器的連接總數(shù)將會直線上升,超出最大連接數(shù)的限制,這是數(shù)據(jù)庫服 務(wù)器無法承受的。
此外,傳統(tǒng)的解決訪問多數(shù)據(jù)源的方式會在數(shù)據(jù)訪問對象的層面進(jìn)行改進(jìn), 這種改進(jìn)方式一般會將數(shù)據(jù)源選擇的邏輯封裝在數(shù)據(jù)訪問對象的基類中,并要 求系統(tǒng)中的其它數(shù)據(jù)訪問對象繼承該基類,而繼承是一種比較強的依賴關(guān)系, 并且對開發(fā)人員來說,也增加了編寫代碼時的約東。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種網(wǎng)站多數(shù)據(jù)源切換方法和裝置, 以解決現(xiàn)有的網(wǎng)站數(shù)據(jù)庫連接管理造成資源浪費的問題。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的
本發(fā)明提供了 一種網(wǎng)站多數(shù)據(jù)源切換方法,該方法包括以下步驟
A、 對請求參數(shù)與數(shù)據(jù)源標(biāo)識之間的映射關(guān)系進(jìn)行查找,獲取與訪問請求 中的請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識;
B、 對所述訪問請求的上下文進(jìn)行初始化,并將獲取的數(shù)據(jù)源標(biāo)識寫入初 始化的上下文中;
C、 根據(jù)獲取的數(shù)據(jù)源標(biāo)識將訪問切換到相應(yīng)的數(shù)據(jù)庫,并執(zhí)行對所述數(shù) 據(jù)庫的訪問。
所述步驟C包括
Cl、調(diào)用數(shù)據(jù)源切換組件從所述上下文中獲取所述數(shù)據(jù)源標(biāo)識,并根據(jù)所 述數(shù)據(jù)源標(biāo)識從切換策略獲取對應(yīng)的數(shù)據(jù)庫服務(wù)器的連接池;
C2、從所述數(shù)據(jù)庫服務(wù)器的連接池中獲取數(shù)據(jù)庫連接,將訪問切換到相應(yīng) 的數(shù)據(jù)庫,并執(zhí)行對所述數(shù)據(jù)庫的訪問。
所述步驟A之前進(jìn)一步包括:為不同的數(shù)據(jù)庫分別設(shè)置不同的數(shù)據(jù)源標(biāo)識,并建立所述請求參數(shù)與所述數(shù)據(jù)源標(biāo)識之間的映射關(guān)系。
通過攔截器的方式,采用攔截器組件攔截所述訪問請求。
該方法進(jìn)一步包括根據(jù)所述切換策略,訪問需要在數(shù)據(jù)庫服務(wù)器間進(jìn)行 切換時,根據(jù)請求參數(shù)與數(shù)據(jù)庫服務(wù)器標(biāo)識的映射關(guān)系,獲取與訪問請求中的 請求參數(shù)相對應(yīng)的數(shù)據(jù)庫服務(wù)器標(biāo)識;并根據(jù)所述數(shù)據(jù)庫服務(wù)器標(biāo)識找到對應(yīng) 的數(shù)據(jù)庫服務(wù)器的連接池,進(jìn)而從所述數(shù)據(jù)庫連接池中獲取相應(yīng)的數(shù)據(jù)庫連接, 利用獲取的數(shù)據(jù)庫連接將訪問切換到相應(yīng)的數(shù)據(jù)庫。
所述映射關(guān)系為鍵值對的數(shù)據(jù)結(jié)構(gòu)。
本發(fā)明還提供了一種網(wǎng)站多數(shù)據(jù)源切換裝置,包括數(shù)據(jù)源標(biāo)識獲取模塊、
數(shù)據(jù)源標(biāo)識傳遞模塊、多數(shù)據(jù)源切換模塊、多數(shù)據(jù)源切換策略模塊和多數(shù)據(jù)源
切換配置模塊;其中,
所述數(shù)據(jù)源標(biāo)識獲取模塊,用于根據(jù)請求參數(shù)和數(shù)據(jù)源標(biāo)識的映射關(guān)系獲 取與訪問請求中的請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識;還用于對訪問請求的上下文 進(jìn)行初始化,并將獲取的數(shù)據(jù)源標(biāo)識寫入上下文中;
數(shù)據(jù)源標(biāo)識傳遞模塊,連接所述數(shù)據(jù)源標(biāo)識獲取模塊,用于將所獲取的數(shù) 據(jù)源標(biāo)識傳遞給所述多數(shù)據(jù)切換模塊;
多數(shù)據(jù)源切換模塊,連接所述數(shù)據(jù)源標(biāo)識傳遞模塊,用于執(zhí)行數(shù)據(jù)源的實 際切換操作;
多數(shù)據(jù)源切換策略模塊,連接所述多數(shù)據(jù)源切換模塊,用于封裝請求參數(shù) 與數(shù)據(jù)源標(biāo)識的映射關(guān)系,以及數(shù)據(jù)源標(biāo)識與數(shù)據(jù)庫服務(wù)器標(biāo)識的映射關(guān)系, 供其他模塊使用;
多數(shù)據(jù)源切換配置模塊,連接所述多數(shù)據(jù)源切換模塊和所述多數(shù)據(jù)源切換 策略模塊,用于配置數(shù)據(jù)源切換模塊和多數(shù)據(jù)源切換策略模塊,供所述切換操 作使用。
所述數(shù)據(jù)源切換策略模塊是一種可插拔的結(jié)構(gòu),切換策略通過配置文件的 方式在系統(tǒng)中指定。
所述映射關(guān)系為鍵值對的數(shù)據(jù)結(jié)構(gòu)。本發(fā)明所提供的一種網(wǎng)站多數(shù)據(jù)源切換方法和裝置,對網(wǎng)站的數(shù)據(jù)源管理 時,使用集中的方式統(tǒng)一管理數(shù)據(jù)庫級別的連接使用,即在應(yīng)用程序端建立一 個大的數(shù)據(jù)庫連接池,該連接池可以為同一臺數(shù)據(jù)庫服務(wù)器上的多家網(wǎng)站提供 服務(wù)。集中式的數(shù)據(jù)庫連接管理,使得數(shù)據(jù)庫服務(wù)器上需要的數(shù)據(jù)庫連接總數(shù) 大大減少;并且可以及時地動態(tài)分配可用的數(shù)據(jù)庫資源,減少了資源的浪費。 由于不需要再為每個網(wǎng)站分別維護單獨的連接池,也提高了系統(tǒng)的可維護性, 減少了工作人員的工作量。
此外,本發(fā)明的裝置對開發(fā)人員來說是完全透明的,開發(fā)人員不需要實現(xiàn) 特定的接口,或者繼承特定的基類,這樣既減少了編寫代碼時的約束,也增加 了使用多數(shù)據(jù)源的靈活性,開發(fā)人員可以根據(jù)實際應(yīng)用的需要,通過配置選擇 是否使用多數(shù)據(jù)源,而不需要對應(yīng)用的代碼進(jìn)行修改。本發(fā)明的裝置引入的多 數(shù)據(jù)源切換策略模塊是一種可插拔的結(jié)構(gòu),切換策略可以通過配置文件的方式
在系統(tǒng)中指定;用戶可以根據(jù)實際需要定義新的切換策略,而不會對系統(tǒng)造成 影響,從而也增加了多數(shù)據(jù)源切換的靈活性。


圖l為本發(fā)明一種網(wǎng)站多數(shù)據(jù)源切換方法的流程圖; 圖2為本發(fā)明一種網(wǎng)站多數(shù)據(jù)源切換裝置的組成結(jié)構(gòu)示意圖。
具體實施例方式
下面結(jié)合具體實施例對本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)闡述。 本發(fā)明在對網(wǎng)站的數(shù)據(jù)源進(jìn)行管理時,釆用集中的方式統(tǒng)一管理數(shù)據(jù)庫級
別的連接使用,也即在應(yīng)用程序端建立一個大的數(shù)據(jù)庫連接池,使這個連接池
可以為同一臺數(shù)據(jù)庫服務(wù)器上的多家網(wǎng)站提供服務(wù)。如圖l所示,本發(fā)明所提
供的一種網(wǎng)站多數(shù)據(jù)源切換方法,主要包括以下步驟
步驟101,對請求參數(shù)與數(shù)據(jù)源標(biāo)識之間的映射關(guān)系進(jìn)行查找,獲取與訪
問請求中的請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識。用戶需要訪問網(wǎng)站時,通過客戶端向應(yīng)用服務(wù)器發(fā)送訪問請求;應(yīng)用服務(wù) 器根據(jù)訪問請求中的請求參數(shù),從請求參數(shù)與數(shù)據(jù)源標(biāo)識之間的映射關(guān)系中獲 取與該請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識。由此可以看出,本發(fā)明需要預(yù)先為數(shù)據(jù) 庫服務(wù)器中各個不同的數(shù)據(jù)庫分別設(shè)置不同的數(shù)據(jù)源標(biāo)識,并且請求參數(shù)和實 際的數(shù)據(jù)源標(biāo)識之間需要維護一個映射關(guān)系,即可以從訪問請求中獲得需要的 請求參數(shù),并將該請求參數(shù)經(jīng)過映射得到實際的數(shù)據(jù)源標(biāo)識。其中,請求參數(shù) 可以為網(wǎng)站的域名或其它可用參數(shù)。
需要指出的是,本發(fā)明可以通過攔截器的方式,采用攔截器組件攔截來自
用戶的訪問請求并從中獲取數(shù)據(jù)源標(biāo)識,攔截器的機制為JAVAEE體系中的現(xiàn)
有技術(shù),此處不再贅述。此外,本發(fā)明中映射關(guān)系的建立可以釆用一種鍵值對 的數(shù)據(jù)結(jié)構(gòu),其中,鍵為從訪問請求中獲得的請求參數(shù),值為數(shù)據(jù)源標(biāo)識。
另外,由于在應(yīng)用服務(wù)商的平臺上,有動態(tài)增加網(wǎng)站和刪除網(wǎng)站的需要, 因此本發(fā)明中請求參數(shù)與數(shù)據(jù)源標(biāo)識之間的映射關(guān)系需要支持動態(tài)更新,即請 求參數(shù)與數(shù)據(jù)源標(biāo)識之間的映射關(guān)系需要隨著網(wǎng)站的增加和刪除而動態(tài)更新。 對應(yīng)鍵值對的數(shù)據(jù)結(jié)構(gòu),本發(fā)明需要在鍵值對的數(shù)據(jù)結(jié)構(gòu)上建立映射關(guān)系的管 理機制,并且實現(xiàn)映射關(guān)系的動態(tài)更新、優(yōu)化訪問等功能。映射關(guān)系在應(yīng)用服 務(wù)器啟動時進(jìn)行初始化操作。
步驟102,對訪問請求的上下文進(jìn)行初始化,并將獲取的數(shù)據(jù)源標(biāo)識寫入 初始化的上下文中。
應(yīng)用服務(wù)器在獲取數(shù)據(jù)源標(biāo)識后,需要將數(shù)據(jù)源標(biāo)識傳遞給數(shù)據(jù)庫驅(qū)動程 序的連接對象。通常,參數(shù)的傳遞需要影響方法的簽名,主要是影響方法的參 數(shù)列表,這里的參數(shù)當(dāng)然包括數(shù)據(jù)源標(biāo)識。程序開發(fā)一般會使用分層的結(jié)構(gòu), 如表示層、業(yè)務(wù)層和持久層等。如果直接在方法的簽名中增加參數(shù),則上述分
層結(jié)構(gòu)中的多個層次的代碼都需要進(jìn)行修改;而且同一層代碼中的多個方法如 果都需要數(shù)據(jù)訪問操作的話,那么多個方法都需要添加相關(guān)的參數(shù),這種方式 會嚴(yán)重影響系統(tǒng)的可維護性。
因此,在本發(fā)明中采用一種上下文機制,所謂上下文是指運行時的環(huán)境,上下文的作用范圍是線程級別的,系統(tǒng)中每個訪問請求都被應(yīng)用服務(wù)器上的一 個線程所處理,所以每個訪問請求都有屬于自己的上下文,上下文在攔截器組 件中進(jìn)行初始化,并在上下文中設(shè)置所獲取的數(shù)據(jù)源標(biāo)識。在處理一個訪問請 求的方法調(diào)用堆棧中都可以得到當(dāng)前線程的上下文,不需要在多個方法簽名中 顯示地傳遞數(shù)據(jù)源標(biāo)識等系統(tǒng)參數(shù)。由此可以看出,釆用上下文機制使系統(tǒng)的 可維護性得到提高。進(jìn)一步的,如果有其它系統(tǒng)環(huán)境參數(shù),也可以在上下文中 擴展。
步驟103,調(diào)用數(shù)據(jù)源切換組件從上下文中獲取數(shù)據(jù)源標(biāo)識,并根據(jù)數(shù)據(jù) 源標(biāo)識從切換策略獲取對應(yīng)的數(shù)據(jù)庫服務(wù)器的連接池。
本發(fā)明中,可以根據(jù)實際需要設(shè)置不同的切換策略,并且,切換策略可以 被動態(tài)的維護。本發(fā)明既可以支持訪問在同一個數(shù)據(jù)庫服務(wù)器的多個數(shù)據(jù)庫之 間進(jìn)行切換,也可以支持訪問在不同數(shù)據(jù)庫服務(wù)器的多個數(shù)據(jù)庫之間進(jìn)行切換, 后者為本發(fā)明可選的較佳實施例,可以根據(jù)應(yīng)用場景進(jìn)行配置;即釆用該方法 的系統(tǒng)可以有多個數(shù)據(jù)庫服務(wù)器,每個數(shù)據(jù)庫服務(wù)器又可以有多個數(shù)據(jù)庫。系 統(tǒng)運行時可以根據(jù)配置的切換策略決定是否在多個數(shù)據(jù)庫服務(wù)器間進(jìn)行切換, 且系統(tǒng)為每個數(shù)據(jù)庫服務(wù)器進(jìn)行獨立的連接池管理。根據(jù)切換策略,在需要進(jìn) 行數(shù)據(jù)庫服務(wù)器間的切換時,根據(jù)上下文中的數(shù)據(jù)源標(biāo)識得到當(dāng)前網(wǎng)站對應(yīng)的 數(shù)據(jù)庫服務(wù)器標(biāo)識,通過該數(shù)據(jù)庫服務(wù)器標(biāo)識可以從系統(tǒng)的容器中得到對應(yīng)數(shù) 據(jù)庫服務(wù)器的連接池,從而達(dá)到數(shù)據(jù)庫服務(wù)器級別的切換。
相應(yīng)的,本發(fā)明中需要維護數(shù)據(jù)源標(biāo)識和數(shù)據(jù)庫服務(wù)器標(biāo)識的映射關(guān)系, 映射關(guān)系的建立使用一種鍵值對的數(shù)據(jù)結(jié)構(gòu),其中鍵為數(shù)據(jù)源標(biāo)識,值為數(shù)據(jù) 庫服務(wù)器標(biāo)識。在此數(shù)據(jù)結(jié)構(gòu)上建立映射關(guān)系的管理機制,并且實現(xiàn)映射關(guān)系 的動態(tài)更新和優(yōu)化訪問等功能。進(jìn)行數(shù)據(jù)庫服務(wù)器間的切換時,根據(jù)數(shù)據(jù)源標(biāo) 識與數(shù)據(jù)庫服務(wù)器標(biāo)識的映射關(guān)系,獲取與數(shù)據(jù)源標(biāo)識相對應(yīng)的數(shù)據(jù)庫服務(wù)器
標(biāo)識;并根據(jù)數(shù)據(jù)庫服務(wù)器標(biāo)識找到對應(yīng)的數(shù)據(jù)庫服務(wù)器的連接池,進(jìn)而從數(shù)
據(jù)庫服務(wù)器的連接池中獲取相應(yīng)數(shù)據(jù)庫連接,利用獲取的數(shù)據(jù)庫連接將訪問切 換到相應(yīng)的數(shù)據(jù)庫。步驟104,從數(shù)據(jù)庫服務(wù)器的連接池中獲取數(shù)據(jù)庫連接,將訪問切換到相 應(yīng)的數(shù)據(jù)庫,并執(zhí)行對數(shù)據(jù)庫的訪問。
在從上下文中獲取數(shù)據(jù)源標(biāo)識,并得到訪問請求所對應(yīng)的數(shù)據(jù)庫服務(wù)器的 連接池后,應(yīng)用程序?qū)⒃L問切換到相應(yīng)的數(shù)據(jù)源,并執(zhí)行對數(shù)據(jù)源的訪問。數(shù) 據(jù)源切換組件在和持久層的交互中,承擔(dān)連接提供者的角色,它需要為持久層
提供到目標(biāo)數(shù)據(jù)源的連接。數(shù)據(jù)源切換組件實現(xiàn)了 JAVAEE技術(shù)體系中標(biāo)準(zhǔn)的 數(shù)據(jù)源接口,它可以在所有符合標(biāo)準(zhǔn)的JAVA應(yīng)用服務(wù)器中使用。本發(fā)明中, 數(shù)據(jù)源切換組件和數(shù)據(jù)訪問框架沒有強依賴關(guān)系。數(shù)據(jù)源切換組件是數(shù)據(jù)訪問 對象的協(xié)作者,它不依賴于具體的數(shù)據(jù)訪問框架。數(shù)據(jù)訪問框架只依賴于連接 提供者的接口定義,可以根據(jù)實際需要決定是否使用多數(shù)據(jù)源切換組件。數(shù)據(jù) 訪問框架通過可擴展標(biāo)識語言(XML, Extensible Markup Language)配置文件 維護與數(shù)據(jù)源切換組件的協(xié)作關(guān)系。當(dāng)數(shù)據(jù)源切換組件從底層數(shù)據(jù)庫服務(wù)器的 連接池中得到數(shù)據(jù)庫連接時,重置該數(shù)據(jù)庫連接對應(yīng)的數(shù)據(jù)源,實際上是將要 使用的數(shù)據(jù)源標(biāo)識通過數(shù)據(jù)庫連接告知數(shù)據(jù)庫服務(wù)器,相當(dāng)于在數(shù)據(jù)庫級別執(zhí) 行了 一條切換數(shù)據(jù)庫的結(jié)構(gòu)化查詢語句(SQL, Structured Query Language )。完 成數(shù)據(jù)源切換后,數(shù)據(jù)源切換組件將數(shù)據(jù)庫連接交給應(yīng)用程序的持久層。
以上步驟完成了多數(shù)據(jù)源的切換,實際業(yè)務(wù)的數(shù)據(jù)訪問邏輯完全不需要修 改,也即數(shù)據(jù)源的切換對應(yīng)用程序是完全透明的。應(yīng)用開發(fā)人員可以按照普通 應(yīng)用的方式進(jìn)行開發(fā),在需要多數(shù)據(jù)源的場景下,配置啟用數(shù)據(jù)源切換組件。 持久層完成數(shù)據(jù)訪問后,將連接歸還給集中式的連接池,該連接可以繼續(xù)用于 其它數(shù)據(jù)源的訪問,從而達(dá)到較高的效率。
為實現(xiàn)上述的網(wǎng)站多數(shù)據(jù)源切換方法,本發(fā)明還提供了一種網(wǎng)站多數(shù)據(jù)源 切換裝置,如圖2所示,該裝置包括數(shù)據(jù)源標(biāo)識獲取模塊IO、數(shù)據(jù)源標(biāo)識傳 遞模塊20、多數(shù)據(jù)源切換模塊30、多數(shù)據(jù)源切換策略模塊40、多數(shù)據(jù)源切換 配置模塊50。
其中,數(shù)據(jù)源標(biāo)識獲取模塊IO,用于攔截用戶的訪問請求,根據(jù)請求參數(shù) 和數(shù)據(jù)源標(biāo)識的映射關(guān)系獲取與訪問請求中的請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識;完成線程級別上下文的初始化,并將數(shù)據(jù)源標(biāo)識等系統(tǒng)參數(shù)置入上下文中,以 供其它模塊使用。
數(shù)據(jù)源標(biāo)識傳遞模塊20,連接數(shù)據(jù)源標(biāo)識獲取模塊10,用于負(fù)責(zé)上下文信 息的傳遞工作,傳遞給多數(shù)據(jù)源切換模塊30。由于釆用上下文機制,數(shù)據(jù)源標(biāo)
識傳遞模塊20在增加系統(tǒng)參數(shù)時不需要顯示地修改應(yīng)用程序的方法簽名,可提
高系統(tǒng)的可維護性。
多數(shù)據(jù)源切換模塊30,連接數(shù)據(jù)源標(biāo)識傳遞模塊20,用于執(zhí)行數(shù)據(jù)源的實 際切換操作,支持?jǐn)?shù)據(jù)庫服務(wù)器級別和數(shù)據(jù)庫級別的切換。可通過配置系統(tǒng)進(jìn) 行維護。
多數(shù)據(jù)源切換策略模塊40,連接多數(shù)據(jù)源切換模塊30,用于封裝數(shù)據(jù)源標(biāo) 識與請求參數(shù)的映射關(guān)系,以及數(shù)據(jù)源標(biāo)識與數(shù)據(jù)庫服務(wù)器標(biāo)識的映射關(guān)系, 可以根據(jù)實際情況的需要定制并擴展不同的映射規(guī)則。
多數(shù)據(jù)源切換配置模塊50,連接多數(shù)據(jù)源切換模塊30和多數(shù)據(jù)源切換策 略模塊40,用于配置數(shù)據(jù)源切換模塊30和多數(shù)據(jù)源切換策略模塊40,供切換 搡作使用,以滿足不同應(yīng)用場景的需要。
綜上所述,本發(fā)明所提供的一種網(wǎng)站多數(shù)據(jù)源切換方法和裝置,對網(wǎng)站的 數(shù)據(jù)源管理時,使用集中的方式統(tǒng)一管理數(shù)據(jù)庫級別的連接。集中式的數(shù)據(jù)庫 連接管理,使得數(shù)據(jù)庫服務(wù)器上需要的數(shù)據(jù)庫連接總數(shù)大大減少;并且可以及 時地動態(tài)分配可用的數(shù)據(jù)庫資源,減少了資源的浪費。另外,由于不需要再為 每個網(wǎng)站分別維護單獨的連接池,也提高了系統(tǒng)的可維護性,減少了工作人員 的工作量。
此外,本發(fā)明的裝置對開發(fā)人員來說是完全透明的,開發(fā)人員不需要實現(xiàn) 特定的接口,或者繼承特定的基類,這樣既減少了編寫代碼時的約東,也增加 了使用多數(shù)據(jù)源的靈活性,開發(fā)人員可以根據(jù)實際應(yīng)用的需要,通過配置選擇 是否使用多數(shù)據(jù)源,而不需要對應(yīng)用的代碼進(jìn)行修改。本發(fā)明的裝置引入的多 數(shù)據(jù)源切換策略模塊是一種可插拔的結(jié)構(gòu),切換策略可以通過配置文件的方式 在系統(tǒng)中指定;用戶可以根據(jù)實際需要定義新的切換策略,通過配置文件增加配置信息即可使用,而不會對系統(tǒng)造成影響,從而也增加了多數(shù)據(jù)源切換的靈 活性。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1、一種網(wǎng)站多數(shù)據(jù)源切換方法,其特征在于,該方法包括以下步驟A、對請求參數(shù)與數(shù)據(jù)源標(biāo)識之間的映射關(guān)系進(jìn)行查找,獲取與訪問請求中的請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識;B、對所述訪問請求的上下文進(jìn)行初始化,并將獲取的數(shù)據(jù)源標(biāo)識寫入初始化的上下文中;C、根據(jù)獲取的數(shù)據(jù)源標(biāo)識將訪問切換到相應(yīng)的數(shù)據(jù)庫,并執(zhí)行對所述數(shù)據(jù)庫的訪問。
2、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述步驟C包括Cl、調(diào)用數(shù)據(jù)源切換組件從所述上下文中獲取所述數(shù)據(jù)源標(biāo)識,并根據(jù)所 述數(shù)據(jù)源標(biāo)識從切換策略獲取對應(yīng)的數(shù)據(jù)庫服務(wù)器的連接池;C2、從所述數(shù)據(jù)庫服務(wù)器的連接池中獲取數(shù)據(jù)庫連接,將訪問切換到相應(yīng) 的數(shù)據(jù)庫,并執(zhí)行對所述數(shù)據(jù)庫的訪問。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A之前進(jìn)一步包 括為不同的數(shù)據(jù)庫分別設(shè)置不同的數(shù)據(jù)源標(biāo)識,并建立所述請求參數(shù)與所述 數(shù)據(jù)源標(biāo)識之間的映射關(guān)系。
4、 根據(jù)權(quán)利要求l所述的方法,其特征在于,通過攔截器的方式,釆用攔 截器組件攔截所述訪問請求。
5、 根據(jù)權(quán)利要求l所述的方法,其特征在于,該方法進(jìn)一步包括根據(jù)所 述切換策略,訪問需要在數(shù)據(jù)庫服務(wù)器間進(jìn)行切換時,根據(jù)請求參數(shù)與數(shù)據(jù)庫 服務(wù)器標(biāo)識的映射關(guān)系,獲取與訪問請求中的請求參數(shù)相對應(yīng)的數(shù)據(jù)庫服務(wù)器 標(biāo)識;并根據(jù)所述數(shù)據(jù)庫服務(wù)器標(biāo)識找到對應(yīng)的數(shù)據(jù)庫服務(wù)器的連接池,進(jìn)而 從所述數(shù)據(jù)庫連接池中獲取相應(yīng)的數(shù)據(jù)庫連接,利用獲取的數(shù)據(jù)庫連接將訪問 切換到相應(yīng)的數(shù)據(jù)庫。
6、 根據(jù)權(quán)利要求1至3中任一所述的方法,其特征在于,所述映射關(guān)系為 鍵值對的數(shù)據(jù)結(jié)構(gòu)。
7、 一種網(wǎng)站多數(shù)據(jù)源切換裝置,其特征在于,包括數(shù)據(jù)源標(biāo)識獲取模塊、 數(shù)據(jù)源標(biāo)識傳遞模塊、多數(shù)據(jù)源切換模塊、多數(shù)據(jù)源切換策略模塊和多數(shù)據(jù)源 切換配置模塊;其中,所述數(shù)據(jù)源標(biāo)識獲取模塊,用于根據(jù)請求參數(shù)和數(shù)據(jù)源標(biāo)識的映射關(guān)系獲取與訪問請求中的請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識;還用于對訪問請求的上下文 進(jìn)行初始化,并將獲取的數(shù)據(jù)源標(biāo)識寫入上下文中;數(shù)據(jù)源標(biāo)識傳遞模塊,連接所述數(shù)據(jù)源標(biāo)識獲取模塊,用于將所獲取的數(shù) 據(jù)源標(biāo)識傳遞給所述多數(shù)據(jù)切換模塊;多數(shù)據(jù)源切換模塊,連接所述數(shù)據(jù)源標(biāo)識傳遞模塊,用于執(zhí)行數(shù)據(jù)源的實 際切換操作;多數(shù)據(jù)源切換策略模塊,連接所述多數(shù)據(jù)源切換模塊,用于封裝請求參數(shù) 與數(shù)據(jù)源標(biāo)識的映射關(guān)系,以及數(shù)據(jù)源標(biāo)識與數(shù)據(jù)庫服務(wù)器標(biāo)識的映射關(guān)系, 供其他模塊使用;多數(shù)據(jù)源切換配置模塊,連接所述多數(shù)據(jù)源切換模塊和所述多數(shù)據(jù)源切換 策略模塊,用于配置數(shù)據(jù)源切換模塊和多數(shù)據(jù)源切換策略模塊,供所述切換操 作使用。
8、 根據(jù)權(quán)利要求7所述的網(wǎng)站多數(shù)據(jù)源切換裝置,其特征在于,所述數(shù)據(jù) 源切換策略模塊是一種可插拔的結(jié)構(gòu),切換策略通過配置文件的方式在系統(tǒng)中 指定。
9、 根據(jù)權(quán)利要求7所述的網(wǎng)站多數(shù)據(jù)源切換裝置,其特征在于,所述映射 關(guān)系為鍵值對的數(shù)據(jù)結(jié)構(gòu)。
全文摘要
本發(fā)明公開了一種網(wǎng)站多數(shù)據(jù)源切換方法,包括對請求參數(shù)與數(shù)據(jù)源標(biāo)識之間的映射關(guān)系進(jìn)行查找,獲取與訪問請求中的請求參數(shù)相對應(yīng)的數(shù)據(jù)源標(biāo)識;對訪問請求的上下文進(jìn)行初始化,并將獲取的數(shù)據(jù)源標(biāo)識寫入上下文中;調(diào)用數(shù)據(jù)源切換組件從上下文中獲取數(shù)據(jù)源標(biāo)識,并根據(jù)數(shù)據(jù)源標(biāo)識從切換策略中獲取對應(yīng)的數(shù)據(jù)庫服務(wù)器的連接池;從數(shù)據(jù)庫服務(wù)器的連接池中獲取數(shù)據(jù)庫連接,將訪問切換到相應(yīng)的數(shù)據(jù)庫,并執(zhí)行對數(shù)據(jù)庫的訪問。本發(fā)明還公開了一種網(wǎng)站多數(shù)據(jù)源切換裝置,通過使用集中式的數(shù)據(jù)源連接管理來分配數(shù)據(jù)源資源,使得數(shù)據(jù)庫服務(wù)器上需要的數(shù)據(jù)庫連接總數(shù)大大減少;并且可以及時地動態(tài)分配可用的數(shù)據(jù)庫資源,減少了資源的浪費。
文檔編號G06F17/30GK101408899SQ20081022697
公開日2009年4月15日 申請日期2008年11月21日 優(yōu)先權(quán)日2008年11月21日
發(fā)明者雨 張, 趙寶剛 申請人:北京中企開源信息技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1