串連池技術淺談,技術淺談

來源:互聯網
上載者:User

串連池技術淺談,技術淺談

概念

   串連池是建立和管理一個串連的緩衝池技術,串連池準備好後會被任何需要它們的線程使用。這種把串連“彙集”起來的技術基於這樣的事實:對於大多數應用程式,當它們正在處理時通常需要好幾毫秒才能完成。

原理

    串連池技術的核心思想是:串連複用,通過建立一個資料庫連接池以及一套串連使用、分配、管理原則,使得改串連池中的串連可以得到高效、安全的複用,避免了資料庫連接頻繁建立、關閉的開銷。另外,由於對JDBC中原始串連進行了封裝,從而方便了資料庫應用。對於串連的使用(特別是對於交易處理),提高了開發效率,也正因為這個封裝層的存在,隔離了應用本身的處理邏輯和具體資料的訪問邏輯,是應用本身的複用成為了可能。

組成部分

     串連池主要由三部分組成:串連池的建立、串連池中串連的使用管理、串連池的關閉。

串連池的建立

      應用程式建立的串連池實際上是一個靜態串連池。所謂靜態串連池是指串連池中的串連在系統初始化時就已經分配好,且不能隨意地關閉串連。Java中提供了很多容器類,可以方便地構建串連池,如Vector、Stack、Servlet、Bean等,通過讀取資料庫連接屬性檔案Connection.property與資料庫執行個體建立串連。在系統初始化時,根據相應的配置建立串連並放置在串連池中,以便需要使用時能從串連池中擷取,這樣就避免了串連隨意的建立、關閉造成的開銷。

串連池中串連的使用管理

      串連池管理原則是串連池機制的核心。串連池的分配、釋放策略對於有效複用、串連非常重要,我們採用的方法是一個很有名的設計模式:Reference Counting(引用計數)。該模式在複用資源方面應用非常廣泛,把該方法運用到對於串連的分配釋放上,為每一個資料庫連接保留一個應用記數,用來記錄該串連的使用者的個數。具體實現方法如下:

     客戶請求資料庫連接時,首先查看串連池中是否有空閑串連(指當前沒有分配出去的串連)。如果存在空閑串連,則把串連分配給客戶並作相應處理(即標記改串連為正在使用,引用計數加1)。如果沒有空閑串連,則查看當前所開的串連數是不是已經到了maxCon(最大串連數),如果沒有達到醉倒就重新建立一個串連給請求的客戶;如果達到了就按設定的maxWaitTime(最大等待時間)進行等待,如果等待maxWaitTime後人沒有空閑串連,就拋出無空閑串連的異常給使用者。

   客戶釋放資料庫連接時,先判斷該串連的引用次數是否超過了規定值,如果超過就刪除該串連,並判斷當前串連池內總的串連數是否小於minConn(最小串連數),若小於就將串連池充滿;如果沒有超過就將該串連標記為開放狀態,可供再次複用。可以看出正事這套策略保證了資料庫連接的有效複用,避免頻繁地建立、釋放串連所帶來的系統資源開銷。

串連池的關閉

當應用程式退出時,應關閉串連池,此時應把在串連池建立時向資料庫申請的連線物件統一歸還給資料庫(即關閉所用資料庫連接),這與串連池的建立正好是個相反的過程。

    

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.