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