數(shù)據(jù)庫分布式連接池管理方法和系統(tǒng)的制作方法
【專利摘要】提供了一種數(shù)據(jù)庫分布式連接池管理系統(tǒng)和方法。所述系統(tǒng)包括:多個(gè)本地監(jiān)控器,分別嵌入在多個(gè)應(yīng)用中,并配置為收集對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息;以及中心控制器,配置為從所述多個(gè)本地監(jiān)控器接收空閑數(shù)據(jù)庫連接信息,對接收到的空閑數(shù)據(jù)庫連接信息進(jìn)行分析,并將分析結(jié)果發(fā)送給所述多個(gè)本地監(jiān)控器;其中所述多個(gè)本地監(jiān)控器之一還配置為:響應(yīng)于接收到數(shù)據(jù)庫訪問請求,確定在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接是否充足;如果確定對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足,則根據(jù)從中心控制器接收到的分析結(jié)果,經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。
【專利說明】
數(shù)據(jù)庫分布式連接池管理方法和系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體地,涉及一種數(shù)據(jù)庫分布式連接池管理方法和系統(tǒng)。
【背景技術(shù)】
[0002]目前,隨著計(jì)算機(jī)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,應(yīng)用和數(shù)據(jù)庫之間進(jìn)行安全、快速、有效的數(shù)據(jù)連接變得越來越重要。
[0003]在互聯(lián)網(wǎng)應(yīng)用中,為了應(yīng)對海量用戶的高并發(fā)訪問,往往采用連接池的方式來實(shí)現(xiàn)數(shù)據(jù)通信。連接池是創(chuàng)建和管理一個(gè)連接的緩沖池的技術(shù),這些連接準(zhǔn)備好被任何需要它們的線程或進(jìn)程使用。當(dāng)應(yīng)用請求連接池中的空閑連接時(shí),首先查看連接池中是否有空閑連接。如果存在空閑連接,則把連接池中的空閑連接分配給應(yīng)用使用;若是沒有空閑連接,則查看當(dāng)前所開的連接數(shù)是否達(dá)到最大預(yù)設(shè)連接數(shù)M,如果沒有達(dá)到最大預(yù)設(shè)連接數(shù),則創(chuàng)建一個(gè)連接給請求的客戶端,如果達(dá)到最大預(yù)設(shè)連接數(shù)M,則等待空閑連接。然而,每個(gè)應(yīng)用的連接池往往只能在該應(yīng)用內(nèi)共享,而其它應(yīng)用不能使用,這樣導(dǎo)致對單個(gè)應(yīng)用中連接池的控制不能達(dá)到很好的效果,無法使整個(gè)數(shù)據(jù)庫的連接資源達(dá)到平衡。例如,在一部分應(yīng)用忙碌而一部分應(yīng)用空閑的情況下,忙碌的應(yīng)用可能需要等待空閑連接,而空閑的應(yīng)用可能浪費(fèi)大量數(shù)據(jù)庫連接資源。更糟糕的情況是,如果數(shù)據(jù)流量在這些應(yīng)用中反復(fù)變化,使得忙的應(yīng)用變閑,閑的應(yīng)用變忙,這樣會(huì)導(dǎo)致出現(xiàn)不斷關(guān)閉和重建連接的現(xiàn)象。
[0004]也就是說,現(xiàn)有的連接池管理技術(shù)往往存在如下缺點(diǎn):首先每個(gè)應(yīng)用的數(shù)據(jù)庫連接池不能共享,導(dǎo)致忙碌應(yīng)用的數(shù)據(jù)庫連接不夠用,空閑應(yīng)用的數(shù)據(jù)庫連接資源浪費(fèi)。其次,在忙碌應(yīng)用和空閑應(yīng)用不斷轉(zhuǎn)變時(shí),數(shù)據(jù)庫連接不斷關(guān)閉和創(chuàng)建,導(dǎo)致數(shù)據(jù)庫連接可能出現(xiàn)比單庫連接池更多的關(guān)閉和創(chuàng)建操作。因此,即使在分布式系統(tǒng)的情況下,連接池的作用依然無法很好的發(fā)揮出來。此外,當(dāng)流量在應(yīng)用間切換時(shí),本身流量較小的應(yīng)用一下子獲得大量流量,就需要新建很多數(shù)據(jù)庫連接,但是之前占用較多數(shù)據(jù)庫連接的應(yīng)用,雖然流量下降但卻可能還并沒有釋放數(shù)據(jù)庫連接,在這種情況下,導(dǎo)致在數(shù)據(jù)庫端新建更多的連接。最后,現(xiàn)有的連接池管理技術(shù)不方便控制資源。具體地,無法合理配置參數(shù),不能評估出底層數(shù)據(jù)庫真正的連接數(shù)。因此,在底層數(shù)據(jù)庫出現(xiàn)連接數(shù)資源不夠,或者數(shù)據(jù)庫負(fù)載過高時(shí),不能方便控制應(yīng)用請求的連接數(shù)。
[0005]為了避免這種情況,本方案提出了一種數(shù)據(jù)庫分布式連接池管理方法和系統(tǒng),使得各應(yīng)用在盡量使用本應(yīng)用的連接池的前提下,還可以借用其它應(yīng)用的連接池的空閑數(shù)據(jù)庫連接,從而使得每個(gè)應(yīng)用都有足夠的數(shù)據(jù)庫連接可用,也避免了不斷關(guān)閉和重建數(shù)據(jù)庫連接。
【發(fā)明內(nèi)容】
[0006]為了至少解決上述問題中的至少一個(gè),本發(fā)明提供了一種數(shù)據(jù)庫分布式連接池管理方法和系統(tǒng),使得各應(yīng)用在盡量使用本應(yīng)用的連接池的前提下,還可以借用其它應(yīng)用的連接池的空閑數(shù)據(jù)庫連接,從而使得每個(gè)應(yīng)用都有足夠的數(shù)據(jù)庫連接可用,也避免了不斷關(guān)閉和重建數(shù)據(jù)庫連接。
[0007]根據(jù)本發(fā)明的第一方面,提供了一種數(shù)據(jù)庫分布式連接池管理系統(tǒng),可以包括:多個(gè)本地監(jiān)控器,分別嵌入在多個(gè)應(yīng)用中,并配置為收集對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息;以及中心控制器,配置為從所述多個(gè)本地監(jiān)控器接收空閑數(shù)據(jù)庫連接信息,對接收到的空閑數(shù)據(jù)庫連接信息進(jìn)行分析,并將分析結(jié)果發(fā)送給所述多個(gè)本地監(jiān)控器;其中所述多個(gè)本地監(jiān)控器之一還配置為:響應(yīng)于接收到數(shù)據(jù)庫訪問請求,確定在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接是否充足;如果確定對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足,則根據(jù)從中心控制器接收到的分析結(jié)果,經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。
[0008]所述多個(gè)本地監(jiān)控器之一還可以配置為:如果確定對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接充足,則經(jīng)由所述對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。
[0009]所述中心控制器可以配置為包括監(jiān)控器通信模塊和空閑連接管理模塊,其中所述監(jiān)控器通信模塊配置為與所述多個(gè)本地監(jiān)控器通信相連;以及所述空閑連接管理模塊配置為經(jīng)由監(jiān)控器通信模塊從所述多個(gè)本地監(jiān)控器收集每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,按照預(yù)定規(guī)則分析所述每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,并經(jīng)由監(jiān)控器通信模塊將分析結(jié)果發(fā)送至所述多個(gè)本地監(jiān)控器。
[0010]所述多個(gè)本地監(jiān)控器之一可以包括:中心通信模塊,配置為與中心控制器進(jìn)行通信以便接收分析結(jié)果;全局空閑連接管理模塊,配置為在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足的情況下,根據(jù)經(jīng)由中心通信模塊接收到的分析結(jié)果,為數(shù)據(jù)庫訪問分配其他應(yīng)用的連接池以便經(jīng)由所述其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問;本地?cái)?shù)據(jù)庫連接池代理模塊,配置為負(fù)責(zé)經(jīng)由對應(yīng)應(yīng)用的連接池的代理訪問,并向中心通信模塊提供對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息;遠(yuǎn)程數(shù)據(jù)庫請求代理模塊,配置為在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足時(shí),負(fù)責(zé)向由全局空閑連接管理模塊分配的其他應(yīng)用的連接池發(fā)送代理數(shù)據(jù)庫訪問請求;以及遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊,配置為響應(yīng)于從請求方應(yīng)用接收到代理數(shù)據(jù)庫訪問請求,搜索對應(yīng)應(yīng)用的連接池內(nèi)的可用空閑數(shù)據(jù)庫連接,以便執(zhí)行代理數(shù)據(jù)庫訪問。
[0011]所述遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊還可以配置為:響應(yīng)于搜索到可用空閑數(shù)據(jù)庫連接,則經(jīng)由所述可用空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問并將結(jié)果返回給請求方應(yīng)用;且如果沒有搜索到可用空閑數(shù)據(jù)庫連接,則將錯(cuò)誤信息返回給請求方應(yīng)用。
[0012]根據(jù)本發(fā)明的第二方面,提供了一種數(shù)據(jù)庫分布式連接池管理方法,可以包括:收集每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息;對收集到的每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息進(jìn)行分析以獲得分析結(jié)果;響應(yīng)于從請求方應(yīng)用接收到數(shù)據(jù)庫訪問請求,確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接是否充足;如果確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足,則根據(jù)分析結(jié)果,請求經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。
[0013]所述對收集到的每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息進(jìn)行分析以獲得分析結(jié)果可以包括:按照預(yù)定規(guī)則分析所述每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,以獲得分析結(jié)果。
[0014]所述方法還可以包括:如果確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接充足,則經(jīng)由請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。
[0015]所述請求經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問可以包括:在請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足的情況下,根據(jù)分析結(jié)果,為數(shù)據(jù)庫訪問分配其他應(yīng)用的連接池;向所分配的其他應(yīng)用的連接池發(fā)送代理數(shù)據(jù)庫訪問請求;以及響應(yīng)于其他應(yīng)用的連接池從請求方應(yīng)用接收到代理數(shù)據(jù)庫訪問請求,搜索在所述其他應(yīng)用的連接池內(nèi)的可用空閑數(shù)據(jù)庫連接,以便執(zhí)行代理數(shù)據(jù)庫訪問。
[0016]所述方法還可以包括:響應(yīng)于搜索到可用空閑數(shù)據(jù)庫連接,則經(jīng)由所述可用空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問并將結(jié)果返回給請求方應(yīng)用;且如果沒有搜索到可用空閑數(shù)據(jù)庫連接,則將錯(cuò)誤信息返回給請求方應(yīng)用。
【附圖說明】
[0017]以下結(jié)合附圖,將更清楚本發(fā)明的示例實(shí)施例的上述和其它方面、特征以及優(yōu)點(diǎn),附圖中:
[0018]圖1示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫分布式連接池管理系統(tǒng)的操作環(huán)境的示意圖;
[0019]圖2示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫分布式連接池管理系統(tǒng)的框圖;
[0020]圖3示出了根據(jù)本發(fā)明實(shí)施例的空閑數(shù)據(jù)庫連接管理方法的流程圖;
[0021 ]圖4示出了根據(jù)本發(fā)明示例實(shí)施例的空閑連接管理流程;以及
[0022]圖5示出了根據(jù)本發(fā)明示例實(shí)施例的數(shù)據(jù)庫連接請求操作流程圖。
【具體實(shí)施方式】
[0023]以下參考附圖描述了本發(fā)明的示例實(shí)施。本發(fā)明提供了一種數(shù)據(jù)庫分布式連接池管理方法和系統(tǒng),使得各應(yīng)用在盡量使用本應(yīng)用的連接池的前提下,還可以借用其它應(yīng)用的連接池的空閑數(shù)據(jù)庫連接,從而使得每個(gè)應(yīng)用都有足夠的數(shù)據(jù)庫連接可用,也避免了不斷關(guān)閉和重建數(shù)據(jù)庫連接。
[0024]應(yīng)注意,為使本公開的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對本公開進(jìn)一步詳細(xì)說明。需要說明的是,在附圖或說明書描述中,相似或相同的部分都使用相同的圖號(hào)。
[0025]圖1示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫分布式連接池管理系統(tǒng)的操作環(huán)境10的示意圖。
[0026]在根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫分布式連接池管理系統(tǒng)的操作環(huán)境10下,存在數(shù)據(jù)庫300和多個(gè)應(yīng)用(例如,應(yīng)用1、應(yīng)用2和應(yīng)用3)。根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫分布式連接池管理系統(tǒng)包括與多個(gè)應(yīng)用相對應(yīng)的多個(gè)本地監(jiān)控器100(例如,本地監(jiān)控器100-1、本地監(jiān)控器100-2和本地監(jiān)控器100-3)和中心控制器200。
[0027]多個(gè)本地監(jiān)控器100可以分別嵌入到各應(yīng)用中,并每一個(gè)本地監(jiān)控器均被配置為收集與之相對應(yīng)的應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息。中心控制器200可以是用于管理集群內(nèi)的多個(gè)應(yīng)用的空閑數(shù)據(jù)庫連接的獨(dú)立設(shè)備,并配置為從所述多個(gè)本地監(jiān)控器100中的每一個(gè)接收對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,對接收到的所有空閑數(shù)據(jù)庫連接信息進(jìn)行分析,并將分析結(jié)果發(fā)送給所述多個(gè)本地監(jiān)控器100。此外,所述本地監(jiān)控器100還配置為響應(yīng)于接收到數(shù)據(jù)庫訪問請求,確定在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接是否充足;如果確定對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足,則根據(jù)從中心控制器200接收到的分析結(jié)果,經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。此外,如果確定對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接充足,則經(jīng)由所述對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。
[0028]也就是說,中心控制器200負(fù)責(zé)對各應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接進(jìn)行一個(gè)統(tǒng)計(jì)分析,并將分析結(jié)果不斷的推給各個(gè)應(yīng)用或各應(yīng)用的本地監(jiān)控器。嵌入在各應(yīng)用中的本地監(jiān)控器100—方面負(fù)責(zé)接收中心控制器200推送的分析結(jié)果,另一方面在本地?cái)?shù)據(jù)庫連接不夠使用時(shí)將數(shù)據(jù)庫訪問請求代理到所選的集群內(nèi)其它應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)連接執(zhí)行,其中所述其他應(yīng)用可以是根據(jù)從中心控制器200推送的分析結(jié)果而確定的。應(yīng)注意,本文以包括三個(gè)應(yīng)用的操作環(huán)境為例闡述了本發(fā)明的原理,但是本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識(shí)到,本發(fā)明可以不限于上述實(shí)施例且可以包括更多或更少的應(yīng)用。
[0029]圖2示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫分布式連接池管理系統(tǒng)20的框圖。
[0030]如圖2所示,中心控制器200可以包括監(jiān)控器通信模塊210和空閑連接管理模塊220。所述監(jiān)控器通信模塊210可以配置為與所述多個(gè)本地監(jiān)控器100通信相連,例如,經(jīng)由有線連接或無線地連接。所述空閑連接管理模塊220配置為經(jīng)由監(jiān)控器通信模塊210從所述多個(gè)本地監(jiān)控器100收集每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,按照預(yù)定規(guī)則分析所述每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,并經(jīng)由監(jiān)控器通信模塊將分析結(jié)果發(fā)送至所述多個(gè)本地監(jiān)控器。即,客戶端通信模塊210負(fù)責(zé)接收各個(gè)應(yīng)用的本地監(jiān)控器100推送來的空閑數(shù)據(jù)庫連接信息,并將接收的信息提交給空閑連接管理模塊220,空閑連接模塊220負(fù)責(zé)將空閑連接信息按規(guī)則進(jìn)行篩選組織(例如,按照預(yù)定規(guī)則排序),然后將經(jīng)過組織的空閑數(shù)據(jù)庫連接信息(例如,排序結(jié)果)交給客戶端通信模塊210,由客戶端通信模塊210推送到各個(gè)應(yīng)用的本地監(jiān)控器100。
[0031 ]多個(gè)本地監(jiān)控器100中的每個(gè)本地監(jiān)控器可以包括以下模塊:中心通信模塊110,配置為與中心控制器200進(jìn)行通信以便接收分析結(jié)果;全局空閑連接管理模塊120,配置為在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足的情況下,根據(jù)經(jīng)由中心通信模塊110接收到的分析結(jié)果,為數(shù)據(jù)庫訪問分配其他應(yīng)用的連接池以便經(jīng)由所述其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問;本地?cái)?shù)據(jù)庫連接池代理模塊130,配置為負(fù)責(zé)經(jīng)由對應(yīng)應(yīng)用的連接池的代理訪問,并向中心通信模塊110提供對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息;遠(yuǎn)程數(shù)據(jù)庫請求代理模塊140,配置為在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足時(shí),負(fù)責(zé)向由全局空閑連接管理模塊120分配的其他應(yīng)用的連接池發(fā)送代理數(shù)據(jù)庫訪問請求;以及遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊150,配置為響應(yīng)于從請求方應(yīng)用接收到代理數(shù)據(jù)庫訪問請求,搜索對應(yīng)應(yīng)用的連接池內(nèi)的可用空閑數(shù)據(jù)庫連接,以便執(zhí)行代理數(shù)據(jù)庫訪問。此外,所述遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊150還配置為:響應(yīng)于搜索到可用空閑數(shù)據(jù)庫連接,則經(jīng)由所述可用空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問并將結(jié)果返回給請求方應(yīng)用;且如果沒有搜索到可用空閑數(shù)據(jù)庫連接,則將錯(cuò)誤信息返回給請求方應(yīng)用。
[0032]也就是說,中心通信模塊110—方面負(fù)責(zé)將自身應(yīng)用的連接池的空閑數(shù)據(jù)庫連接信息提交給中心控制器200,另一方面接收來自中心控制器200推送的分析結(jié)果,并將分析結(jié)果提交給全局空閑連接管理模塊120。全局空閑連接管理模塊120負(fù)責(zé)管理全局其它應(yīng)用的連接池的空閑數(shù)據(jù)庫連接。當(dāng)本地連接池(即,在其中嵌入所述本地監(jiān)控器的對應(yīng)應(yīng)用的連接池)中連接達(dá)到最大連接數(shù)并且不能再分配連接時(shí),全局空閑連接管理模塊120根據(jù)由中心通信模塊110接收到的對全局空閑數(shù)據(jù)庫連接信息的分析結(jié)果,為數(shù)據(jù)庫訪問請求分配全局其他應(yīng)用的連接池的空閑數(shù)據(jù)庫連接。本地?cái)?shù)據(jù)庫連接池代理模塊130主要負(fù)責(zé)經(jīng)由本地連接池的代理訪問,其中將本地連接池的最小空閑連接和最大空閑連接配置為比較大且彼此接近,使得本地連接池不會(huì)輕易釋放數(shù)據(jù)庫連接,以避免不斷關(guān)閉和重建數(shù)據(jù)庫連接。遠(yuǎn)程數(shù)據(jù)庫請求代理模塊140負(fù)責(zé)當(dāng)本地連接池不能分配空閑數(shù)據(jù)庫連接時(shí),向由全局空閑連接管理模塊120分配的全局其他應(yīng)用的連接池請求執(zhí)行代理數(shù)據(jù)庫訪問。遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊150可以配置為響應(yīng)于接收到請求方應(yīng)用的數(shù)據(jù)訪問請求,經(jīng)由自身連接池中的空閑數(shù)據(jù)庫連接幫助請求方應(yīng)用執(zhí)行代理數(shù)據(jù)庫訪問。具體他,如果請求到自身可用的空閑數(shù)據(jù)庫連接,則執(zhí)行代理數(shù)據(jù)庫訪問并將結(jié)果返回給請求應(yīng)用,如也無可用連接,則將無法幫助執(zhí)行的信息(例如,錯(cuò)誤信息)返回給請求方應(yīng)用。
[0033]具體地,以下將參考圖3來描述根據(jù)本發(fā)明的示例實(shí)施例的空閑數(shù)據(jù)庫連接管理方法的流程圖。
[0034]具體地,根據(jù)本發(fā)明的示例實(shí)施例的空閑數(shù)據(jù)庫連接管理方法包括:在步驟S301,收集每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息。在步驟S303,對收集到的每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息進(jìn)行分析以獲得分析結(jié)果;所述對收集到的每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息進(jìn)行分析以獲得分析結(jié)果包括:按照預(yù)定規(guī)則分析所述每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,以獲得分析結(jié)果。在步驟S305,響應(yīng)于從請求方應(yīng)用接收到數(shù)據(jù)庫訪問請求,確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接是否充足。如果確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足,則在步驟S307根據(jù)分析結(jié)果,請求經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。所述請求經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問包括:在請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足的情況下,根據(jù)分析結(jié)果,為數(shù)據(jù)庫訪問分配其他應(yīng)用的連接池;向所分配的其他應(yīng)用的連接池發(fā)送代理數(shù)據(jù)庫訪問請求;并且響應(yīng)于其他應(yīng)用的連接池從請求方應(yīng)用接收到代理數(shù)據(jù)庫訪問請求,在所述其他應(yīng)用的連接池內(nèi)搜索可用空閑數(shù)據(jù)庫連接,以便執(zhí)行代理數(shù)據(jù)庫訪問。此外,根據(jù)本發(fā)明示例實(shí)施例的空閑數(shù)據(jù)庫連接管理方法還包括:響應(yīng)于搜索到所述其他應(yīng)用的連接池內(nèi)的可用空閑數(shù)據(jù)庫連接,則經(jīng)由所述可用空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問并將結(jié)果返回給請求方應(yīng)用;且如果沒有搜索到可用空閑數(shù)據(jù)庫連接,則將錯(cuò)誤信息返回給請求方應(yīng)用。此外,如果確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接充足,則在步驟S309經(jīng)由請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。
[0035]具體地,圖4描述了根據(jù)本發(fā)明示例實(shí)施例的空閑連接管理流程。本地?cái)?shù)據(jù)庫連接池代理模塊130向中心通信模塊110報(bào)告本地空閑連接資源,并經(jīng)由中心通信模塊110將自身的空閑連接資源信息發(fā)送給與中心控制器200的監(jiān)控器通信模塊210。例如,本地?cái)?shù)據(jù)庫連接池代理模塊130以一定頻率將本地空閑的數(shù)據(jù)庫連接池信息通過中心通信模塊報(bào)告給中心控制器。監(jiān)控器通信模塊210通過與嵌入在各應(yīng)用的多個(gè)監(jiān)控器的中心通信模塊進(jìn)行通信,可以獲得所有應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接資源。監(jiān)控器通信模塊210將接收到的空閑連接資源信息發(fā)送給空閑連接管理模塊220,空閑連接管理模塊定期將當(dāng)前時(shí)刻所有應(yīng)用的控線連接信息(即,全局空閑連接資源)進(jìn)行統(tǒng)計(jì)分析(例如,根據(jù)特定規(guī)則來進(jìn)行排序),并經(jīng)由監(jiān)控器通信模塊210將分析結(jié)果發(fā)送給各個(gè)應(yīng)用。例如,在經(jīng)由監(jiān)控器通信模塊接收到空閑連接信息后進(jìn)行統(tǒng)一分析統(tǒng)計(jì),然后將分析報(bào)告精心組織,將結(jié)果全量或者增量的方式通過監(jiān)控器通信模塊推送給各應(yīng)用。各應(yīng)用的中心通信模塊110接收到包括全局各應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息的分析結(jié)果,并將其傳送至對應(yīng)的全局空閑連接管理模塊120,以便由對應(yīng)的全局空閑連接管理模塊120管理全局空閑連接信息,例如,將接收到的全局空閑連接信息組織按一定策略排序備用,等待當(dāng)本地?cái)?shù)據(jù)庫連接不夠用時(shí)請求其他應(yīng)用的連接池執(zhí)行代理數(shù)據(jù)庫訪問。
[0036]圖5描述了根據(jù)本發(fā)明示例實(shí)施例的數(shù)據(jù)庫連接請求操作流程圖。
[0037]根據(jù)本發(fā)明示例實(shí)施例的數(shù)據(jù)庫連接請求操作流程如下:響應(yīng)于接收到數(shù)據(jù)庫訪問,每個(gè)應(yīng)用優(yōu)先到本地?cái)?shù)據(jù)庫連接池代理中請求本地?cái)?shù)據(jù)庫連接。此時(shí),判斷是否請求到本地連接池內(nèi)的空閑數(shù)據(jù)連接。如果請求到本地連接池內(nèi)的空閑數(shù)據(jù)庫連接,則直接通過該連接執(zhí)行數(shù)據(jù)庫訪問。如果請求不到,則到全局空閑連接管理模塊請求分配全局內(nèi)其它應(yīng)用的連接池的空閑數(shù)據(jù)庫連接。全局空閑連接管理模塊按一定策略為其分配有空閑連接的其它應(yīng)用的連接池,將所分配的有空閑數(shù)據(jù)庫連接的應(yīng)用連接池的信息交給遠(yuǎn)程數(shù)據(jù)庫請求代理模塊,以便經(jīng)由遠(yuǎn)程數(shù)據(jù)庫請求代理模塊向所分配的應(yīng)用連接池內(nèi)的空閑數(shù)據(jù)庫連接請求幫助請求方應(yīng)用執(zhí)行代理數(shù)據(jù)庫訪問。幫助請求方應(yīng)用執(zhí)行代理數(shù)據(jù)庫訪問的應(yīng)答方應(yīng)用通過自身的遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊執(zhí)行代理數(shù)據(jù)庫訪問。具體地,應(yīng)答方應(yīng)用首先到自身的本地?cái)?shù)據(jù)庫連接池代理模塊請求空閑數(shù)據(jù)庫連接,如果請求到空閑數(shù)據(jù)庫連接,則幫助請求方應(yīng)用執(zhí)行代理數(shù)據(jù)庫訪問并返回執(zhí)行結(jié)果,否則直接返回錯(cuò)誤代碼,以便指示本應(yīng)用也沒有空閑數(shù)據(jù)庫連接。如果請求方應(yīng)用的請求代理模塊收到正確結(jié)果,則返回正確結(jié)果。反之,如果請求方應(yīng)用收到錯(cuò)誤代碼,則根據(jù)配置,在超時(shí)時(shí)間內(nèi)再嘗試或者直接返回?cái)?shù)據(jù)庫訪問失敗結(jié)果。
[0038]根據(jù)本發(fā)明示例實(shí)施例的數(shù)據(jù)庫分布式連接池管理系統(tǒng)和方法可以彌補(bǔ)傳統(tǒng)連接池在分布式部署中對數(shù)據(jù)庫連接管理的不足,使得各應(yīng)用在盡量使用本應(yīng)用的連接池的前提下,還可以借用其它應(yīng)用的連接池的空閑數(shù)據(jù)庫連接,從而使得每個(gè)應(yīng)用都有足夠的數(shù)據(jù)庫連接可用,也避免了不斷關(guān)閉和重建數(shù)據(jù)庫連接。此外,所述方法和系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)庫連接不限于在一個(gè)應(yīng)用中共享,還能在全局中共享,大大提高了數(shù)據(jù)庫連接的使用率,避免了不斷關(guān)閉和重建數(shù)據(jù)庫連接,更有效的控制了資源。
[0039]以上方案僅是示出本發(fā)明構(gòu)思的一個(gè)具體實(shí)現(xiàn)方案,本發(fā)明不限于上述實(shí)現(xiàn)方案。可以省略或跳過上述實(shí)現(xiàn)方案中的一部分處理,而不脫離本發(fā)明的精神和范圍。
[0040]前面的方法可以通過多種計(jì)算機(jī)裝置以可執(zhí)的程序命令形式實(shí)現(xiàn)并記錄在計(jì)算機(jī)可讀記錄介質(zhì)中。在這種情況下,計(jì)算機(jī)可讀記錄介質(zhì)可以包括單獨(dú)的程序命令、數(shù)據(jù)文件、數(shù)據(jù)結(jié)構(gòu)或其組合。同時(shí),記錄在記錄介質(zhì)中的程序命令可以專門設(shè)計(jì)或配置用于本發(fā)明,或是計(jì)算機(jī)軟件領(lǐng)域的技術(shù)人員已知應(yīng)用的。計(jì)算機(jī)可讀記錄介質(zhì)包括例如硬盤、軟盤或磁帶等磁性介質(zhì)、例如壓縮盤只讀存儲(chǔ)器(CD-ROM)或數(shù)字通用盤(DVD)等光學(xué)介質(zhì)、例如光磁軟盤的磁光介質(zhì)以及例如存儲(chǔ)和執(zhí)行程序命令的R0M、RAM、閃存等硬件裝置。此外,程序命令包括編譯器形成的機(jī)器語言代碼和計(jì)算機(jī)通過使用解釋程序可執(zhí)行的高級(jí)語言。前面的硬件裝置可以配置成作為至少一個(gè)軟件模塊操作以執(zhí)行本發(fā)明的操作,并且逆向操作也是一樣的。
[0041]盡管以特定順序示出并描述了本文方法的操作,然而可以改變每個(gè)方法的操作的順序,使得可以以相反順序執(zhí)行特定操作或使得可以至少部分地與其它操作同時(shí)來執(zhí)行特定操作。此外,本發(fā)明不限于上述示例實(shí)施例,它可以在不脫離本公開的精神和范圍的前提下,包括一個(gè)或多個(gè)其他部件或操作,或省略一個(gè)或多個(gè)其他部件或操作。
[0042]以上已經(jīng)結(jié)合本發(fā)明的優(yōu)選實(shí)施例示出了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將會(huì)理解,在不脫離本發(fā)明的精神和范圍的情況下,可以對本發(fā)明進(jìn)行各種修改、替換和改變。因此,本發(fā)明不應(yīng)由上述實(shí)施例來限定,而應(yīng)由所附權(quán)利要求及其等價(jià)物來限定。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)庫分布式連接池管理系統(tǒng),包括: 多個(gè)本地監(jiān)控器,分別嵌入在多個(gè)應(yīng)用中,并配置為收集對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息;以及 中心控制器,配置為從所述多個(gè)本地監(jiān)控器接收空閑數(shù)據(jù)庫連接信息,對接收到的空閑數(shù)據(jù)庫連接信息進(jìn)行分析,并將分析結(jié)果發(fā)送給所述多個(gè)本地監(jiān)控器; 其中所述多個(gè)本地監(jiān)控器之一還配置為:響應(yīng)于接收到數(shù)據(jù)庫訪問請求,確定在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接是否充足;如果確定對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足,則根據(jù)從中心控制器接收到的分析結(jié)果,經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述多個(gè)本地監(jiān)控器之一還配置為:如果確定對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接充足,則經(jīng)由所述對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。3.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述中心控制器配置為包括監(jiān)控器通信模塊和空閑連接管理模塊,其中 所述監(jiān)控器通信模塊配置為與所述多個(gè)本地監(jiān)控器通信相連;以及所述空閑連接管理模塊配置為經(jīng)由監(jiān)控器通信模塊從所述多個(gè)本地監(jiān)控器收集每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,按照預(yù)定規(guī)則分析所述每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,并經(jīng)由監(jiān)控器通信模塊將分析結(jié)果發(fā)送至所述多個(gè)本地監(jiān)控器。4.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述多個(gè)本地監(jiān)控器之一包括: 中心通信模塊,配置為與中心控制器進(jìn)行通信以便接收分析結(jié)果; 全局空閑連接管理模塊,配置為在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足的情況下,根據(jù)經(jīng)由中心通信模塊接收到的分析結(jié)果,為數(shù)據(jù)庫訪問分配其他應(yīng)用的連接池以便經(jīng)由所述其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問; 本地?cái)?shù)據(jù)庫連接池代理模塊,配置為負(fù)責(zé)經(jīng)由對應(yīng)應(yīng)用的連接池的代理訪問,并向中心通信模塊提供對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息; 遠(yuǎn)程數(shù)據(jù)庫請求代理模塊,配置為在對應(yīng)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足時(shí),負(fù)責(zé)向由全局空閑連接管理模塊分配的其他應(yīng)用的連接池發(fā)送代理數(shù)據(jù)庫訪問請求;以及遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊,配置為響應(yīng)于從請求方應(yīng)用接收到代理數(shù)據(jù)庫訪問請求,搜索對應(yīng)應(yīng)用的連接池內(nèi)的可用空閑數(shù)據(jù)庫連接,以便執(zhí)行代理數(shù)據(jù)庫訪問。5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中所述遠(yuǎn)程數(shù)據(jù)庫執(zhí)行代理模塊還配置為:響應(yīng)于搜索到可用空閑數(shù)據(jù)庫連接,則經(jīng)由所述可用空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問并將結(jié)果返回給請求方應(yīng)用;且如果沒有搜索到可用空閑數(shù)據(jù)庫連接,則將錯(cuò)誤信息返回給請求方應(yīng)用。6.一種數(shù)據(jù)庫分布式連接池管理方法,包括: 收集每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息; 對收集到的每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息進(jìn)行分析以獲得分析結(jié)果; 響應(yīng)于從請求方應(yīng)用接收到數(shù)據(jù)庫訪問請求,確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接是否充足; 如果確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足,則根據(jù)分析結(jié)果,請求經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。7.根據(jù)權(quán)利要求6所述的方法,其中所述對收集到的每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息進(jìn)行分析以獲得分析結(jié)果包括:按照預(yù)定規(guī)則分析所述每個(gè)應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接信息,以獲得分析結(jié)果。8.根據(jù)權(quán)利要求6所述的方法,其中所述方法還包括:如果確定請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接充足,則經(jīng)由請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問。9.根據(jù)權(quán)利要求6所述的方法,其中所述請求經(jīng)由其他應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問包括: 在請求方應(yīng)用的連接池內(nèi)的空閑數(shù)據(jù)庫連接不足的情況下,根據(jù)分析結(jié)果,為數(shù)據(jù)庫訪問分配其他應(yīng)用的連接池; 向所分配的其他應(yīng)用的連接池發(fā)送代理數(shù)據(jù)庫訪問請求;以及 響應(yīng)于其他應(yīng)用的連接池從請求方應(yīng)用接收到代理數(shù)據(jù)庫訪問請求,搜索在所述其他應(yīng)用的連接池內(nèi)的可用空閑數(shù)據(jù)庫連接,以便執(zhí)行代理數(shù)據(jù)庫訪問。10.根據(jù)權(quán)利要求9所述的方法,其中所述方法還包括:響應(yīng)于搜索到可用空閑數(shù)據(jù)庫連接,則經(jīng)由所述可用空閑數(shù)據(jù)庫連接執(zhí)行代理數(shù)據(jù)庫訪問并將結(jié)果返回給請求方應(yīng)用;且如果沒有搜索到可用空閑數(shù)據(jù)庫連接,則將錯(cuò)誤信息返回給請求方應(yīng)用。
【文檔編號(hào)】G06F17/30GK106021544SQ201610363384
【公開日】2016年10月12日
【申請日】2016年5月27日
【發(fā)明人】何剛
【申請人】北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司