金山云CTO楊鋼:從零開始 做大云存儲(chǔ) |
發(fā)布時(shí)間: 2012/9/5 16:44:41 |
近兩年,國內(nèi)外云存儲(chǔ)市場(chǎng)異常火爆,不管是微軟、谷歌、蘋果、亞馬遜這樣的國際巨頭,還是國內(nèi)百度、360、騰訊這樣的互聯(lián)網(wǎng)翹楚,又或者是聯(lián)想、華為、金山這樣的傳統(tǒng)廠商都紛紛表示出了對(duì)云存儲(chǔ)十足的熱情。
近日,金山云CTO楊鋼在一次演講中分享自己在云存儲(chǔ)方面的體會(huì)《從零開始,如何做大云存儲(chǔ)》。楊鋼認(rèn)為在云存儲(chǔ)火熱的今天,從個(gè)人到企業(yè),無一不奔向云存儲(chǔ)這條大道。但對(duì)于金山云來說,發(fā)展到如今的云存儲(chǔ)規(guī)模,也是從零而始。從2007年開始,設(shè)立云存儲(chǔ)實(shí)驗(yàn)室,2011年推出金山快盤,這期間如何邁過門檻?又有哪些技術(shù)?下面的內(nèi)容楊鋼將一一向您分享其成功的經(jīng)驗(yàn)。 楊鋼表示,金山云目前主要業(yè)務(wù)是金山快盤,雖然定位是個(gè)人存儲(chǔ)中心,在各種終端上面都有客戶端而且在國內(nèi)排名也是領(lǐng)先的,關(guān)鍵問題是和移動(dòng)終端互聯(lián)網(wǎng)應(yīng)用我們還是學(xué)習(xí)者。這次和大家交流一些與我們自己做云存儲(chǔ),金山云做云存儲(chǔ)做得挺早的,當(dāng)時(shí)那時(shí)候存儲(chǔ)實(shí)驗(yàn)室的負(fù)責(zé)人,許樹偉在隔壁分會(huì)場(chǎng)跟大家講?毂P做到現(xiàn)在,事實(shí)上它的存儲(chǔ)技術(shù)一直支持了它的發(fā)展,我會(huì)介紹一下我們整個(gè)技術(shù)演進(jìn)的過程,以及希望快盤和金山云如何幫助移動(dòng)互聯(lián)網(wǎng)開發(fā)怎么樣更快的通過云計(jì)算.的服務(wù)性質(zhì)的應(yīng)用。 在現(xiàn)在這個(gè)年代,如果你做的是單機(jī)的應(yīng)該不會(huì)有這樣的項(xiàng)目出現(xiàn),或多或少現(xiàn)在所有新的應(yīng)用都會(huì)帶著各種各樣互聯(lián)網(wǎng)服務(wù),我們看看,以金山為例子,我們團(tuán)隊(duì)來自WPS,我做了八年的Office軟件,快盤主要來自WPS團(tuán)隊(duì),因?yàn)槭强蛻舳塑浖_發(fā)團(tuán)隊(duì),怎么樣開始一段云計(jì)算.的冒險(xiǎn),我們從頭開始。這個(gè)地方和我們的發(fā)展軌跡稍微做一些介紹,為了在學(xué)術(shù)上更好說一些。 首先,我們需要做在線服務(wù),有一個(gè)很經(jīng)典的架構(gòu),阿帕奇加上PSP,這個(gè)圖上的結(jié)構(gòu),所有的服務(wù)都可以做在一臺(tái)服務(wù)器上,我們叫它的All In Server,業(yè)務(wù)再往前發(fā)展可以看到一臺(tái)業(yè)務(wù)服務(wù)器,它已經(jīng)沒有辦法支撐業(yè)務(wù)本身發(fā)展的需求,這個(gè)時(shí)候需要多臺(tái)業(yè)務(wù)服務(wù)器,多臺(tái)業(yè)務(wù)服務(wù)器,前面需要有負(fù)載均衡的方案,比較簡(jiǎn)單可以采取的方案有三種的第一種,DNS Polling,第二種LVS,第三種利用反向代理來實(shí)現(xiàn),我們發(fā)現(xiàn)數(shù)據(jù)庫開始關(guān)注了,我們首先關(guān)注數(shù)據(jù)庫的第一個(gè)方面,互聯(lián)網(wǎng)服務(wù)最重要的東西在數(shù)據(jù)庫里面,如果數(shù)據(jù)庫出了任何的問題,我們就回高老莊了。有一個(gè)同步的模型所有主流關(guān)系數(shù)據(jù)庫來做,這樣可以馬上利用冗余的機(jī)器來頂上。 到了下一步,隨著互聯(lián)網(wǎng)越來越大,比如說我們的每日?qǐng)?bào)告用戶超過了一萬人之后,單臺(tái)的機(jī)器通過本身擴(kuò)展,加CPU,加硬盤,其實(shí)已經(jīng)不夠用了,我們做一個(gè)水平分表,最常用的方面把USDE用一個(gè)值做到某一臺(tái)服務(wù)器,我們也可以看到這圖里面繼續(xù)往前演進(jìn),數(shù)據(jù)庫出現(xiàn)了Cluster的概念。再往下一步,實(shí)際上我們會(huì)遇到另外一個(gè)問題,絕大部分?jǐn)?shù)據(jù)庫操作行為冷、熱數(shù)據(jù)之分,一般的讀寫比比較高的讀寫值,我們自己業(yè)務(wù)也有例外的情況,但是絕大部分是這種情況,這種情況下面我們與其說不停的提高數(shù)據(jù)庫,不管臺(tái)數(shù)還是數(shù)據(jù)庫的配置,讓數(shù)據(jù)庫顯示得更快,還不如采取更節(jié)省錢的方式,這樣數(shù)據(jù)庫投資不用那么大,這時(shí)候很自然引用了Cache。使用Cache有兩種方式,第一種方式這個(gè)Cache只讀,如果數(shù)據(jù)發(fā)生了變化就把Cache除掉,還有透寫,如果寫操作由Cache寫進(jìn)去,看大家的個(gè)人喜好了。 到這個(gè)時(shí)候一個(gè)完整的互聯(lián)網(wǎng)服務(wù)的結(jié)構(gòu),就已經(jīng)搭成了,基本上跑到這個(gè)時(shí)候業(yè)務(wù)到底有沒有人用,基本上看得出來。剩下的就是當(dāng)這個(gè)業(yè)務(wù)繼續(xù)往前發(fā)展,移動(dòng)互聯(lián)網(wǎng)越來越大,每年負(fù)載越來越大,大家每天都在為宕機(jī)這些事情奔波的時(shí)候,我們繼續(xù)往前走。剛才提到了水平分表,我們剛才的方案非常簡(jiǎn)單,比如說就按照USID取一臺(tái)數(shù)據(jù)庫,這種屬于固定的,固定的方式有一個(gè)比較麻煩的事情,我們要進(jìn)行數(shù)據(jù)擴(kuò)展,加服務(wù)器,這個(gè)時(shí)候很可能影響服務(wù),要求一致性非常高我們得暫時(shí)中斷服務(wù),這種對(duì)于在線上運(yùn)行一段時(shí)間的業(yè)務(wù)來說不可接受的。所以我們還可以加一個(gè)數(shù)據(jù)庫路由,由它來記錄一個(gè)用戶放在哪個(gè)數(shù)據(jù)庫里面,假設(shè)增加數(shù)據(jù)庫,我們可以慢慢的進(jìn)行數(shù)據(jù)遷移,如果我們的區(qū)分力度是user,如果沒有數(shù)據(jù)庫路由停機(jī)避免數(shù)據(jù)導(dǎo)入,這種方式不用停機(jī),相對(duì)來說非常大的進(jìn)展。 大家知道數(shù)據(jù)庫的維護(hù)非常危險(xiǎn),千萬不要沒事兒干去重啟數(shù)據(jù)庫或者做一些比較大的維護(hù)操作,你很可能把數(shù)據(jù)庫讀死,造成整個(gè)業(yè)務(wù)的血崩,這種方案相對(duì)溫和。 當(dāng)業(yè)務(wù)量再往上的時(shí)候,讀寫比不斷上升,Cache,數(shù)據(jù)熱度、密度不是那么高,這個(gè)時(shí)候很可能出現(xiàn)數(shù)據(jù)庫在寫出請(qǐng)求可以做的,由于量太大就讀不出來了,常見辦法是讀寫分離,其他的從庫用來做讀,這種情況使用場(chǎng)景有一定的局限性,比如說數(shù)據(jù)是否要求嚴(yán)格一致性,這個(gè)是會(huì)影響方案。那么相對(duì)來說,很多網(wǎng)站都在用,因?yàn)樵跇I(yè)界同行之間聊天都在用,很多網(wǎng)站跳過這個(gè)方案,金山快盤沒有使用這個(gè)方案,跳到后面了。到這塊一般來說這個(gè)網(wǎng)站的負(fù)載量已經(jīng)非常大了,你比如說,我們到了這步,我們可以看到在之前的時(shí)候,把所有的邏輯只是做了橫向拆分比如說,負(fù)載均衡,像最開始的時(shí)候,所有的邏輯做了負(fù)載均衡,有多個(gè)邏輯服務(wù)器,但是當(dāng)邏輯越來越復(fù)雜的時(shí)候,如果把它整合到單一的業(yè)務(wù)邏輯服務(wù)器,這個(gè)業(yè)務(wù)邏輯本身很復(fù)雜,之間有可能因?yàn)楦鞣N數(shù)據(jù)操作在一起就無法應(yīng)付了,怎么都無法提高,這點(diǎn)基本上每個(gè)公司做互聯(lián)網(wǎng)服務(wù),慢慢往前做都會(huì)遇到這個(gè)情況,而且大家都會(huì)經(jīng)過這一關(guān),把邏輯進(jìn)行縱向拆分。 大家可以看到這張示意圖,這張示意圖首先是分出了兩部分,Logical Sever和website Sever,同樣的數(shù)據(jù)庫本身也要做這種,除了剛才按照水平區(qū)分之外,如果單一數(shù)據(jù)庫涵蓋了所有數(shù)據(jù),表比較復(fù)雜,這個(gè)數(shù)據(jù)庫本身性能影響非常大,其實(shí)做云服務(wù),最重要的一點(diǎn)就是把邏輯一致的東西盡量的把它單獨(dú)劃分出來,實(shí)際上在數(shù)據(jù)庫也要做垂直分表,比如說帳號(hào)會(huì)在單獨(dú)庫里面,我們做電商庫存,商品的展現(xiàn)數(shù)據(jù),評(píng)論數(shù)據(jù)放到不同數(shù)據(jù)庫里面,要求實(shí)質(zhì)性非常高,比如說對(duì)于庫存要求非常高,有一些要求很低,比如說評(píng)論,延遲就延遲,無所謂。放到不同的數(shù)據(jù)庫之后,它們可以根據(jù)不同的需求去選擇不同的數(shù)據(jù)庫配置方案,這個(gè)時(shí)候大家可以看到整個(gè)業(yè)務(wù)系統(tǒng),相對(duì)來說分離已經(jīng)比較細(xì)了。像快盤業(yè)務(wù)邏輯拆分下來,如果在上面手繪,A4的紙已經(jīng)畫不下了,得拿一張跟北京地圖那么大的紙,把服務(wù)分解和關(guān)系畫在一張圖上。 本文出自:億恩科技【prubsntakaful.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |