新聞中心
前情提要:

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)焦作免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
《當(dāng)年,我們是怎么平滑上云的?》一文中提到了上云的背景,將所有的系統(tǒng),從一個(gè)機(jī)房,遷移到另一個(gè)機(jī)房。
如上圖:
- 遷移之前,系統(tǒng)部署在機(jī)房A(M6)內(nèi),是單機(jī)房架構(gòu)。
- 遷移之后,系統(tǒng)部署在機(jī)房B(阿里云)內(nèi),換了一個(gè)機(jī)房。
《當(dāng)年,我們是怎么平滑上云的?》有三結(jié)論:
- 單機(jī)房架構(gòu)的核心是“全連接”;
- 機(jī)房遷移方案的設(shè)計(jì)目標(biāo)是:平滑遷移,不停服務(wù);可以分批遷移;隨時(shí)可以回滾;
- 想要平滑的實(shí)施機(jī)房遷移,臨時(shí)性的多機(jī)房架構(gòu)不可避免;
【4】核心問(wèn)題四,臨時(shí)性多機(jī)房架構(gòu)如何實(shí)施?
如前文所述,如果將單機(jī)房“全連接”架構(gòu)復(fù)制到多機(jī)房,會(huì)有大量跨機(jī)房調(diào)用,極大增加請(qǐng)求時(shí)延,是業(yè)務(wù)無(wú)法接受的,要想降低這個(gè)時(shí)延,必須實(shí)施“同機(jī)房連接”。
多機(jī)房多活架構(gòu),什么是理想狀態(tài)下的“同機(jī)房連接”?
如上圖所示,多機(jī)房多活架構(gòu),最理想狀態(tài)下,除了異步數(shù)據(jù)同步跨機(jī)房通訊,其他所有通訊均為“同機(jī)房連接”:
- web連業(yè)務(wù)服務(wù);
- 業(yè)務(wù)服務(wù)連基礎(chǔ)服務(wù);
- 服務(wù)連數(shù)據(jù)庫(kù),主庫(kù)寫(xiě),從庫(kù)讀,讀寫(xiě)分離;
上述架構(gòu),每個(gè)機(jī)房是一套獨(dú)立的系統(tǒng),僅僅通過(guò)異步數(shù)據(jù)同步獲取全量數(shù)據(jù),當(dāng)發(fā)生機(jī)房故障時(shí),將流量切到另一個(gè)機(jī)房,就能冗余“機(jī)房級(jí)”故障,實(shí)現(xiàn)高可用。
上述多機(jī)房架構(gòu)存在什么問(wèn)題?
“異步數(shù)據(jù)同步”存在延時(shí)(例如:1min),這個(gè)延時(shí)的存在,會(huì)使得兩個(gè)機(jī)房的數(shù)據(jù)不一致,從而導(dǎo)致嚴(yán)重的業(yè)務(wù)問(wèn)題。
舉個(gè)例子,某一個(gè)時(shí)刻,用戶X有余額100元,兩個(gè)機(jī)房都存儲(chǔ)有該余額的精準(zhǔn)數(shù)據(jù),接下來(lái):
- 余額100,X在北京(就近訪問(wèn)機(jī)房A)消費(fèi)了80元,余額僅剩20元,該數(shù)據(jù)在1分鐘后會(huì)同步到機(jī)房B;
- 余額100,X的夫人在廣州(就近訪問(wèn)機(jī)房B)用X的賬號(hào)消費(fèi)了70元,余額剩余30元,該數(shù)據(jù)在1分鐘后也會(huì)同步到機(jī)房A;
從而導(dǎo)致:
- 超額消費(fèi)(100余額,卻買(mǎi)了150的東西);
- 余額異常(余額是20,還是30?);
上述架構(gòu)適合于什么業(yè)務(wù)場(chǎng)景?
任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓。
當(dāng)每個(gè)機(jī)房都有很多全局業(yè)務(wù)數(shù)據(jù)的訪問(wèn)場(chǎng)景時(shí),上述多機(jī)房架構(gòu)并不適用,會(huì)存在大量數(shù)據(jù)不一致。但當(dāng)每個(gè)機(jī)房都訪問(wèn)局部業(yè)務(wù)數(shù)據(jù)時(shí),上述多機(jī)房架構(gòu)仍然是可行的。
典型的業(yè)務(wù):滴滴,快狗打車(chē)。
這些業(yè)務(wù)具備數(shù)據(jù)聚集效應(yīng):
- 下單用戶在同一個(gè)城市;
- 接單司機(jī)在同一個(gè)城市;
- 交易訂單在同一個(gè)城市;
這類業(yè)務(wù)非常適合上述多機(jī)房多活架構(gòu),多個(gè)機(jī)房之間即使存在1分鐘延時(shí)的“異步數(shù)據(jù)同步”,對(duì)業(yè)務(wù)也不會(huì)造成太大的影響。
多機(jī)房多活架構(gòu),做不到理想狀態(tài)下的“同機(jī)房連接”,有沒(méi)有折中方案?
如果完全避免跨機(jī)房調(diào)用的理想狀態(tài)做不到,就盡量做到“最小化”跨機(jī)房調(diào)用。
如上圖所示,在非必須的情況下,優(yōu)先連接同機(jī)房的站點(diǎn)與服務(wù):
- 站點(diǎn)層只連接同機(jī)房的業(yè)務(wù)服務(wù)層;
- 業(yè)務(wù)服務(wù)層只連接同機(jī)房的基礎(chǔ)服務(wù)層;
- 服務(wù)層只連接同機(jī)房的“讀”庫(kù);
- 對(duì)于寫(xiě)庫(kù),沒(méi)辦法,只有跨機(jī)房讀“寫(xiě)”庫(kù)了;
該方案沒(méi)有完全避免跨機(jī)房調(diào)用,但它做到了“最小化”跨機(jī)房調(diào)用,只有寫(xiě)請(qǐng)求是跨機(jī)房的。
但互聯(lián)網(wǎng)的業(yè)務(wù),絕大部分是讀多寫(xiě)少的業(yè)務(wù):
- 百度的搜索100%是讀業(yè)務(wù);
- 京東淘寶電商99%的瀏覽搜索是讀業(yè)務(wù),只有下單支付是寫(xiě)業(yè)務(wù);
- 58同城99%帖子的列表詳情查看是讀業(yè)務(wù),只有發(fā)布帖子是寫(xiě)業(yè)務(wù);
寫(xiě)業(yè)務(wù)比例相對(duì)少,只有很少請(qǐng)求會(huì)跨機(jī)房調(diào)用。
該多機(jī)房多活架構(gòu),并沒(méi)有做到100%的“同機(jī)房連接”,通常稱作偽多機(jī)房多活架構(gòu)。
偽多機(jī)房多活架構(gòu),有“主機(jī)房”和“從機(jī)房”的差別。
多機(jī)房多活架構(gòu)的初衷是容機(jī)房故障,該架構(gòu)當(dāng)出現(xiàn)機(jī)房故障時(shí),可以把入口處流量切到另一個(gè)機(jī)房:
- 如果掛掉的是,不包含主庫(kù)的從機(jī)房,遷移流量后能直接容錯(cuò);
- 如果掛掉的是,包含主庫(kù)的主機(jī)房,只遷移流量,系統(tǒng)整體99%的讀請(qǐng)求可以容錯(cuò),但1%的寫(xiě)請(qǐng)求會(huì)受到影響,此時(shí)需要將從庫(kù)變?yōu)橹鲙?kù),才能完全容錯(cuò)。這個(gè)過(guò)程需要DBA介入,不需要所有業(yè)務(wù)線上游修改。
畫(huà)外音:除非,站點(diǎn)和服務(wù)使用內(nèi)網(wǎng)IP,而不是內(nèi)網(wǎng)域名連接數(shù)據(jù)庫(kù)。架構(gòu)師之路已經(jīng)強(qiáng)調(diào)過(guò)很多次,不要使用內(nèi)網(wǎng)IP,一定要使用內(nèi)網(wǎng)域名。
偽多機(jī)房多活架構(gòu),是一個(gè)實(shí)踐性,落地性很強(qiáng)的架構(gòu),它對(duì)原有架構(gòu)體系的沖擊非常小,和單機(jī)房架構(gòu)相比,僅僅是:
- 跨機(jī)房主從同步數(shù)據(jù),會(huì)多10毫秒延時(shí);畫(huà)外音:主從同步數(shù)據(jù),本來(lái)就會(huì)有延時(shí)。
- 跨機(jī)房寫(xiě),會(huì)多10毫秒延時(shí);
小結(jié):
- 理想多機(jī)房多活架構(gòu),是純粹的“同機(jī)房連接”,僅有異步數(shù)據(jù)同步會(huì)跨機(jī)房;
- 理想多機(jī)房多活架構(gòu),會(huì)有較嚴(yán)重?cái)?shù)據(jù)一致性問(wèn)題,僅適用于具備數(shù)據(jù)聚集效應(yīng)的業(yè)務(wù)場(chǎng)景,例如:滴滴,快狗打車(chē);
- 偽多機(jī)房多活架構(gòu),思路是“最小化跨機(jī)房連接”,機(jī)房區(qū)分主次,落地性強(qiáng),對(duì)原有架構(gòu)沖擊較小,強(qiáng)烈推薦;
臨時(shí)性多機(jī)房多活架構(gòu),是機(jī)房遷移過(guò)程中的一個(gè)過(guò)渡狀態(tài),機(jī)房遷移步驟又該如何?且聽(tīng)明天分解。
思路比結(jié)論重要。
【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】
網(wǎng)頁(yè)名稱:多機(jī)房多活架構(gòu),究竟怎么玩?
本文鏈接:http://m.fisionsoft.com.cn/article/cdehdhg.html


咨詢
建站咨詢
