日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

amoeba mysql_Amoeba介绍及Amoeba和mysql proxy有区别

發布時間:2023/12/18 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 amoeba mysql_Amoeba介绍及Amoeba和mysql proxy有区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Amoeba 是什么

Amoeba(變形蟲)項目,專注 數據庫 proxy 開發。座落與Client、DB Server(s)之間。對客戶端透明。具有負載均衡、高可用性、sql過濾、讀寫分離、可路由相關的query到目標數據庫、可并發請求多臺數據庫合并結果。

假如有一條sql: select * from test.account as t where t.id = 1990000002; 假設account表的那些id從1-1990000002 都有數據,那么你的account表將會多么龐大. 你已經不可能將所有的數據存放到一臺數據庫上面,這樣的數據庫執行sql性能將受到嚴重的影響。假設你將這些數據切分成100臺數據庫,每臺存放20,000,000數據。

只要能夠制定一個恰當的數據切分規則,那么amoeba 將輕易解決數據切分并且可以將query語句路由到目標數據庫上面執行。

主要解決:降低 數據切分帶來的復雜多數據庫結構

降低 數據切分規則 給應用帶來的影響

降低db 與客戶端的連接數

讀寫分離

相關文章有:

2.?Amoeba?跟 mysql proxy有區別。

主要是針對數據切分方面。

在 mysql proxy 上面如果想要讀寫分離并且 讀集群、寫集群 機器比較多情況下,用mysql proxy 需要相當大的工作量,目前mysql proxy沒有現成的 lua腳本。mysql proxy根本沒有配置文件,lua腳本就是它的全部,當然可以是相當方便的。那么同樣這種東西需要編寫大量的lua腳本才能完成一個復雜的配置。amoeba目標是走產品化這條路。只需要進行相關的配置就可以滿足需求。

一、Mysql Master/Slave 結構之下的讀寫分離:

Master: server1 (可讀寫)

slaves:server2、server3、server4(3個平等的數據庫。只讀/負載均衡)

amoeba提供讀寫分離pool相關配置。并且提供負載均衡配置。

可配置server2、server3、server4形成一個虛擬的 virtualSlave,該配置提供負載均衡、failOver、故障恢復功能

Xml代碼?< type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=%0A%3CdbServer%20name%3D%22virtualSlave%22%20virtual%3D%22true%22%3E%0A%09%3CpoolConfig%3E%0A%09%09%3CclassName%3Ecom.meidusa.amoeba.server.MultipleServerPool%3C%2FclassName%3E%0A%09%09%3C!--%20%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%8F%82%E6%95%B0%201%3DROUNDROBIN%20%2C%202%3DWEIGHTBASED%20--%3E%0A%09%09%3Cproperty%20name%3D%22loadbalance%22%3E1%3C%2Fproperty%3E%0A%09%09%09%09%0A%09%09%3C!--%20%E5%8F%82%E4%B8%8E%E8%AF%A5pool%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E7%9A%84poolName%E5%88%97%E8%A1%A8%E4%BB%A5%E9%80%97%E5%8F%B7%E5%88%86%E5%89%B2%20--%3E%0A%09%09%3Cproperty%20name%3D%22poolNames%22%3Eserver2%2Cserver3%2Cserver4%3C%2Fproperty%3E%0A%09%3C%2FpoolConfig%3E%0A%3C%2FdbServer%3E%0A%0A">

com.meidusa.amoeba.server.MultipleServerPool

1

server2,server3,server4

如果不啟用數據切分,那么只需要配置QueryRouter屬性

wirtePool=server1

readPool=virtualSlave

Xml代碼?< type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=%09%3CqueryRouter%3E%0A%09%09%3CclassName%3Ecom.meidusa.amoeba.mysql.parser.MysqlQueryRouter%3C%2FclassName%3E%0A%09%09%3Cproperty%20name%3D%22LRUMapSize%22%3E1500%3C%2Fproperty%3E%0A%09%09%3Cproperty%20name%3D%22defaultPool%22%3Eserver1%3C%2Fproperty%3E%0A%0A%09%09%3Cproperty%20name%3D%22writePool%22%3Eserver1%3C%2Fproperty%3E%0A%09%09%3Cproperty%20name%3D%22readPool%22%3EvirtualSlave%3C%2Fproperty%3E%0A%0A%09%09%3Cproperty%20name%3D%22needParse%22%3Etrue%3C%2Fproperty%3E%0A%09%3C%2FqueryRouter%3E%0A">

com.meidusa.amoeba.mysql.parser.MysqlQueryRouter

1500

server1

server1

virtualSlave

true

那么遇到update/insert/delete將 query語句發送到 wirtePool,將 select發送到 readPool機器中執行。

二、數據切分:

這方面amoeba顯然更加容易了。

舉個數據切分例子:

select * from user_event where user_id='test' and? gmt_create between Sysdate() -1 and Sysdate()

如果根據gmt_create 時間進行數據切分,比如 6個月進行切分一次

amoeba提供利用類似sql表達式進行數據切分:

規則1:GMT_CREATE > to_date('2008-01-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-05-31','yyyy-mm-dd')

規則1對應服務器1

規則2:GMT_CREATE > to_date('2008-06-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-12-31','yyyy-mm-dd')

規則2對應服務器2

上面的sql的條件 gmt_create 與規則里面的的gmt_create 進行 交集判斷,如果存在交集則表示符合規則。

則會將sql轉移到 規則1 的相應的服務器上面執行。

利用amoeba寫出這種類似規則很容易,但是要想做到數據切分以后可線性擴容,那么這樣的規則需要自己根據業務實際情況進行設置。

amoeba可同時將sql 并發分發到多臺服務器、然后將結果合并再反饋給客戶端,而且amoeba內部現成采用無阻塞模式,工作線程是不會等待的,并發請求多臺 database server情況下,客戶端等待的時間基本上面是性能最差的那臺 database server+amoeba內部解析協議的時間

總結

以上是生活随笔為你收集整理的amoeba mysql_Amoeba介绍及Amoeba和mysql proxy有区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。