關(guān)于如何保證服務(wù)器可以支持百萬(wàn)用戶訪問(wèn)?服務(wù)器品牌有哪些?如何選購(gòu)服務(wù)器?等等問(wèn)題,今天我們就一起來(lái)看下關(guān)于服務(wù)器的相關(guān)知識(shí)。
假如你開(kāi)發(fā)了一個(gè)網(wǎng)站或者一個(gè)app把他放到服務(wù)器上,之后你把它發(fā)布到了網(wǎng)上,運(yùn)行良好,每天有幾百人的訪問(wèn)量,用戶量不大,能快速地響應(yīng)用戶的請(qǐng)求。
但是隨著你的運(yùn)營(yíng),你的網(wǎng)站或app出名了,服務(wù)每天要承擔(dān)著成千上萬(wàn)的人來(lái)訪問(wèn),這個(gè)時(shí)候?qū)δ銇?lái)講,這是個(gè)好消息,但是對(duì)你的服務(wù)器來(lái)說(shuō)這是個(gè)壞消息,因?yàn)樗兊寐耍脩舳嗔耍蜷_(kāi)速度就慢了,服務(wù)器就很卡。

所以它需要擴(kuò)展了,你的服務(wù)器需要為成千上萬(wàn)的用戶提供 7*24 不宕機(jī)服務(wù),那么如何擴(kuò)展,才能保持服務(wù)器不宕機(jī)呢?
一、服務(wù)器如何才能保證成千上萬(wàn)的人訪問(wèn)呢?
負(fù)載均衡器的使用使得我們可以在多個(gè)服務(wù)器之間分配負(fù)載。想象下有一萬(wàn)個(gè)用戶在一分鐘內(nèi)來(lái)訪問(wèn)你的服務(wù)器。遺憾的是,你的服務(wù)器在一分鐘內(nèi)只能保證5千個(gè)用戶的流暢訪問(wèn)。這怎么辦呢?同時(shí)運(yùn)行兩個(gè)服務(wù)器就行了,就是增加了服務(wù)器來(lái)分配負(fù)載。負(fù)載均衡器的功能就是把訪問(wèn)請(qǐng)求分發(fā)到兩臺(tái)服務(wù)器上。用戶 1 往左,用戶 2 往右,用戶 3 再往左,以此類推。如果一次有 100萬(wàn)個(gè)用戶同時(shí)訪問(wèn)服務(wù)器,這該怎么解決呢?確切地說(shuō),你可以擴(kuò)展到200臺(tái)付款服務(wù)器,之后讓負(fù)載均衡器分發(fā)請(qǐng)求到這200服務(wù)器上。2、擴(kuò)展數(shù)據(jù)庫(kù)雖然我們上面提到,關(guān)于大量的用戶,我們可以用成百上千臺(tái)服務(wù)器處理請(qǐng)求,但是他們都是用同一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)和檢索數(shù)據(jù)。那么,我們不能以同樣的方式來(lái)擴(kuò)展數(shù)據(jù)庫(kù)嗎?稍有不同。我們需要做的第一件事是把數(shù)據(jù)庫(kù)分成多個(gè)部分。一部分專門(mén)負(fù)責(zé)接收并存儲(chǔ)數(shù)據(jù),其他部分負(fù)責(zé)檢索數(shù)據(jù)。3、緩存和內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)我們使用緩存而不是對(duì)每個(gè)請(qǐng)求都重新處理,緩存用于記住最后一次的結(jié)果并交由其他服務(wù)或者客戶端,這樣就不用每次都請(qǐng)求后端服務(wù)了。緩存的加強(qiáng)版叫內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN),遍布全球的大量緩存。將這些緩存服務(wù)器分布到用戶訪問(wèn)相對(duì)集中的地區(qū)或網(wǎng)絡(luò)中,在用戶訪問(wèn)網(wǎng)站時(shí),利用全局負(fù)載技術(shù)將用戶的訪問(wèn)指向距離最近的工作正常的緩存服務(wù)器上,由緩存服務(wù)器直接響應(yīng)用戶請(qǐng)求。這使得用戶可以從物理上靠近他們的地方來(lái)獲取網(wǎng)頁(yè)內(nèi)容,而不是每次都把數(shù)據(jù)從源頭搬到用戶那里。分片究竟是什么意思呢?其實(shí)也很簡(jiǎn)單:Facebook 上需要為 20 億用戶提供個(gè)人資料, 可以把你的應(yīng)用架構(gòu)分解為 26 個(gè) mini-Facebook。用戶名如果以 A 開(kāi)頭,會(huì)被 mini-facebook A服務(wù)器 處理, 用戶名如果以 B 開(kāi)頭,會(huì)被 mini-facebook B服務(wù)器 來(lái)處理……分片不一定按字母順序,根據(jù)業(yè)務(wù)需要,你可以基于任何數(shù)量的因素,比如位置、使用頻率(特權(quán)用戶被路由到好的硬件)等等。你可以根據(jù)需要以這種方式切分服務(wù)器、數(shù)據(jù)庫(kù)或其他方面。