Amoeba for Mysql

來源:互聯網
上載者:User

Amoeba 是之前阿里的一位同學開發的一個基於Mysql Client和Server之間的中介層,它具有讀寫分離、資料切分和過濾等一些分散式資料庫常見的一些功能。

amoeba的功能

和Amoeba類似的一個產品是Mysql提供的Mysql-proxy,但是這個產品不但不成熟並且問題還很多,我們從Mysql官網上下的Mysql-proxy基本上沒有什麼功能的,需要額外自己去寫Lua指令碼來完善這些東西,對於只是想用用這些功能的同學這樣學習成本也有點高,所以有了amoeba這個開源項目,他能自動的完成所有功能,而我們所需要做的就只是改下配置就行了。

amoeba的功能模組:

conf 目錄下是amoeba的設定檔,重要的是一些amoeba.xml 和dbServer.xml、Rule.xml等一些檔案,如果只是想實現一些讀寫分離的功能只需要配置下

amoeba.xml和dbServer.xml就可以了,如果要使用資料水平切分功能則配置下Rule.xml , amoeba的資料切分規則需要自己填寫,比較常見的是根據主鍵模數,比如說有2個Mysql可以對2模數,考慮到以後的擴充可以去4和8模數等等,配置Rule.xml的時候需要填死一個均衡欄位,模數就是根據這個欄位模數,一般Int型的取下摸就行了,String類型的算下HashCode。

 

amoeba效能

amoeba的效能還算不錯的,根據我的測試,加了一層中介層的話,Mysql QPS下降在10%之內,(非全記憶體、Select和Update測試)

 

amoeba的缺陷

amoeba基本上所有功能都需要配置,所有如果需要新加一個配置,或者加加一個新的切分規則都需要重啟,並且如果需要切分的表很多的話,整個設定檔會非常長。

amoeba不支援分散式交易,這個算amoeba的硬傷吧。

如果使用 amoeba 做讀寫分離,他會把一個事務中的讀和寫也都分離開,這樣的問題太大了。

amoeba對SQl語句的寫法很講究,比如表A按照ID分割,那麼Insert語句裡面必須填上ID否則不切割,什麼意思呢:

Insert Into A (ID) values (1) 切割

Insert Into A  values (1)  不切割。

他這個是根據SQL語句去做匹配的,這個很不好,均衡欄位還是存起來比較好。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.