數據庫讀寫分離的中間件

     讀寫分離需要將讀/寫操作區分開來,然後訪問不同的數據庫服務器;分庫分表需要不同的數據訪問不同的數據庫服務器,兩者本質上都是一種分配機制,將不同的SQL語句發送到不同的數據庫服務器。

      常見的分配實現方式有兩種:程序代碼封閉和中間件封閉。

一、程序代碼封裝

     程序代碼封裝指的是在代碼中抽象一個數據訪問層來實現讀寫分離、分庫分表。例如,基於Hibernate進行簡單封裝,就可以實現 讀寫分離。

   目前開源的實現方案中,淘寶的TDDL(Taobao Distributed Data Layer,外號:頭都大了)是比較有名的。它是一個通用數據訪問層,所有功能封裝在Jar包中供業務代碼調用。其基本原理是一個基於集中式的Jdbc datasource實現,具有主備、讀寫分離、動態數據庫配置等功能。

二、數據庫中間件封裝

      中間件封裝指的是獨立一套系統出來,實現讀寫分離和分庫分表操作。 

      中間件對業務服務器提供SQL兼容的協議,對於 業務服務來說,訪問中間件和訪問數據庫沒有區別,事實上在業務服務器看來,中間件就是一個數據加服務器。

  目前的開源數據庫中間件方案中,MySQL官方先是提供了mysql-proxy,後又推出MySQL router。 MySQL Router主要功能有讀寫分離、故障自動切換、負載均衡、連接池等。

    奇虎360公司也開源了自己的數據庫中間件Atlas,Atlas是基於MySQL proxy實現的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章