我首先HTTP://www.aliyun.com/zixun/aggregation/7415.html">自我介紹一下,我從事IT行業10年,在多年以前是一名架構師,現在在一家互聯網公司做產品經理,下面是個人經驗 ,以及與一些雲計算架構師交流得到的心得的總結,下面就以京東雲擎的雲資料庫為例, 有不妥之處請見諒。
什麼是共用性資料庫
談及「共用性資料庫」,最讓我們困惑的是「共用性」三個字。 」共用性「讓我們會想到其反義詞 — 「獨享性」。 沒錯,「共用型資料庫」是對比「獨享性資料庫」的一種針對使用者資源擁有權的資料庫稱謂, 它是伴隨著雲計算出來之後的一種資料庫創新,是節約資源的體現,而一般情況下,自己的伺服器或PC機上安裝的不與人共用的資料稱為「獨享性資料庫」。 很多人不明白共用性資料庫的特點,那麼我接下來就簡單介紹一下。
共用性資料庫與獨享性資料庫的特點對比
在介紹共用性資料庫之前先來分析一下什麼叫「獨享性資料庫」。 「獨享性資料庫」,顧名思義,「獨享」就是自己的資料庫,在雲計算出來之前,我們幾乎沒有獨享性資料庫的概念,因為沒有對比,認為所有的資料庫都應該叫做獨享性資料庫。 「獨享性資料庫」就比如我們有一塊兒地(這塊是有位址和門牌號的,好比資料庫IP和埠),自己在這塊兒地上修一棟房子當倉庫(類似于我們創建了一個資料庫), 我們在這棟房子裡任意使用房間來存東西 (類似于我們可以創建Table一樣)。
「共用型資料庫」是為節省資源、降低開發者成本孕育而生的,很多人一起共同使用這棟樓房,但是這棟樓房不是屬於具體某一個人, 是雇主的資產。 在雲平臺的世界裡,雇主是提供雲資料庫的供應商,比如「京東雲擎」, 使用服務的人稱為「租戶」。 大家在一起使用一個資料庫,你有創建表的許可權、修改表的許可權,但是沒有創建資料庫、修改資料庫的許可權,因為這棟樓是大家的,不是你一個人的,而你,只是租戶之一。 當然,你的幾個房間會給你一個標籤,取個名字,是某某人的(這個名字就是你以後使用資料庫的名稱); 您的這些房間與其他人的房間也是完全隔離的,彼此是不存在隱私暴露的問題的。
"共用性資料庫」的租戶的房租比較便宜,因為按需收費,甚至免費。 「按需收費「是雲平臺的共同特點,因為你的房間是用來存東西的,就類似于你的資料庫表是用來存資料的一樣, 在以前你使用獨享性資料庫,你自己買了一個雲資料庫,是一次性投入,好比你花費了一輩子的積蓄來買了一棟房子, 但是你真的需要那麼房間來存你的東西嗎? 如存糧食? 也許你自己都不知道你的東西有多少個東西。 共用性資料庫的誕生解決了這個問題,一般的情況下,你有多少東西,你就租多大的房間,房東就收你多少的費用。 這種就叫按需付費。 有這樣服務的雲平臺有很多,比如百度的BAE、新浪的SAE、京東的JAE (即雲擎)。 順便說一句,目前BAE的資料庫是按需收費、SAE是達到1G吧、京東的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 ,對這方面感興趣的童鞋可以看看,要先註冊才能使用,不過是免費的。
總結
雲計算出現以後,為企業、創業團隊、個人帶來了便利, 那個自建機房、購買或者租用伺服器搭建環境、中介軟體、部署應用,搞定功能變數名稱而浪費大量人力物力的時代,我相信在不久的未來可能會漸行漸遠; 按需付費、 方便快捷的互聯網服務讓雲平臺成為未來軟體服務市場的寵兒, 而共用性資料庫也會逐步體現其價值,迎接嶄新的明天,相關的人才需求也會緊隨其後。 預祝中國的雲計算有廣大的發展空間,越來越多的人才為其服務!