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