今天下面的時(shí)間我給大家講講我們過(guò)去踩過(guò)的坑,還有后面我們面臨的挑戰(zhàn),以及我們?nèi)绾谓鉀Q這些挑戰(zhàn)的一些經(jīng)驗(yàn)。
功能定位
我們整個(gè)數(shù)據(jù)通道的用途和功能定位很明確。因?yàn)镽DS是一個(gè)數(shù)據(jù)庫(kù)的集合,我們現(xiàn)在支持MySQL和MSSQL,我們后面有其他數(shù)據(jù)庫(kù)的加入。這些東西包括不同的數(shù)據(jù)庫(kù)版本,對(duì)用戶來(lái)講我們不希望這些變化對(duì)用戶有很大的一個(gè)干擾,所以我們第一個(gè)比較注重?cái)?shù)據(jù)通道屏蔽后端的變化。第二個(gè)數(shù)據(jù)通道一定高可用。第三我們做公有云服務(wù)的,整個(gè)數(shù)據(jù)通道必須是安全的。因?yàn)樗杏脩舨灰欢ㄊ前踩珜<?,他們不一定有安全意識(shí),我們有責(zé)任和義務(wù)去幫到大家。
第二個(gè)整合數(shù)據(jù)通道。我們希望它能做更多,比如說(shuō)數(shù)據(jù)路由。舉個(gè)例子,我們可以幫助用戶區(qū)分冷熱數(shù)據(jù),冷熱數(shù)據(jù)存在不同的介質(zhì),這樣可以給用戶省錢。還有類似的數(shù)據(jù)操作,今天我們可以做分庫(kù)分表,對(duì)用戶是透明的,或者我們今天用Mysql協(xié)議接不同的后端,用戶對(duì)這個(gè)沒(méi)有感知的,數(shù)據(jù)通道有這個(gè)功能定位。
約束
整個(gè)數(shù)據(jù)通道我們可能跑在普通的PC服務(wù)器上,跟你們用的PC服務(wù)器沒(méi)有什么區(qū)別。
第二個(gè)必須高可用,我們知道宕機(jī)一秒鐘幾秒鐘對(duì)用戶意味著什么,有成千上萬(wàn)的用戶,每一個(gè)成千上萬(wàn)的用戶可能服務(wù)成千上萬(wàn)他自己的客戶,當(dāng)你一個(gè)公有服務(wù)不能做到高可用的話,我們知道意義了。
第三個(gè)規(guī)模。我們規(guī)模越來(lái)越大的時(shí)候我們系統(tǒng)一定是要能夠橫向拓展。你現(xiàn)在飛機(jī)已經(jīng)啟動(dòng)起來(lái)已經(jīng)飛了,你不可能說(shuō)等等我把系統(tǒng)調(diào)整一下,花一個(gè)月時(shí)間或者多少時(shí)間把它弄得可以用。我們有時(shí)候覺得開著飛機(jī)換輪胎,在地上一個(gè)輪胎幾分鐘換好了,空中可能換需要一年,所以說(shuō)特別的痛苦。RDS整個(gè)系統(tǒng)是可運(yùn)維的。如果你今天一個(gè)系統(tǒng)不能作為可診斷可自省的,問(wèn)題都是用戶幫你曝出來(lái)的,我覺得這個(gè)系統(tǒng)可能沒(méi)有生命力。
三層架構(gòu)
三層架構(gòu)圖
RDS的數(shù)據(jù)通道是一個(gè)非常經(jīng)典的三層架構(gòu),就跟大家平常看到的Web服務(wù)器三層架構(gòu)一模一樣的。WEB服務(wù)器一個(gè)簡(jiǎn)單的HTTP服務(wù)器,為什么有這么多的中間件,這個(gè)是標(biāo)準(zhǔn)的三層架構(gòu)。今天三層架構(gòu)為什么這么流行?我不知道大家想過(guò)沒(méi)有,但是這里面肯定有它很重要的一個(gè)原因,如果是兩層的話你會(huì)發(fā)現(xiàn)過(guò)于簡(jiǎn)單,層數(shù)過(guò)多的話你鏈條太長(zhǎng),三層是剛好,在靈活性跟簡(jiǎn)單性中間有一個(gè)很重要的平衡。所以說(shuō)我們整個(gè)RDS后續(xù)的架構(gòu)就是基于這樣一個(gè)三層的架構(gòu)。三層架構(gòu)業(yè)界有很多很多的經(jīng)驗(yàn)我們可以借鑒的,Web服務(wù)器前人積攢幾十年的經(jīng)驗(yàn)我們都可以用。我們整個(gè)系統(tǒng)都是基于這樣一個(gè)架構(gòu)。把域名算上去有四層的,就是用戶如果直接用這個(gè)數(shù)據(jù)庫(kù)的話,實(shí)際上就是這一層,我們加上中間的PROXY加上四層的SLB,前面還有一個(gè)域名,每一層的引入對(duì)用戶都帶來(lái)非常大的影響。
我舉個(gè)最簡(jiǎn)單的例子來(lái)講,域名解釋大家覺得有問(wèn)題嗎?今天我們數(shù)據(jù)庫(kù)給大家提供一個(gè)域名,域名可能對(duì)應(yīng)一個(gè)VIP,我們提供域名最基本的想法是說(shuō)換VIP很容易,但是實(shí)際情況不是這樣,今天你是公有云的用戶,用戶對(duì)這個(gè)系統(tǒng)的支持不盡相同的。很多時(shí)候你給他一個(gè)域名,他直接要你提供的VIP,還有有些用戶主機(jī)上設(shè)了域名,它綁定起來(lái)很長(zhǎng)時(shí)間不生效,也就是說(shuō)即使域名這么簡(jiǎn)單的事情,我們真的切換域名的時(shí)候,你發(fā)現(xiàn)95%用戶是OK的,5%是切不動(dòng)的。第二個(gè)它直接用VIP,這兩點(diǎn)把你搞死,我們實(shí)際上有這層但是沒(méi)有辦法用。我們第一天想這么一個(gè)域名切換很簡(jiǎn)單,今天連域名簡(jiǎn)單的事情我們不能切我們用VIP漂移,我們?nèi)ズ蠖讼到y(tǒng)怎么變更,我們對(duì)用戶提供的VIP不變的,極端情況下我們沒(méi)有辦法讓它去變。當(dāng)它用戶的規(guī)模大,你可以看到各種各樣的問(wèn)題,這些問(wèn)題都是挑戰(zhàn)。