剖析雲平台中的“共享型數據庫”


剖析雲計 算中的“共享型數據庫”

 

 

摘要: 隨着雲計算的出現,出現了很多新的名詞,像雲數據庫、雲存儲、彈性擴容,資源隔離等詞匯。下面就大家炒的比較熱的“共享型數據庫”做一下解釋,給大家剖析什么叫“共享型數據庫”。 

 

我首先自我介紹一下,我從事IT行業10年,有多年的架構師經驗與產品管理經驗。下面是個人經驗,以及與一些谷歌、BAT、京東等公司雲計算架構師交流得到的心得的總結,為大家分析下什么是“共享型數據庫”。

 

什么是共享型數據庫

談及“共享型數據庫”,最讓我們困惑的是“共享型”三個字。 ”共享型“讓我們會想到其反義詞 — “獨享型”。 沒錯,“共享型數據庫”是對比“獨享型數據庫”的一種針對用戶資源所有權的數據庫稱謂, 它是伴隨着雲計算出來之后的一種數據庫創新,以節約資源為目的,而一般情況下,自己的服務器或PC機上安裝的不與人共享的數據稱為“獨享型數據庫”。很多人不明白共享型數據庫的特點,那么我接下來就簡單介紹一下。

 

共享型數據庫與獨享型數據庫的特點對比

 

     在介紹共享型數據庫之前先來分析一下什么叫“獨享型數據庫”。 “獨享型數據庫”,顧名思義,“獨享”就是自己的數據庫,在雲計算出來之前,我們幾乎沒有獨享型數據庫的概念,因為沒有對比,認為所有的數據庫都應該叫做獨享型數據庫。 “獨享型數據庫”就比如我們有一塊兒地(這塊是有地址和門牌號的,好比數據庫IP和端口),自己在這塊兒地上修一棟房子當倉庫(類似於我們創建了一個數據庫), 我們在這棟房子里任意使用房間來存東西 (類似於我們可以創建Table一樣)。

      “共享型數據庫”是為節省資源、降低開發者成本孕育而生的,很多人一起共同使用這棟樓房,但是這棟樓房不是屬於具體某一個人, 是雇主的資產。在雲平台的世界里,雇主是提供雲數據庫的供應商,比如“京東雲擎”, 使用服務的人稱為“租戶”。大家在一起使用一個數據庫,你有創建表的權限、修改表的權限,但是沒有創建數據庫、修改數據庫的權限,因為這棟樓是大家的,不是你一個人的,而你,只是租戶之一。當然,你的幾個房間會給你一個標簽,取個名字,是某某人的(這個名字就是你以后使用數據庫的名稱); 您的這些房間與其他人的房間也是完全隔離的,彼此是不存在隱私暴露的問題的。

"共享型數據庫”的租戶的房租比較便宜,因為按需收費,甚至免費。“按需收費“是雲平台的共同特點,因為你的房間是用來存東西的,就類似於你的數據庫表是用來存數據的一樣, 在以前你使用獨享型數據庫,你自己買了一個雲數據庫,是一次性投入,好比你花費了一輩子的積蓄來買了一棟房子,但是你真的需要那么房間來存你的東西嗎?如存糧食? 也許你自己都不知道你的東西有多少個東西。 共享型數據庫的誕生解決了這個問題,一般的情況下,你有多少東西,你就租多大的房間,房東就收你多少的費用。這種就叫按需付費。有這樣服務的雲平台有很多,比如百度的BAE、新浪的SAE、京東的JAE (即雲擎)。目前BAE的數據庫是按空間收費,SAE是既按空間計費,也按流量計費。京東的JAE目前是25G以內免費。    

 

京東雲擎的雲數據庫的特點

、下面拿京東雲擎 (下面簡稱“雲擎”)的雲數據庫舉例做一下介紹。雲擎是一個應用托管的雲平台,屬於雲計算模型中的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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM