專利名稱:一種基于數據庫連接的自動路由和負載均衡的方法及系統的制作方法
技術領域:
本發明屬于信息技術領域,更具體地涉及ー種基于數據庫連接的自動路由和負載均衡的方法及系統。
背景技術:
現代社會已經進入了信息爆炸的時代,地球變得越來越小。比如IBM就提出了“數字地球”的概念,它將通過傳感器嵌入和裝備到現實生活中的各種物體中,并且被普遍連接,形成所謂“物聯網”,然后將“物聯網”與現有的互聯網整合起來,實現人類社會與物理系統的整合,簡而言之,就是將一切“實物”信息化。這形成了ー個問題,未來的現實世界,都將會以“信息”的模式存儲在龐大的數據庫中,這就對數據庫的建立和管理等相關技術,提出了更高的要求。
目前,大部分關系型數據庫本身都提供了比較完善的數據復制方案,在數據訪問層上都是基于連接池和數據庫本身的數據集群訪問機制來實現。由于關系型數據訪問無非是對數據進行増加、刪除、修改和查詢,對數據的訪問基于應用的不同一般實現讀寫分離,以提高數據的讀寫速度。在實現讀寫分離上都基于對已部署數據庫對應的地址、用戶名、密碼進行固定配置去訪問,這種固定配置一方面對程序的靈活性有一定的限制,ニ來不能靈活根據服務器處理性能進行數據處理的合理調配,同時在數據庫出現故障時需要手動修改數據庫地址配置來訪問可用的數據庫。
發明內容
本發明的特征和優點在下文的描述中部分地陳述,或者可從該描述顯而易見,或者可通過實踐本發明而學習。為克服現有技術的問題,本發明提供一種基于數據庫連接的自動路由和負載均衡的方法,該方法包括建立各數據庫之間的路由配置關系并保存在本地線程池中生成數據庫連接路由表,所述數據庫連接路由表中至少設置有用于記錄各數據庫連接權重和被訪問次數的標記;當需要對某ー數據庫進行讀寫操作時,根據所述數據庫連接路由表中的所述數據庫連接權重和被訪問次數,按照權重訪問均衡原則對連接的數據庫進行資源調度,實現所述對某ー數據庫進行讀寫操作。進ー步地,該數據庫連接路由表還包括如下參數數據庫ID、數據庫連接串、數據庫類型、用戶名、密碼。其中,連接權重包括讀權重和寫權重,所述被訪問次數包括讀處理次數和寫處理次數。進ー步地,在數據庫系統初始化時,根據所述路由配置關系對每個數據庫進行初始化,并將該數據庫連接路由表保存在本地線程池中,同時將該每個數據庫連接的讀處理次數和寫處理次數初始化為O。優先地,當實現所述對某一數據庫進行讀或寫操作吋,則將該數據庫的讀處理次數或寫處理次數加I。進ー步地,當需要對某ー數據庫進行讀寫操作吋,首先對執行的數據操作語句進行解析,判定數據庫是讀操作還是寫操作,再根據數據庫連接路由表獲取相應的連接進行數據處理操作。進ー步地,當連接中的某ー數據庫處于不可用狀態時,則從所述數據庫連接路由表中刪除該數據庫的連接,直到其為可用狀態,再添加進所述數據庫連接路由表。進ー步地,啟用守護線程對所述數據庫連接路由表中的每個數據庫的連接進行定期連接測試來判斷所述某ー數據庫是否為可用狀態。本發明還提供了一種基于數據庫連接的自動路由和負載均衡的系統,包括若干相互連接的數據庫,進一歩包括數據庫連接路由表,保存于本地線程池中,用于建立各數據庫之間的路由配置關系,所述數據庫連接路由表中至少設置有用于記錄各數據庫連接權重和被訪問次數的標記;數據庫連接調度模塊,用于當需要對某ー數據庫進行讀寫操作時,根 據所述數據庫連接路由表中的所述數據庫連接權重和被訪問次數,按照權重訪問均衡原則對連接的數據庫進行資源調度,實現所述對某一數據庫進行讀寫操作。進ー步地,還包括數據庫操作解析模塊,用于對執行的數據操作語句進行解析,判定數據庫是讀操作還是寫操作;數據庫連接監聽模塊,用于啟用守護線程對所述數據庫連接路由表中的每個數據庫的連接進行定期連接測試來判斷各數據庫是否為可用狀態。通過本發明技術方案的技術實現,同現有技術相比,至少具備如下優點實現了更為簡單的數據連接訪問和靈活的數據連接配置,確定了基于讀寫分離的訪問配置,基于權重的和訪問次數的路由實現了負載均衡,提高了效率,同時通過對連接的監聽,很好地實現了對故障的轉移。通過閱讀說明書,本領域普通技術人員將更好地了解這些技術方案的特征和內容。
下面通過參考附圖并結合實例具體地描述本發明,本發明的優點和實現方式將會更加明顯,其中附圖所示內容僅用于對本發明的解釋說明,而不構成對本發明的任何意義上的限制,在附圖中圖I是本發明的總體技術方案流程圖;圖2是本發明數據庫連接的調度處理流程圖;圖3是本發明的系統連接示意圖。
具體實施例方式以下結合附圖對本發明的具體實施作進ー步的詳細描述。如圖I所示,本發明的總體技術方案是101、在已經實現復制功能的數據庫群間,建立各數據庫之間的路由配置關系并保存在本地線程池中生成數據庫連接路由表,數據庫連接路由表中至少設置有用于記錄各數據庫連接權重和被訪問次數的標記;102、當需要對某一數據庫進行讀寫操作時,根據所述數據庫連接路由表中的所述數據庫連接權重和被訪問次數,按照權重訪問均衡原則對連接的數據庫進行資源調度,實現對某一數據庫進行讀寫操作,進而達到基于數據庫連接層的自動路由和負載均衡。關于數據庫之間的路由配置關系,以下表作進ー步的說明
數..
S數據庫連接*密碼讀權重寫權罾《
庫mm ^數數
dbl jdbc:mysql: / / mysql root abc 020200
ipl;port/db
db2 jdbc: mysql:// mysql x T0I()100 db3 jdbc; mysql:// mysql n jX ^20200 (I
ip3:port/db
db4 jdbc: mysql:// mysql i j I 池。 I0JOO 0
ip4:port/db
db5 jdbc: mysql:// mysql root abc II100 100
ip6:port/db依路由配置關系建立的數據庫連接路由表主要參數包括數據庫ID、數據庫連接串、數據庫類型、用戶名、密碼、讀權重、寫權重、讀處理次數、寫處理次數。數據庫連接路由表以TreeMap形式存儲,具體構造如下
Val UO對象
Koy數據庫連接I ホI~ZZlr ■讀處理I寫處理I路由狀
List威S 伽次數次數態
rilil0200i
ab20丨()0I
db3…2000I
db4…1000i
dbo…II00I其中,Key對應數據路由配置關系中的key ,Value對象中的數據庫連接List在初始化時將連接全部建立好,并保存供調用。為了提高數據庫的訪問速度,在數據庫系統初始化時,首先需要根據數據庫路由配置關系對每個數據庫連接進行初始化,并保存在本地線程池中,作為數據庫連接路由表,同時將每個數據庫連接的讀處理次數和寫處理次數初始化為0,一旦使用該數據庫連接進行讀寫操作,則將相應的讀處理次數和寫處理次數加I。為了便于數據庫讀寫分離,將要執行的數據操作語句進行解析,判定數據庫是讀操作還是寫操作,根據讀、寫操作由數據庫連接調度模塊根據數據庫連接路由表獲取相應連接進行數據處理操作。數據庫操作解析,按數據庫操作語句最前面的ー個單詞進行數據操作解析,具體規則,請參閱下表
數據操作語句示例最前面一個單詞解析結果
權利要求
1.一種基于數據庫連接的自動路由和負載均衡的方法,其特征在于,包括 建立各數據庫之間的路由配置關系并保存在本地線程池中生成數據庫連接路由表,所述數據庫連接路由表中至少設置有用于記錄各數據庫連接權重和被訪問次數的標記; 當需要對某ー數據庫進行讀寫操作時,根據所述數據庫連接路由表中的所述數據庫連接權重配置和被訪問次數,按照預定的權重訪問均衡原則對數據庫進行資源連接調度,實現所述對某ー數據庫進行讀寫操作。
2.根據權利要求I所述的基于數據庫連接的自動路由和負載均衡的方法,其特征在于所述數據庫連接路由表進ー步包括如下參數數據庫ID、數據庫連接串、數據庫類型、用戶名、密碼。
3.根據權利要求I所述的基于數據庫連接的自動路由和負載均衡的方法,其特征在于所述連接權重包括讀權重和寫權重,所述被訪問次數包括讀處理次數和寫處理次數。
4.根據權利要求3所述的基于數據庫連接的自動路由和負載均衡的方法,其特征在干在數據庫系統初始化時,根據所述路由配置關系對每個數據庫進行初始化,并將所述數據庫連接路由表保存在本地線程池中,同時將所述每個數據庫連接的讀處理次數和寫處理次數初始化為O。
5.根據權利要求I或4所述的基于數據庫連接的自動路由和負載均衡的方法,其特征在于當實現所述對某一數據庫進行讀或寫操作吋,則將該數據庫的讀處理次數或寫處理次數加I。
6.根據權利要求4所述的基于數據庫連接的自動路由和負載均衡的方法,其特征在于當需要對某ー數據庫進行讀寫操作時,首先對執行的數據操作語句進行解析,判定數據庫是讀操作還是寫操作,再根據數據庫連接路由表獲取相應的連接進行數據處理操作。
7.根據權利要求I所述的基于數據庫連接的自動路由和負載均衡的方法,其特征在于當連接中的某ー數據庫處于不可用狀態時,則從所述數據庫連接路由表中刪除該數據庫的連接,直到其為可用狀態,再添加進所述數據庫連接路由表。
8.根據權利要求7所述的基于數據庫連接的自動路由和負載均衡的方法,其特征在干啟用守護線程對所述數據庫連接路由表中的每個數據庫的連接進行定期連接測試來判斷所述某ー數據庫是否為可用狀態。
9.一種基于數據庫連接的自動路由和負載均衡的系統,包括若干相互連接的數據庫,其特征在于進一歩包括 數據庫連接路由表,保存于本地線程池中,用于建立各數據庫之間的路由配置關系,所述數據庫連接路由表中至少設置有用于記錄各數據庫連接權重和被訪問次數的標記; 數據庫連接調度模塊,用于當需要對某ー數據庫進行讀寫操作時,根據所述數據庫連接路由表中的所述數據庫連接權重和被訪問次數,按照權重訪問均衡原則對連接的數據庫進行資源調度,實現所述對某一數據庫進行讀寫操作。
10.根據權利要求9所述的基于數據庫連接的自動路由和負載均衡的系統,其特征在于,進ー步包括 數據庫操作解析模塊,用于對執行的數據操作語句進行解析,判定數據庫是讀操作還是寫操作; 數據庫連接監聽模塊,用于啟用守護線程對所述數據庫連接路由表中的每個數據庫的連接進行定期連接測試來判斷 各數據庫是否為可用狀態。
全文摘要
本發明提供一種基于數據庫連接的自動路由和負載均衡的方法和系統,該方法包括建立各數據庫之間的路由配置關系并保存在本地線程池中生成數據庫連接路由表,所述數據庫連接路由表中至少設置有用于記錄各數據庫連接權重和被訪問次數的標記;當需要對某一數據庫進行讀寫操作時,根據所述數據庫連接路由表中的所述數據庫連接權重和被訪問次數,按照權重訪問均衡原則對連接的數據庫進行資源調度,實現所述對某一數據庫進行讀寫操作,該方法實現了更為簡單的數據連接訪問和靈活的數據連接配置,確定了基于讀寫分離的訪問配置,基于權重的和訪問次數的路由實現了負載均衡,提高了效率,同時通過對連接的監聽,很好地實現了對故障的轉移。
文檔編號G06F17/30GK102810116SQ20121022005
公開日2012年12月5日 申請日期2012年6月29日 優先權日2012年6月29日
發明者王志偉, 楊正平, 田志勇, 胡志雄 申請人:安科智慧城市技術(中國)有限公司, 武漢恒億電子科技發展有限公司