多機(jī)房多活架構(gòu),到底有多牛?
今天給大家分享一個(gè)話題,就是多機(jī)房多活架構(gòu),這個(gè)話題可能很多兄弟從來(lái)沒聽說(shuō)過(guò),或者哪怕聽過(guò),但是因?yàn)橐恢痹谛」竟ぷ鳎矝]搞過(guò),沒經(jīng)歷過(guò)。
不過(guò)沒關(guān)系,今天我們就給大家講解講解這個(gè)大廠才會(huì)玩兒的多機(jī)房多活架構(gòu)師什么,大家也可以了解了解,就當(dāng)拓個(gè)知識(shí)面出來(lái)。
什么是服務(wù)器?什么是機(jī)架?什么是機(jī)房?
說(shuō)到這個(gè)多機(jī)房多活架構(gòu),首先我們得先給大家說(shuō)說(shuō),啥叫做機(jī)房,這么說(shuō)吧,你平時(shí)在本地打開 intellij idea,在里面打開項(xiàng)目代碼,然后用 spring boot 一類的框架寫一堆的代碼,controller+service+dao 這個(gè)畫面大家是不是很熟悉?
然后呢,然后寫完了代碼,你得把代碼打包啊,上傳到線上服務(wù)器上啊,然后在線上服務(wù)器里用 jar 包重新啟動(dòng)系統(tǒng)啊,這個(gè)過(guò)程你可以自己手工操作,也可以借助 jenkins 一類的工具自動(dòng)化流水線部署。
但是大致流程如下圖:
那現(xiàn)在問大家一個(gè)問題,你這所謂的線上服務(wù)器,是在哪里啊?懵逼了嗎?不知道了嗎?
那說(shuō)明你這還是有問題的,這個(gè)線上服務(wù)器其實(shí)是一個(gè)真實(shí)存在的有物理形態(tài)的一個(gè)東西,就跟你家里的衣柜一樣,他是看得見摸得著的。
首先,你公司如果想要提供一臺(tái)服務(wù)器給你用,他必須在一個(gè)機(jī)房里買一臺(tái)或者租用一臺(tái)服務(wù)器,這里就有一個(gè)機(jī)房的概念,這個(gè)機(jī)房是啥呢?大概來(lái)說(shuō),就跟你住的城市郊區(qū)里蓋的廠房看起來(lái)類似吧,他就是一個(gè)房子!
然后呢,在這個(gè)機(jī)房里,有一些房間,房間里呢,有一排一排的機(jī)架,或者叫做機(jī)柜,這個(gè)機(jī)架就是一個(gè)架子,機(jī)柜就是柜子,機(jī)架上就放了一臺(tái)一臺(tái)的服務(wù)器,服務(wù)器就是一個(gè)一個(gè)的大黑盒子。
所以此時(shí)如下圖:
然后呢,這個(gè)機(jī)架上放的服務(wù)器,就一黑盒子,他是聯(lián)網(wǎng)的,咱們可以通過(guò)網(wǎng)絡(luò)連接他,怎么連接?
他有 ip 地址啊,你通過(guò) ssh 一類的連接命令,或者是代碼里通過(guò)網(wǎng)絡(luò)都可以連接到這臺(tái)服務(wù)器去,所以這就是你連接服務(wù)器的過(guò)程。
什么是同城災(zāi)備機(jī)房?
那然后呢?問題來(lái)了,你現(xiàn)在理解了上述的概念,就知道了,你的系統(tǒng)是部署在一個(gè)看得見的機(jī)房的一個(gè)機(jī)架的一個(gè)服務(wù)器里的,那如果整個(gè)機(jī)房突然停電了呢?是不是會(huì)導(dǎo)致你的系統(tǒng)就直接沒了?
對(duì)啊,就是這樣子的,所以說(shuō),我們可以在一個(gè)城市里的另外一個(gè)機(jī)房里,把你的系統(tǒng)也部署一套,此時(shí)你的系統(tǒng)就部署了兩個(gè)機(jī)房了。
如下圖:
那現(xiàn)在問題來(lái)了,這倆機(jī)房怎么協(xié)同工作啊,這里告訴你一個(gè)小秘密,一個(gè)機(jī)房里部署的系統(tǒng)是會(huì)連接到自己的一個(gè)數(shù)據(jù)庫(kù)的,數(shù)據(jù)庫(kù)也是在那個(gè)機(jī)房的另外一臺(tái)服務(wù)器上部署的,然后平時(shí)我們就訪問這個(gè)機(jī)房部署的系統(tǒng)就好了。
但是呢,另外一個(gè)機(jī)房里也是有兩臺(tái)服務(wù)器,一臺(tái)部署系統(tǒng),一臺(tái)部署數(shù)據(jù)庫(kù)。
此時(shí)我們可以讓生產(chǎn)機(jī)房里的數(shù)據(jù)庫(kù)的數(shù)據(jù)實(shí)時(shí)同步到同城災(zāi)備機(jī)房的那個(gè)數(shù)據(jù)庫(kù)里去,一旦要是生產(chǎn)機(jī)房停電了,直接就訪問同城災(zāi)備機(jī)房的系統(tǒng)就好了啊,數(shù)據(jù)在那個(gè)機(jī)房的 mysql 了都是有的。
如下圖:
什么是兩地三中心的架構(gòu)?
但是這個(gè)時(shí)候問題又來(lái)了,萬(wàn)一要是這個(gè)城市發(fā)生了一些自然災(zāi)害,類似于洪澇、地震一類的問題,倆機(jī)房都完蛋了,這可怎么辦啊?
此時(shí)就會(huì)出現(xiàn)一個(gè)兩地三中心的架構(gòu),就是一個(gè)城市里倆機(jī)房,另外一個(gè)城市搞一個(gè)異地災(zāi)備機(jī)房,讓同城災(zāi)備機(jī)房的數(shù)據(jù)實(shí)時(shí)同步給異地災(zāi)備機(jī)房,此時(shí)即使是一個(gè)城市發(fā)生了自然災(zāi)害,那也不怕啊,別的城市還有一個(gè)機(jī)房呢。
如下圖:
什么是多機(jī)房多活的架構(gòu)?
但是這么搞有一個(gè)問題,平時(shí)就用一個(gè)機(jī)房的資源,另外倆機(jī)房就是同步數(shù)據(jù)做災(zāi)備的,發(fā)生停電、自然災(zāi)害的時(shí)候,才會(huì)用到災(zāi)備機(jī)房,這可怎么辦呢?
所以后來(lái)又開始搞多活架構(gòu),就是說(shuō),上述三個(gè)機(jī)房都可以訪問,哪個(gè)機(jī)房寫入了數(shù)據(jù),他就會(huì)把數(shù)據(jù)同步給另外倆機(jī)房。
如下圖:
因此到這里為止,就給大家講清楚了咱們的多機(jī)房多活的架構(gòu)了,這一般是大廠通常會(huì)這么搞,但是中小公司一般是不會(huì)這么玩的,不過(guò)大家可以作為一個(gè)知識(shí)面了解一下,別人家說(shuō)到多機(jī)房多活都不知道啥意思。