Amoeba是一個類似 MySQL Proxy 的 分布式數據庫中間代理層軟件,是由陳思儒開發的一個開源的java項目。其主要功能包括讀寫分離,垂直分庫,水平分庫等,經過測試,發現其功能和穩定性都 非常的不錯,如果需要構架分布式數據庫環境,采用Amoeba是一個不錯的方案。目前Amoeba一共包括For aladdin,For MySQL和For Oracle三個版本,本文主要關注For MySQL版本的一個讀寫分離實現。實際上垂直切分和水平切分的架構也相差不大,改動幾個配置就可以輕松實現。
下圖是一個采用Amoeba的讀寫分離技術結合MySQL的Master-Slave Replication的一個分布式系統的架構:
Amoeba處于在應用和數據庫之間,扮演一個中介的角色,將應用傳遞過來的SQL語句經過分析后,將寫的語句交給Master庫執行,將讀的語句 路由到Slave庫執行(當然也可以到Master讀,這個完全看配置)。Amoeba實現了簡單的負載均衡(采用輪詢算法)和Failover。如果配 置了多個讀的庫,則任何一個讀的庫出現宕機,不會導致整個系統故障,Amoeba能自動將讀請求路由到其他可用的庫上,當然,寫還是單點的依賴于 Master數據庫的,這個需要通過數據庫的切換,或者水平分割等技術來提升Master庫的可用性。
Amoeba可以在不同機器上啟動多個,并且做同樣的配置來進行水平擴展,以分擔壓力和提升可用性,可以將Amoeba和MySQL裝在同一臺機 器,也可以裝在不同的機器上,Amoeba本身不做數據緩存,所以對于內存消耗很少,主要是CPU占用。對于應用來說,圖中的三個Amoeba就是三臺一 模一樣的MySQL數據庫,連接其中任何一臺都是可以的,所以需要在應用端有一個Load balance和Failover的機制,需要連接數據庫時從三臺中隨機挑選一臺即可,如果其他任何一臺出現故障,則可以自動Failover到剩余的可 用機器上。MySQL的JDBC驅動從connector-j 3.17版本起已經提供了這樣的負載均衡和故障切換的功能,那么剩下的事情對于應用來說就很簡單了,不需要做太多的改動就能搭建一套高可用的MySQL分 布式數據庫環境,何樂而不為?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
