(注:這是我手繪的一個(gè)架構(gòu)圖,不代表數(shù)據(jù)庫真實(shí)架構(gòu),只為說明清楚問題而繪制)

1)租戶隔離。多個(gè)租戶共享同一數(shù)據(jù)庫實(shí)例必然需要一個(gè)有效的隔離方案,防止一個(gè)用戶的慢查詢請(qǐng)求或惡意請(qǐng)求影響其他用戶訪問。這里的隔離實(shí)現(xiàn)方式是通過JProxy層對(duì)用戶所有的訪問進(jìn)行了攔截,并根據(jù)用戶訪問的數(shù)據(jù)表索引信息等,對(duì)用戶執(zhí)行該請(qǐng)求所需資源進(jìn)行預(yù)判,并攔截掉惡意的請(qǐng)求及影響其他用戶的請(qǐng)求。同時(shí)為了精確控制每個(gè)用戶的資源使用,整個(gè)系統(tǒng)針對(duì)用戶使用的連接數(shù),內(nèi)存占用容量,磁盤空間使用情況,帶寬流量等都做了有效的記錄和監(jiān)控并根據(jù)用戶的配額進(jìn)行控制。

2)集群路由信息高一致性保障。整體集群采用經(jīng)典的弱中心化集群結(jié)構(gòu),在滿足集群高性能的基礎(chǔ)上同時(shí)具備足夠的可控性,JManager管理整個(gè)集群路由信息,并通過多個(gè)Slave避免單點(diǎn)故障,當(dāng)路由變更時(shí),JManager首先同步路由變更信息給自己的Slave,然后才會(huì)同步所有的JProxy,避免路由變更時(shí)JManager掛掉導(dǎo)致路由不一致。

3)高可用保障。整體集群所有節(jié)點(diǎn)無單點(diǎn),用戶的數(shù)據(jù)庫會(huì)通過zookeeper做主從的高可用,如果用戶主庫掛掉,會(huì)自動(dòng)切換至從庫,并重新綁定floating ip到從庫,不會(huì)影響對(duì)用戶的服務(wù)。(floating ip知道什么意思,想做架構(gòu)師的朋友可以搜一下,這里不做累述)

4)用戶數(shù)據(jù)庫無縫升級(jí)擴(kuò)容。當(dāng)用戶的數(shù)據(jù)庫數(shù)據(jù)增長超過指定配額時(shí),用戶可以選擇升級(jí)數(shù)據(jù)庫,系統(tǒng)會(huì)自動(dòng)根據(jù)資源池使用情況將用戶數(shù)據(jù)庫遷移到比較空閑的實(shí)例上,遷移過程中并不會(huì)影響用戶的服務(wù)。通過定時(shí)自動(dòng)為用戶數(shù)據(jù)庫做快照的方式,結(jié)合數(shù)據(jù)庫binlog同步工具,來幫助用戶實(shí)現(xiàn)增量備份,遷移的工作也是依賴于以上這些工具完成的。

5)型數(shù)據(jù)庫基于安全方面考慮,通過jproxy對(duì)有潛在安全風(fēng)險(xiǎn)的數(shù)據(jù)庫操作語法進(jìn)行了限制,不如不能使用Create database,剛才提到了這棟房子除了您在用,別人也在用,你只有這幾個(gè)或者幾十個(gè)房間而已,你只能在這幾個(gè)或者幾十個(gè)房間里瞎搞,不能去別人的房間胡來!

云計(jì)算出現(xiàn)以后,為企業(yè)、創(chuàng)業(yè)團(tuán)隊(duì)、個(gè)人帶來了便利, 那個(gè)自建機(jī)房、購買或者租用服務(wù)器搭建環(huán)境、中間件、部署應(yīng)用,搞定域名而浪費(fèi)大量人力物力的時(shí)代,我相信在不久的未來可能會(huì)漸行漸遠(yuǎn); 按需付費(fèi)、方便快捷的互聯(lián)網(wǎng)服務(wù)讓云平臺(tái)成為未來軟件服務(wù)市場的寵兒, 而共享性數(shù)據(jù)庫也會(huì)逐步體現(xiàn)其價(jià)值,迎接嶄新的明天,相關(guān)的人才需求也會(huì)緊隨其后。 預(yù)祝中國的云計(jì)算有廣大的發(fā)展空間,越來越多的人才為其服務(wù)!

分享到

redsenlin

相關(guān)推薦