專利名稱:一種多數(shù)據(jù)庫的連接方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫連接技術(shù)領(lǐng)域,特別是涉及一種多數(shù)據(jù)庫的連接方法及裝置。
背景技術(shù):
在使用多數(shù)據(jù)庫作為數(shù)據(jù)提供者的情況下,普通數(shù)據(jù)庫連接池只能同時(shí)使用一個(gè)數(shù)據(jù)庫作為連接提供者,如果當(dāng)前數(shù)據(jù)庫出現(xiàn)異常,需要停止應(yīng)用直至數(shù)據(jù)庫恢復(fù)。現(xiàn)有的解決方案中,有通過設(shè)置主用數(shù)據(jù)庫和備用數(shù)據(jù)庫來解決上述問題的方案,備用數(shù)據(jù)庫的主要作用是用于數(shù)據(jù)備份,雖然能夠保證數(shù)據(jù)的不丟失,但是在主用數(shù)據(jù)庫出現(xiàn)問題時(shí),卻很難保證系統(tǒng)繼續(xù)正常運(yùn)行。如果系統(tǒng)要在短期內(nèi)恢復(fù)訪問,需要手動(dòng)修改數(shù)據(jù)庫配置,調(diào) 用備用數(shù)據(jù)庫,并重啟服務(wù)。當(dāng)主用數(shù)據(jù)庫恢復(fù)正常以后,還要再次修改配置恢復(fù)對(duì)主用數(shù)據(jù)庫的訪問,整個(gè)過程會(huì)造成整個(gè)系統(tǒng)的不穩(wěn)定甚至停用。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種多數(shù)據(jù)庫的連接方法及裝置,用以解決現(xiàn)有技術(shù)中數(shù)據(jù)庫出現(xiàn)問題時(shí)造成的系統(tǒng)不穩(wěn)定甚至停用的問題。為解決上述技術(shù)問題,一方面,本發(fā)明提供一種多數(shù)據(jù)庫的連接方法,包括啟動(dòng)時(shí),加載配置中的全部數(shù)據(jù)庫連接池,以及,在所有數(shù)據(jù)庫連接池中,設(shè)置主用數(shù)據(jù)庫對(duì)應(yīng)的連接池為當(dāng)前使用連接池,設(shè)置剩余的備用數(shù)據(jù)庫對(duì)應(yīng)的連接池為備用連接池;接到調(diào)用者發(fā)起的數(shù)據(jù)庫資源請(qǐng)求時(shí),判斷主用數(shù)據(jù)庫是否能夠連接,如果是,則進(jìn)行連接,如果否,則進(jìn)行數(shù)據(jù)庫切換,在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接;使調(diào)用者獲得連接。進(jìn)一步,啟動(dòng)時(shí),還啟動(dòng)數(shù)據(jù)狀態(tài)監(jiān)視器,用于對(duì)主用數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取主用數(shù)據(jù)庫的健康參數(shù)。進(jìn)一步,判斷數(shù)據(jù)庫是否能夠連接,具體包括以下步驟首先判斷主用數(shù)據(jù)庫是否已經(jīng)停止,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,其次判斷主用數(shù)據(jù)庫對(duì)應(yīng)的當(dāng)前使用連接池是否已經(jīng)連接滿,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,最后判斷主用數(shù)據(jù)庫的健康參數(shù)是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,則判定主用數(shù)據(jù)庫可以連接。進(jìn)一步,在調(diào)用者發(fā)起數(shù)據(jù)庫資源請(qǐng)求之后,對(duì)進(jìn)入獲取連接的線程進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器達(dá)到預(yù)先設(shè)定的計(jì)數(shù)閾值,調(diào)用者還沒有獲得連接時(shí),判定主用數(shù)據(jù)庫無法連接。進(jìn)一步,在調(diào)用者獲得連接之后,還包括數(shù)據(jù)狀態(tài)監(jiān)視器對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取當(dāng)前連接數(shù)據(jù)庫的健康參數(shù),并判斷是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則修改當(dāng)前連接的數(shù)據(jù)庫狀態(tài)為不可連接,進(jìn)行數(shù)據(jù)庫切換;如果否,則保持連接。進(jìn)一步,數(shù)據(jù)狀態(tài)監(jiān)視器對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),具體包括
判斷當(dāng)前連接的數(shù)據(jù)庫執(zhí)行讀寫操作是否出現(xiàn)異常,如果是,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)減I ;如果否,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加2 ;當(dāng)前連接的數(shù)據(jù)庫出現(xiàn)壞連接,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加4。另一方面,本發(fā)明還提供一種多數(shù)據(jù)庫的連接裝置,包括啟動(dòng)配置模塊,用于啟動(dòng)時(shí),加載配置中的全部數(shù)據(jù)庫連接池,以及,在所有數(shù)據(jù)庫連接池中,設(shè)置主用數(shù)據(jù)庫對(duì)應(yīng)的連接池為當(dāng)前使用連接池,設(shè)置剩余的備用數(shù)據(jù)庫對(duì)應(yīng)的連接池為備用連接池;連接切換模塊,用于接到調(diào)用者發(fā)起的數(shù)據(jù)庫資源請(qǐng)求時(shí),判斷主用數(shù)據(jù)庫是否能夠連接,如果是,則進(jìn)行連接,如果否,則進(jìn)行數(shù)據(jù)庫切換,在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接;使調(diào)用者獲得連接。進(jìn)一步,所述裝置還包括 數(shù)據(jù)狀態(tài)監(jiān)視器,用于啟動(dòng)后對(duì)主用數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取主用數(shù)據(jù)庫的健康參數(shù);所述連接切換模塊首先判斷主用數(shù)據(jù)庫是否已經(jīng)停止,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,其次判斷主用數(shù)據(jù)庫對(duì)應(yīng)的當(dāng)前使用連接池是否已經(jīng)連接滿,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,最后判斷主用數(shù)據(jù)庫的健康參數(shù)是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,則判定主用數(shù)據(jù)庫可以連接;所述連接切換模塊在調(diào)用者發(fā)起數(shù)據(jù)庫資源請(qǐng)求之后,對(duì)進(jìn)入獲取連接的線程進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器達(dá)到預(yù)先設(shè)定的計(jì)數(shù)閾值,調(diào)用者還沒有獲得連接時(shí),判定主用數(shù)據(jù)庫無法連接。進(jìn)一步,所述數(shù)據(jù)狀態(tài)監(jiān)視器還用于對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取當(dāng)前連接數(shù)據(jù)庫的健康參數(shù),并判斷是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則修改當(dāng)前連接的數(shù)據(jù)庫狀態(tài)為不可連接,進(jìn)行數(shù)據(jù)庫切換;如果否,則保持連接。進(jìn)一步,所述數(shù)據(jù)狀態(tài)監(jiān)視器判斷當(dāng)前連接的數(shù)據(jù)庫執(zhí)行讀寫操作是否出現(xiàn)異常,如果是,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)減I ;如果否,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加2 ;當(dāng)前連接的數(shù)據(jù)庫出現(xiàn)壞連接,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加4。本發(fā)明有益效果如下本發(fā)明可以實(shí)現(xiàn)當(dāng)數(shù)據(jù)庫群中的某數(shù)據(jù)庫無法正常響應(yīng)時(shí),自動(dòng)選擇其他的有效數(shù)據(jù)庫作為數(shù)據(jù)庫的連接提供者,以提高應(yīng)用系統(tǒng)的可靠性,提高了系統(tǒng)的穩(wěn)定性,避免了數(shù)據(jù)庫停用。
圖I是本發(fā)明實(shí)施例中一種多數(shù)據(jù)庫的連接方法的流程圖;圖2是本發(fā)明實(shí)施例中一種多數(shù)據(jù)庫的連接裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式以下結(jié)合附圖以及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。
如圖I所示,本發(fā)明實(shí)施例涉及一種多數(shù)據(jù)庫的連接方法,包括步驟S101,系統(tǒng)啟動(dòng)時(shí),加載配置中的全部數(shù)據(jù)庫連接池,S卩,將系統(tǒng)中的所有數(shù)據(jù)庫在啟動(dòng)時(shí)都加載進(jìn)來。另外,還需要在所有數(shù)據(jù)庫連接池中,設(shè)置主用數(shù)據(jù)庫對(duì)應(yīng)的連接池為當(dāng)前使用連接池,設(shè)置剩余的備用數(shù)據(jù)庫對(duì)應(yīng)的連接池為備用連接池。本步驟中,在系統(tǒng)啟動(dòng)時(shí),還啟動(dòng)數(shù)據(jù)狀態(tài)監(jiān)視器,用于對(duì)主用數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取主用數(shù)據(jù)庫的健康參數(shù)。步驟S102,系統(tǒng)接到調(diào)用者發(fā)起的數(shù)據(jù)庫資源請(qǐng)求時(shí),判斷主用數(shù)據(jù)庫是否能夠連接,如果是,則進(jìn)行連接,如果否,則進(jìn)行數(shù)據(jù)庫切換,在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接;調(diào)用者獲得連接。本步驟中,判斷數(shù)據(jù)庫是否能夠連接,具體包括以下步驟·
首先判斷主用數(shù)據(jù)庫是否已經(jīng)停止,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,其次判斷主用數(shù)據(jù)庫對(duì)應(yīng)的當(dāng)前使用連接池是否已經(jīng)連接滿,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,最后判斷主用數(shù)據(jù)庫的健康參數(shù)是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,則判定主用數(shù)據(jù)庫可以連接。在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接,可以在備用數(shù)據(jù)庫中隨機(jī)選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接,也可以根據(jù)預(yù)先設(shè)定的優(yōu)先級(jí)或選取順序進(jìn)行選擇。另外,在調(diào)用者發(fā)起數(shù)據(jù)庫資源請(qǐng)求之后,對(duì)進(jìn)入獲取連接的線程進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器達(dá)到預(yù)先設(shè)定的計(jì)數(shù)閾值,調(diào)用者依然沒有獲得連接時(shí),則直接返回空值,表示主用數(shù)據(jù)庫無法正常提供連接。這樣做的好處在于當(dāng)存在η個(gè)數(shù)據(jù)庫時(shí),所造成的影響僅為I/η,降低了因?yàn)閿?shù)據(jù)庫故障造成的不利影響。對(duì)于當(dāng)前連接的數(shù)據(jù)庫是備用數(shù)據(jù)庫時(shí),調(diào)用者對(duì)當(dāng)前連接的數(shù)據(jù)庫只能進(jìn)行只讀操作,如果當(dāng)前進(jìn)行的操作不是只讀操作,則無法連接備用數(shù)據(jù)庫。當(dāng)主用數(shù)據(jù)庫出現(xiàn)問題時(shí),其他備用數(shù)據(jù)庫可以正常提供服務(wù),不影響正常訪問,為恢復(fù)主用數(shù)據(jù)庫爭(zhēng)取時(shí)間。當(dāng)主用數(shù)據(jù)庫的負(fù)載過大時(shí),可以由其他備用數(shù)據(jù)庫提供查詢服務(wù),這樣可以減小主用數(shù)據(jù)庫的負(fù)載壓力,當(dāng)主用數(shù)據(jù)庫壓力下降時(shí),當(dāng)前連接的數(shù)據(jù)庫自動(dòng)恢復(fù)為主用數(shù)據(jù)庫。步驟S103,在調(diào)用者獲得連接之后,數(shù)據(jù)狀態(tài)監(jiān)視器對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取當(dāng)前連接數(shù)據(jù)庫的健康參數(shù),并判斷是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則修改當(dāng)前連接的數(shù)據(jù)庫狀態(tài)為不可連接,進(jìn)行數(shù)據(jù)庫切換;如果否,則保持連接。數(shù)據(jù)狀態(tài)監(jiān)視器對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),具體包括判斷當(dāng)前連接的數(shù)據(jù)庫執(zhí)行讀寫操作是否出現(xiàn)異常,如果是,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)減I ;如果否,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加2。當(dāng)前連接的數(shù)據(jù)庫出現(xiàn)壞連接,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加4 ;其中,壞連接是指無效連接,調(diào)用者無法訪問數(shù)據(jù)庫。步驟S104,調(diào)用者釋放連接。本步驟中,調(diào)用者釋放連接之后,判斷當(dāng)前連接的數(shù)據(jù)庫狀態(tài)是否為可連接狀態(tài),如果是,則將該數(shù)據(jù)庫放回其對(duì)應(yīng)的連接池中;如果否,則銷毀數(shù)據(jù)庫與連接池的連接。另外,本發(fā)明還涉及一種實(shí)現(xiàn)上述方法的多數(shù)據(jù)庫的連接裝置,其包括
啟動(dòng)配置模塊201,用于啟動(dòng)時(shí),加載配置中的全部數(shù)據(jù)庫連接池,以及,在所有數(shù)據(jù)庫連接池中,設(shè)置主用數(shù)據(jù)庫對(duì)應(yīng)的連接池為當(dāng)前使用連接池,設(shè)置剩余的備用數(shù)據(jù)庫對(duì)應(yīng)的連接池為備用連接池;連接切換模塊202,用于接到調(diào)用者發(fā)起的數(shù)據(jù)庫資源請(qǐng)求時(shí),判斷主用數(shù)據(jù)庫是否能夠連接,如果是,則進(jìn)行連接,如果否,則進(jìn)行數(shù)據(jù)庫切換,在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接;使調(diào)用者獲得連接。該裝置還包括數(shù)據(jù)狀態(tài)監(jiān)視器203,用于啟動(dòng)后對(duì)主用數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取主用數(shù)據(jù)庫的健康參數(shù);連接切換模塊202首先判斷主用數(shù)據(jù)庫是否已經(jīng)停止,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,其次判斷主用數(shù)據(jù)庫對(duì)應(yīng)的當(dāng)前使用連接池是否已經(jīng)連接滿,如果 是,則判定主用數(shù)據(jù)庫無法連接;如果否,最后判斷主用數(shù)據(jù)庫的健康參數(shù)是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,則判定主用數(shù)據(jù)庫可以連接;連接切換模塊202在調(diào)用者發(fā)起數(shù)據(jù)庫資源請(qǐng)求之后,對(duì)進(jìn)入獲取連接的線程進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器達(dá)到預(yù)先設(shè)定的計(jì)數(shù)閾值,調(diào)用者還沒有獲得連接時(shí),判定主用數(shù)據(jù)庫無法連接。數(shù)據(jù)狀態(tài)監(jiān)視器203還用于對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取當(dāng)前連接數(shù)據(jù)庫的健康參數(shù),并判斷是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則修改當(dāng)前連接的數(shù)據(jù)庫狀態(tài)為不可連接,進(jìn)行數(shù)據(jù)庫切換;如果否,則保持連接。數(shù)據(jù)狀態(tài)監(jiān)視器203判斷當(dāng)前連接的數(shù)據(jù)庫執(zhí)行讀寫操作是否出現(xiàn)異常,如果是,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)減I ;如果否,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加2 ;當(dāng)前連接的數(shù)據(jù)庫出現(xiàn)壞連接,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加4。本發(fā)明可以實(shí)現(xiàn)當(dāng)數(shù)據(jù)庫群中的某數(shù)據(jù)庫無法正常響應(yīng)時(shí),自動(dòng)選擇其他的有效數(shù)據(jù)庫作為數(shù)據(jù)庫的連接提供者,以提高應(yīng)用系統(tǒng)的可靠性,提高了系統(tǒng)的穩(wěn)定性,避免了停用。盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域的技術(shù)人員將意識(shí)到各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實(shí)施例。
權(quán)利要求
1.一種多數(shù)據(jù)庫的連接方法,其特征在于,包括 啟動(dòng)時(shí),加載配置中的全部數(shù)據(jù)庫連接池,以及,在所有數(shù)據(jù)庫連接池中,設(shè)置主用數(shù)據(jù)庫對(duì)應(yīng)的連接池為當(dāng)前使用連接池,設(shè)置剩余的備用數(shù)據(jù)庫對(duì)應(yīng)的連接池為備用連接池; 接到調(diào)用者發(fā)起的數(shù)據(jù)庫資源請(qǐng)求時(shí),判斷主用數(shù)據(jù)庫是否能夠連接,如果是,則進(jìn)行連接,如果否,則進(jìn)行數(shù)據(jù)庫切換,在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接;使調(diào)用者獲得連接。
2.如權(quán)利要求I所述的多數(shù)據(jù)庫的連接方法,其特征在于,啟動(dòng)時(shí),還啟動(dòng)數(shù)據(jù)狀態(tài)監(jiān)視器,用于對(duì)主用數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取主用數(shù)據(jù)庫的健康參數(shù)。
3.如權(quán)利要求2所述的多數(shù)據(jù)庫的連接方法,其特征在于,判斷數(shù)據(jù)庫是否能夠連接,具體包括以下步驟 首先判斷主用數(shù)據(jù)庫是否已經(jīng)停止,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,其次判斷主用數(shù)據(jù)庫對(duì)應(yīng)的當(dāng)前使用連接池是否已經(jīng)連接滿,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,最后判斷主用數(shù)據(jù)庫的健康參數(shù)是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,則判定主用數(shù)據(jù)庫可以連接。
4.如權(quán)利要求I或3所述的多數(shù)據(jù)庫的連接方法,其特征在于,在調(diào)用者發(fā)起數(shù)據(jù)庫資源請(qǐng)求之后,對(duì)進(jìn)入獲取連接的線程進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器達(dá)到預(yù)先設(shè)定的計(jì)數(shù)閾值,調(diào)用者還沒有獲得連接時(shí),判定主用數(shù)據(jù)庫無法連接。
5.如權(quán)利要求3所述的多數(shù)據(jù)庫的連接方法,其特征在于,在調(diào)用者獲得連接之后,還包括 數(shù)據(jù)狀態(tài)監(jiān)視器對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取當(dāng)前連接數(shù)據(jù)庫的健康參數(shù),并判斷是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則修改當(dāng)前連接的數(shù)據(jù)庫狀態(tài)為不可連接,進(jìn)行數(shù)據(jù)庫切換;如果否,則保持連接。
6.如權(quán)利要求5所述的多數(shù)據(jù)庫的連接方法,其特征在于,數(shù)據(jù)狀態(tài)監(jiān)視器對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),具體包括 判斷當(dāng)前連接的數(shù)據(jù)庫執(zhí)行讀寫操作是否出現(xiàn)異常,如果是,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)減I ;如果否,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加2 ; 當(dāng)前連接的數(shù)據(jù)庫出現(xiàn)壞連接,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加4。
7.一種多數(shù)據(jù)庫的連接裝置,其特征在于,包括 啟動(dòng)配置模塊,用于啟動(dòng)時(shí),加載配置中的全部數(shù)據(jù)庫連接池,以及,在所有數(shù)據(jù)庫連接池中,設(shè)置主用數(shù)據(jù)庫對(duì)應(yīng)的連接池為當(dāng)前使用連接池,設(shè)置剩余的備用數(shù)據(jù)庫對(duì)應(yīng)的連接池為備用連接池; 連接切換模塊,用于接到調(diào)用者發(fā)起的數(shù)據(jù)庫資源請(qǐng)求時(shí),判斷主用數(shù)據(jù)庫是否能夠連接,如果是,則進(jìn)行連接,如果否,則進(jìn)行數(shù)據(jù)庫切換,在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接;使調(diào)用者獲得連接。
8.如權(quán)利要求7所述的多數(shù)據(jù)庫的連接裝置,其特征在于,所述裝置還包括 數(shù)據(jù)狀態(tài)監(jiān)視器,用于啟動(dòng)后對(duì)主用數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取主用數(shù)據(jù)庫的健康參數(shù); 所述連接切換模塊首先判斷主用數(shù)據(jù)庫是否已經(jīng)停止,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,其次判斷主用數(shù)據(jù)庫對(duì)應(yīng)的當(dāng)前使用連接池是否已經(jīng)連接滿,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,最后判斷主用數(shù)據(jù)庫的健康參數(shù)是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則判定主用數(shù)據(jù)庫無法連接;如果否,則判定主用數(shù)據(jù)庫可以連接; 所述連接切換模塊在調(diào)用者發(fā)起數(shù)據(jù)庫資源請(qǐng)求之后,對(duì)進(jìn)入獲取連接的線程進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器達(dá)到預(yù)先設(shè)定的計(jì)數(shù)閾值,調(diào)用者還沒有獲得連接時(shí),判定主用數(shù)據(jù)庫無法連接。
9.如權(quán)利要求8所述的多數(shù)據(jù)庫的連接裝置,其特征在于,所述數(shù)據(jù)狀態(tài)監(jiān)視器還用于對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)進(jìn)行監(jiān)測(cè),獲取當(dāng)前連接數(shù)據(jù)庫的健康參數(shù),并判斷是否達(dá)到預(yù)先設(shè)定的健康參數(shù)閾值,如果是,則修改當(dāng)前連接的數(shù)據(jù)庫狀態(tài)為不可連接,進(jìn)行數(shù)據(jù)庫切換;如果否,則保持連接。
10.如權(quán)利要求9所述的多數(shù)據(jù)庫的連接裝置,其特征在于, 所述數(shù)據(jù)狀態(tài)監(jiān)視器判斷當(dāng)前連接的數(shù)據(jù)庫執(zhí)行讀寫操作是否出現(xiàn)異常,如果是,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)減I ;如果否,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加2 ;當(dāng)前連接的數(shù)據(jù)庫出現(xiàn)壞連接,則對(duì)當(dāng)前連接的數(shù)據(jù)庫的健康參數(shù)加4。
全文摘要
本發(fā)明公開了一種多數(shù)據(jù)庫的連接方法及裝置,包括啟動(dòng)時(shí),加載配置中的全部數(shù)據(jù)庫連接池,以及,在所有數(shù)據(jù)庫連接池中,設(shè)置主用數(shù)據(jù)庫對(duì)應(yīng)的連接池為當(dāng)前使用連接池,設(shè)置剩余的備用數(shù)據(jù)庫對(duì)應(yīng)的連接池為備用連接池;接到調(diào)用者發(fā)起的數(shù)據(jù)庫資源請(qǐng)求時(shí),判斷主用數(shù)據(jù)庫是否能夠連接,如果是,則進(jìn)行連接,如果否,則進(jìn)行數(shù)據(jù)庫切換,在備用數(shù)據(jù)庫中選擇一個(gè)數(shù)據(jù)庫進(jìn)行連接;使調(diào)用者獲得連接。本發(fā)明可以實(shí)現(xiàn)當(dāng)數(shù)據(jù)庫群中的某數(shù)據(jù)庫無法正常響應(yīng)時(shí),自動(dòng)選擇其他的有效數(shù)據(jù)庫作為數(shù)據(jù)庫的連接提供者,以提高應(yīng)用系統(tǒng)的可靠性,提高了系統(tǒng)的穩(wěn)定性,避免了數(shù)據(jù)庫停用。
文檔編號(hào)G06F17/30GK102902779SQ201210371389
公開日2013年1月30日 申請(qǐng)日期2012年9月28日 優(yōu)先權(quán)日2012年9月28日
發(fā)明者任軍, 柳忠偉 申請(qǐng)人:五八有限公司