剖析雲計 算中的「共享型數據庫」數據庫
摘要: 隨着雲計算的出現,出現了不少新的名詞,像雲數據庫、雲存儲、彈性擴容,資源隔離等詞彙。下面就你們炒的比較熱的「共享型數據庫」作一下解釋,給你們剖析什麼叫「共享型數據庫」。 安全
我首先自我介紹一下,我從事IT行業10年,有多年的架構師經驗與產品管理經驗。下面是我的經驗,以及與一些谷歌、BAT、京東等公司雲計算架構師交流獲得的心得的總結,爲你們分析下什麼是「共享型數據庫」。服務器
什麼是共享型數據庫架構
談及「共享型數據庫」,最讓咱們困惑的是「共享型」三個字。 」共享型「讓咱們會想到其反義詞 — 「獨享型」。 沒錯,「共享型數據庫」是對比「獨享型數據庫」的一種針對用戶資源全部權的數據庫稱謂, 它是伴隨着雲計算出來以後的一種數據庫創新,以節約資源爲目的,而通常狀況下,本身的服務器或PC機上安裝的不與人共享的數據稱爲「獨享型數據庫」。不少人不明白共享型數據庫的特色,那麼我接下來就簡單介紹一下。工具
共享型數據庫與獨享型數據庫的特色對比性能
在介紹共享型數據庫以前先來分析一下什麼叫「獨享型數據庫」。 「獨享型數據庫」,顧名思義,「獨享」就是本身的數據庫,在雲計算出來以前,咱們幾乎沒有獨享型數據庫的概念,由於沒有對比,認爲全部的數據庫都應該叫作獨享型數據庫。 「獨享型數據庫」就好比咱們有一起地(這塊是有地址和門牌號的,比如數據庫IP和端口),本身在這塊兒地上修一棟房子當倉庫(相似於咱們建立了一個數據庫), 咱們在這棟房子裏任意使用房間來存東西 (相似於咱們能夠建立Table同樣)。雲計算
「共享型數據庫」是爲節省資源、下降開發者成本孕育而生的,不少人一塊兒共同使用這棟樓房,可是這棟樓房不是屬於具體某一我的, 是僱主的資產。在雲平臺的世界裏,僱主是提供雲數據庫的供應商,好比「京東雲擎」, 使用服務的人稱爲「租戶」。你們在一塊兒使用一個數據庫,你有建立表的權限、修改表的權限,可是沒有建立數據庫、修改數據庫的權限,由於這棟樓是你們的,不是你一我的的,而你,只是租戶之一。固然,你的幾個房間會給你一個標籤,取個名字,是某某人的(這個名字就是你之後使用數據庫的名稱); 您的這些房間與其餘人的房間也是徹底隔離的,彼此是不存在隱私暴露的問題的。spa
"共享型數據庫」的租戶的房租比較便宜,由於按需收費,甚至免費。「按需收費「是雲平臺的共同特色,由於你的房間是用來存東西的,就相似於你的數據庫表是用來存數據的同樣, 在之前你使用獨享型數據庫,你本身買了一個雲數據庫,是一次性投入,比如你花費了一生的積蓄來買了一棟房子,可是你真的須要那麼房間來存你的東西嗎?如存糧食? 也許你本身都不知道你的東西有多少個東西。 共享型數據庫的誕生解決了這個問題,通常的狀況下,你有多少東西,你就租多大的房間,房東就收你多少的費用。這種就叫按需付費。有這樣服務的雲平臺有不少,好比百度的BAE、新浪的SAE、京東的JAE (即雲擎)。目前BAE的數據庫是按空間收費,SAE是既按空間計費,也按流量計費。京東的JAE目前是25G之內免費。 中間件
京東雲擎的雲數據庫的特色blog
、下面拿京東雲擎 (下面簡稱「雲擎」)的雲數據庫舉例作一下介紹。雲擎是一個應用託管的雲平臺,屬於雲計算模型中的PaaS層。京東雲數據庫分爲獨享型和共享型數據庫兩種,在雲擎裏使用的共享型數據庫,由於雲擎是一個PaaS平臺,(我這裏不介紹PaaS平臺,你們去百度、Google一下)。我只插簡單說一下其特色,PaaS平臺的主要特色就是節約資源,按需分配,因此雲擎使用了共享型數據庫。下面就簡單介紹一下其特色吧:
先看看我手繪的一個架構圖:
(注:不表明雲擎雲數據庫真實架構,只爲說明清楚問題而繪製)
1. 租戶隔離。 多個租戶共享同一數據庫實例必然須要一個有效的隔離方案,防止一個用戶的慢查詢請求或惡意請求影響其餘用戶訪問。這裏的隔離實現方式是經過JProxy層對用戶全部的訪問進行了攔截,並根據用戶訪問的數據表索引信息等,對用戶執行該請求所需資源進行預判,並攔截掉惡意的請求及影響其餘用戶的請求。同時爲了精確控制每一個用戶的資源使用,整個系統針對用戶使用的鏈接數,內存佔用容量,磁盤空間使用狀況,帶寬流量等都作了有效的記錄和監控並根據用戶的配額進行控制。
2. 集羣路由信息高一致性保障。總體集羣採用經典的弱中心化集羣結構,在知足集羣高性能的基礎上同時具有足夠的可控性,JManager管理整個集羣路由信息,並經過多個Slave避免單點故障,當路由變動時,JManager首先同步路由變動信息給本身的Slave,而後纔會同步全部的JProxy,避免路由變動時JManager掛掉致使路由不一致。
3. 高可用保障。總體集羣全部節點無單點,用戶的數據庫會經過zookeeper作主從的高可用,若是用戶主庫掛掉,會自動切換至從庫,並從新綁定floating ip到從庫,不會影響對用戶的服務。(floating ip知道什麼意思,想作架構師的朋友能夠搜一下,這裏不作累述)
4. 用戶數據庫無縫升級擴容。當用戶的數據庫數據增加超過指定配額時,用戶能夠選擇升級數據庫,系統會自動根據資源池使用狀況將用戶數據庫遷移到比較空閒的實例上,遷移過程當中並不會影響用戶的服務。經過定時自動爲用戶數據庫作快照的方式,結合數據庫binlog同步工具,來幫助用戶實現增量備份,遷移的工做也是依賴於以上這些工具完成的。
5. 共享型數據庫基於安全方面考慮,經過jproxy對有潛在安全風險的數據庫操做語法進行了限制,不如不能使用Create database,剛纔提到了這棟房子除了您在用,別人也在用,你只有這幾個或者幾十個房間而已,你只能在這幾個或者幾十個房間裏瞎搞,不能去別人的房間胡來!
雲擎的雲數據庫網址是:http://jae.jd.com ,對這方面感興趣的童鞋能夠看看,目前是無償使用的。
總結
雲計算出現之後,爲企業、創業團隊、我的帶來了便利, 那個自建機房、購買或者租用服務器搭建環境、中間件、部署應用,搞定域名而浪費大量人力物力的時代,我相信在不久的將來可能會漸行漸遠; 按需付費、方便快捷的互聯網服務讓雲平臺成爲將來軟件服務市場的寵兒, 而共享型數據庫也會逐步體現其價值,迎接嶄新的明天,相關的人才需求也會緊隨其後。 預祝中國的雲計算有廣大的發展空間,愈來愈多的人才爲其服務!
新浪微博:劉維生活路
我的郵箱:liuwei.norry@qq.com