剖析雲端計算出來後的“共享型資料庫”

norry2004發表於2014-06-22

【摘要】隨著雲端計算的出現,出現了很多新的名詞,像彈性擴容、平緩遷移、資源隔離等。目前我就“共享型資料庫”做一下解釋,下面就以京東雲擎的雲資料庫為例,給大家剖析什麼叫“共享性資料庫”。

這個是我第一篇帖子,我首先自我介紹一下,我從事IT行業10年,在多年以前是一名架構師,現在在一家網際網路企業做產品經理,下面的文字僅僅是個人與行業一些從業人員交流得到的心得以及總結,有不妥之處請見諒。

“共享型資料庫”是對比“獨享性資料庫”的一種針對使用者資源所有權的資料庫稱謂,它是伴隨著雲端計算出來之後的一種資料庫創新,是節約資源的體現。京東雲擎的雲資料庫是一種共享性資料庫,而自己的機房裡伺服器裡安裝的資料庫屬於獨享性資料庫。很多人不明白共享性資料庫的特點,那麼我接下來就簡單介紹一下。

在介紹共享性資料庫之前先來分析一下什麼叫獨享性資料庫。 “獨享性資料庫”,顧名思議,“獨享”就是自己的資料庫,在雲端計算出來之前,我們用的都應該叫做獨享性資料庫,就比如我們有一塊兒地(類似於一個Schema),自己在這塊兒地上修一棟房子(類似於我們建立了一個資料庫),然後我們在這棟房子裡任意使用房間或者裝修房間(類似於我們可以建立Table一樣)。

“共享型資料庫”是為降低開發者成本而生的,很多人在一起共同使用這棟樓房,但是這棟樓房不是你的,是屬於僱主的資產,意思就是大家在一起使用一個資料庫,你有建立表的許可權、修改表的許可權,但是沒有建立資料庫或者修改資料庫的許可權,因為這棟樓是大家的,不是你一個人的,而你,只是一個租戶。我們在雲端計算中把這類使用者叫做租戶。

“共享性資料庫”的租戶的房子比較便宜,甚至免費,是按需收費的。因為你的房間平時是用來存東西的,就類似於你的資料庫表是用來存資料的一樣,如果放在以前你使用獨享性資料庫,你自己買了一個雲資料庫,是一次性投入,好比你花費了一輩子的積蓄來買了一棟房子,但是你真的需要那麼房間來存你的東西或者糧食嗎?也許你自己都不知道你有多少個東西。共享性資料庫的誕生解決了這個問題,一般的情況是你存多少東西,房東就收你多少的費用,這就叫按需付費。這樣的平臺有很多,比如百度的BAE、新浪的SAE、京東的JAE,目前BAE是按需收費,SAE是達到1G吧,就開始計費,具體不知道(很久沒有開發了);京東的JAE是25G以內免費,超過25G不知道情況。

說一下京東雲擎的雲資料庫特點,因為他們的一個架構師以前是我的徒弟,所以還是比較清楚的。京東的資料庫分為獨享性和共享性兩種,但是在雲擎裡使用的是共享性資料庫,因為雲擎是一個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,剛才提到了這棟房子除了你在用,別人也在用,你只有這幾個或者幾十個房間而已,你只能在這幾個或者幾十個房間裡瞎搞,不能去別人的房間胡來!

    大概畫一個圖給大家:

    enter image description here

今天就說這麼多了,大家有興趣自己去看看吧。

雲擎的雲資料庫網址是:http://jae.jd.com,感興趣的可以看看。

相關文章