摘要:具有負(fù)載均衡高可用性過(guò)濾讀寫(xiě)分離可路由相關(guān)的到目標(biāo)數(shù)據(jù)庫(kù)可并發(fā)請(qǐng)求多臺(tái)數(shù)據(jù)庫(kù)合并結(jié)果。通過(guò)你能夠完成多數(shù)據(jù)源的高可用負(fù)載均衡數(shù)據(jù)切片的功能,目前已在很多企業(yè)的生產(chǎn)線上面使用。
相信初創(chuàng)公司,剛開(kāi)始的時(shí)候,一般都是單機(jī)數(shù)據(jù)庫(kù)。然而數(shù)據(jù)量上來(lái)了,你就不來(lái)不考慮數(shù)據(jù)庫(kù)集群了。
一般的話,讀都會(huì)比寫(xiě)多,差不多8:2的比例,具體業(yè)務(wù)具體不同。
這里就介紹下Amoeba(變形蟲(chóng))。
Amoeba是什么呢?
Amoeba(變形蟲(chóng))項(xiàng)目,該開(kāi)源框架于2008年 開(kāi)始發(fā)布一款 Amoeba for Mysql軟件。這個(gè)軟件致力于MySQL的分布式數(shù)據(jù)庫(kù)前端代理層,它主要在應(yīng)用層訪問(wèn)MySQL的 時(shí)候充當(dāng)SQL路由功能,專(zhuān)注于分布式數(shù)據(jù)庫(kù)代理層(Database Proxy)開(kāi)發(fā)。座落與 Client、DB Server(s)之間,對(duì)客戶(hù)端透明。具有負(fù)載均衡、高可用性、SQL 過(guò)濾、讀寫(xiě)分離、可路由相關(guān)的到目標(biāo)數(shù)據(jù)庫(kù)、可并發(fā)請(qǐng)求多臺(tái)數(shù)據(jù)庫(kù)合并結(jié)果。 通過(guò)Amoeba你能夠完成多數(shù)據(jù)源的高可用、負(fù)載均衡、數(shù)據(jù)切片的功能,目前Amoeba已在很多 企業(yè)的生產(chǎn)線上面使用。
當(dāng)然Amoeba也有不利的地方,所以當(dāng)你設(shè)計(jì)架構(gòu)的時(shí)候,應(yīng)該把這些因素考慮進(jìn)去。
1.目前還不支持事務(wù); 2.暫時(shí)不支持存儲(chǔ)過(guò)程,官方說(shuō)近期會(huì)支持; 3.不適合從Amoeba導(dǎo)數(shù)據(jù)的場(chǎng)景或者對(duì)大數(shù)據(jù)量查詢(xún)的query并不合適,比如一次請(qǐng)求返回10w以上甚至更多數(shù)據(jù)的場(chǎng)合; 4.暫時(shí)不支持分庫(kù)分表,amoeba目前只做到分?jǐn)?shù)據(jù)庫(kù)實(shí)例,每個(gè)被切分的節(jié)點(diǎn)需要保持庫(kù)表結(jié)構(gòu)一致。
若實(shí)際項(xiàng)目中所需要的功能正式Amoeba的短板,建議使用Mysql Proxy作為中間件,或者在應(yīng)用層通過(guò)程序控制數(shù)據(jù)源,手動(dòng)實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離。
當(dāng)然Amoeba除了上面的明顯的缺點(diǎn)外。在實(shí)際使用中,你會(huì)遇到很多問(wèn)題。一個(gè)很明顯的問(wèn)題就是:如何解決主從數(shù)據(jù)庫(kù)同步延遲問(wèn)題?
這里我可以提供一些思路:
1、有更新數(shù)據(jù)后的 讀取相關(guān)數(shù)據(jù)動(dòng)作,都從默認(rèn)到主庫(kù); 2、利用緩存;插入新的數(shù)據(jù),會(huì)有l(wèi)ast_id返回,組裝成數(shù)據(jù),緩存到前端。讀取此 id 數(shù)據(jù)時(shí),先從緩存取。 ...
當(dāng)然問(wèn)題提出來(lái),有很多解決方案,具體業(yè)務(wù)具體分析。這里只做參考。
關(guān)于Amoeba環(huán)境的配置,我也不多介紹,網(wǎng)上一大堆教程。 這里我只簡(jiǎn)單介紹下Amoeba,具體使用,需要自己去摸索。自己不去摸索,永遠(yuǎn)學(xué)不會(huì)。
Amoeba使用指南(http://docs.hexnova.com/amoeba/)
其實(shí)技術(shù)問(wèn)題都好解決,關(guān)鍵是要提出問(wèn)題,然后怎樣合理設(shè)計(jì)架構(gòu)去解決問(wèn)題。我喜歡研究各種技術(shù)解決方案,然后比較之,吸取精華,設(shè)計(jì)出最佳的解決方案。
針對(duì)上面問(wèn)題,大家可以提出自己的思考。歡迎留言討論。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17496.html
摘要:具有負(fù)載均衡高可用性過(guò)濾讀寫(xiě)分離可路由相關(guān)的到目標(biāo)數(shù)據(jù)庫(kù)可并發(fā)請(qǐng)求多臺(tái)數(shù)據(jù)庫(kù)合并結(jié)果。通過(guò)你能夠完成多數(shù)據(jù)源的高可用負(fù)載均衡數(shù)據(jù)切片的功能,目前已在很多企業(yè)的生產(chǎn)線上面使用。一、Amoeba介紹1、優(yōu)點(diǎn)1)這個(gè)軟件致力于MySQL的分布式數(shù)據(jù)庫(kù)前端代理層,它主要在應(yīng)用層訪問(wèn)MySQL的 時(shí)候充當(dāng)SQL路由功能,專(zhuān)注于分布式數(shù)據(jù)庫(kù)代理層(Database Proxy)開(kāi)發(fā)。2)座落與 Clie...
閱讀 3016·2023-04-25 17:22
閱讀 1578·2019-08-30 15:54
閱讀 1305·2019-08-30 15:53
閱讀 1831·2019-08-30 15:43
閱讀 3116·2019-08-29 12:29
閱讀 1267·2019-08-26 11:37
閱讀 3310·2019-08-23 18:02
閱讀 1644·2019-08-23 14:15