隨著云計算的出現(xiàn),出現(xiàn)了很多新的名詞,像云數(shù)據(jù)庫、云存儲、彈性擴(kuò)容,資源隔離等詞匯。下面就大家炒的比較熱的「共享型數(shù)據(jù)庫」做一下解釋,給大家剖析什么叫「共享性數(shù)據(jù)庫」。
我首先自我介紹一下,我從事 IT 行業(yè) 10 年,在多年以前是一名架構(gòu)師。下面是個人經(jīng)驗(yàn),以及與一些谷歌、BAT、京東等公司云計算架構(gòu)師交流得到的心得的總結(jié),為大家分析下什么是「共享性數(shù)據(jù)庫」。
什么是共享性數(shù)據(jù)庫
談及「共享性數(shù)據(jù)庫」,最讓我們困惑的是「共享性」三個字?!构蚕硇浴缸屛覀儠氲狡浞戳x詞—「獨(dú)享性」。沒錯,「共享型數(shù)據(jù)庫」是對比「獨(dú)享性數(shù)據(jù)庫」的一種針對用戶資源所有權(quán)的數(shù)據(jù)庫稱謂,它是伴隨著云計算出來之后的一種數(shù)據(jù)庫創(chuàng)新,以節(jié)約資源為目的,而一般情況下,自己的服務(wù)器或 PC 機(jī)上安裝的不與人共享的數(shù)據(jù)稱為「獨(dú)享性數(shù)據(jù)庫」。很多人不明白共享性數(shù)據(jù)庫的特點(diǎn),那么我接下來就簡單介紹一下。
共享性數(shù)據(jù)庫與獨(dú)享性數(shù)據(jù)庫的特點(diǎn)對比
在介紹共享性數(shù)據(jù)庫之前先來分析一下什么叫「獨(dú)享性數(shù)據(jù)庫」?!釜?dú)享性數(shù)據(jù)庫」,顧名思義,「獨(dú)享」就是自己的數(shù)據(jù)庫,在云計算出來之前,我們幾乎沒有獨(dú)享性數(shù)據(jù)庫的概念,因?yàn)闆]有對比,認(rèn)為所有的數(shù)據(jù)庫都應(yīng)該叫做獨(dú)享性數(shù)據(jù)庫?!釜?dú)享性數(shù)據(jù)庫」就比如我們有一塊兒地(這塊是有地址和門牌號的,好比數(shù)據(jù)庫 IP 和端口),自己在這塊兒地上修一棟房子當(dāng)倉庫(類似于我們創(chuàng)建了一個數(shù)據(jù)庫),我們在這棟房子里任意使用房間來存東西(類似于我們可以創(chuàng)建 Table 一樣)。
「共享型數(shù)據(jù)庫」是為節(jié)省資源、降低開發(fā)者成本孕育而生的,很多人一起共同使用這棟樓房,但是這棟樓房不是屬于具體某一個人, 是雇主的資產(chǎn)。在云平臺的世界里,雇主是提供云數(shù)據(jù)庫的供應(yīng)商,比如「京東云擎」,使用服務(wù)的人稱為「租戶」。大家在一起使用一個數(shù)據(jù)庫,你有創(chuàng)建表的權(quán)限、修改表的權(quán)限,但是沒有創(chuàng)建數(shù)據(jù)庫、修改數(shù)據(jù)庫的權(quán)限,因?yàn)檫@棟樓是大家的,不是你一個人的,而你,只是租戶之一。當(dāng)然,你的幾個房間會給你一個標(biāo)簽,取個名字,是某某人的(這個名字就是你以后使用數(shù)據(jù)庫的名稱); 您的這些房間與其他人的房間也是完全隔離的,彼此是不存在隱私暴露的問題的。
「共享性數(shù)據(jù)庫」的租戶的房租比較便宜,因?yàn)榘葱枋召M(fèi),甚至免費(fèi)。「按需收費(fèi)「是云平臺的共同特點(diǎn),因?yàn)槟愕姆块g是用來存東西的,就類似于你的數(shù)據(jù)庫表是用來存數(shù)據(jù)的一樣,在以前你使用獨(dú)享性數(shù)據(jù)庫,你自己買了一個云數(shù)據(jù)庫,是一次性投入,好比你花費(fèi)了一輩子的積蓄來買了一棟房子,但是你真的需要那么房間來存你的東西嗎?如存糧食? 也許你自己都不知道你的東西有多少個東西。共享性數(shù)據(jù)庫的誕生解決了這個問題,一般的情況下,你有多少東西,你就租多大的房間,房東就收你多少的費(fèi)用。這種就叫按需付費(fèi)。有這樣服務(wù)的云平臺有很多,比如百度的 BAE、新浪的 SAE、京東的 JAE(即云擎)。目前 BAE 的數(shù)據(jù)庫是按空間收費(fèi),SAE 是既按空間計費(fèi),也按流量計費(fèi)。京東的 JAE 目前是 25G 以內(nèi)免費(fèi)。
京東云擎的云數(shù)據(jù)庫的特點(diǎn)
下面拿京東云擎 (下面簡稱「云擎」) 的云數(shù)據(jù)庫舉例做一下介紹。云擎是一個應(yīng)用托管的云平臺,屬于云計算模型中的 PaaS 層。京東云數(shù)據(jù)庫分為獨(dú)享性和共享性數(shù)據(jù)庫兩種,在云擎里使用的共享性數(shù)據(jù)庫,因?yàn)樵魄媸且粋€ PaaS 平臺,(我這里不介紹 PaaS 平臺,大家去百度、Google 一下)。我只插簡單說一下其特點(diǎn),PaaS 平臺的主要特點(diǎn)就是節(jié)約資源,按需分配,所以云擎使用了共享性數(shù)據(jù)庫。下面就簡單介紹一下其特點(diǎn)吧:
先看看我手繪的一個架構(gòu)圖:
?。ㄗⅲ翰淮碓魄嬖茢?shù)據(jù)庫真實(shí)架構(gòu),只為說明清楚問題而繪制)
1. 租戶隔離。多個租戶共享同一數(shù)據(jù)庫實(shí)例必然需要一個有效的隔離方案,防止一個用戶的慢查詢請求或惡意請求影響其他用戶訪問。這里的隔離實(shí)現(xiàn)方式是通過 JProxy 層對用戶所有的訪問進(jìn)行了攔截,并根據(jù)用戶訪問的數(shù)據(jù)表索引信息等,對用戶執(zhí)行該請求所需資源進(jìn)行預(yù)判,并攔截掉惡意的請求及影響其他用戶的請求。同時為了精確控制每個用戶的資源使用,整個系統(tǒng)針對用戶使用的連接數(shù),內(nèi)存占用容量,磁盤空間使用情況,帶寬流量等都做了有效的記錄和監(jiān)控并根據(jù)用戶的配額進(jìn)行控制。
2. 集群路由信息高一致性保障。整體集群采用經(jīng)典的弱中心化集群結(jié)構(gòu),在滿足集群高性能的基礎(chǔ)上同時具備足夠的可控性,JManager 管理整個集群路由信息,并通過多個 Slave 避免單點(diǎn)故障,當(dāng)路由變更時,JManager 首先同步路由變更信息給自己的 Slave,然后才會同步所有的 JProxy, 避免路由變更時 JManager 掛掉導(dǎo)致路由不一致。
3. 高可用保障。整體集群所有節(jié)點(diǎn)無單點(diǎn),用戶的數(shù)據(jù)庫會通過 zookeeper 做主從的高可用,如果用戶主庫掛掉,會自動切換至從庫,并重新綁定 floating ip 到從庫,不會影響對用戶的服務(wù)。
4. 用戶數(shù)據(jù)庫無縫升級擴(kuò)容。當(dāng)用戶的數(shù)據(jù)庫數(shù)據(jù)增長超過指定配額時,用戶可以選擇升級數(shù)據(jù)庫,系統(tǒng)會自動根據(jù)資源池使用情況將用戶數(shù)據(jù)庫遷移到比較空閑的實(shí)例上,遷移過程中并不會影響用戶的服務(wù)。通過定時自動為用戶數(shù)據(jù)庫做快照的方式,結(jié)合數(shù)據(jù)庫 binlog 同步工具,來幫助用戶實(shí)現(xiàn)增量備份,遷移的工作也是依賴于以上這些工具完成的。
5. 共享型數(shù)據(jù)庫基于安全方面考慮,通過 jproxy 對有潛在安全風(fēng)險的數(shù)據(jù)庫操作語法進(jìn)行了限制,不如不能使用 Create database,剛才提到了這棟房子除了您在用,別人也在用,你只有這幾個或者幾十個房間而已,你只能在這幾個或者幾十個房間里瞎搞,不能去別人的房間胡來!
云擎的云數(shù)據(jù)庫網(wǎng)址是:,對這方面感興趣的童鞋可以看看,目前是免費(fèi)使用的。
總結(jié)
云計算出現(xiàn)以后,為企業(yè)、創(chuàng)業(yè)團(tuán)隊、個人帶來了便利,那個自建機(jī)房、購買或者租用服務(wù)器搭建環(huán)境、中間件、部署應(yīng)用,搞定域名而浪費(fèi)大量人力物力的時代,我相信在不久的未來可能會漸行漸遠(yuǎn); 按需付費(fèi)、方便快捷的互聯(lián)網(wǎng)服務(wù)讓云平臺成為未來軟件服務(wù)市場的寵兒,而共享性數(shù)據(jù)庫也會逐步體現(xiàn)其價值,迎接嶄新的明天,相關(guān)的人才需求也會緊隨其后。預(yù)祝中國的云計算有廣大的發(fā)展空間,越來越多的人才為其服務(wù)!