平臺(tái)突然涌入幾億外國(guó)人,架構(gòu)要怎么改造?
我去面試一個(gè)架構(gòu)師崗位。

面試官:我們平臺(tái)突然涌入幾億外國(guó)人,架構(gòu)要怎么改造?
我:你們平臺(tái)現(xiàn)在是什么架構(gòu)?
面試官:?jiǎn)螜C(jī)房架構(gòu)。
我:?jiǎn)螜C(jī)房架構(gòu),它最大的特點(diǎn)就是“全連接”分層架構(gòu)。
首先,系統(tǒng)架構(gòu)是分層的:
- 站點(diǎn)層;
- 服務(wù)層;
- 數(shù)據(jù)庫(kù)與緩存層。
其次,層與層之間的連接池是全連接的。

如上圖所示:
- 站點(diǎn)層集群全連接服務(wù)層集群;
- 服務(wù)層集群全連接數(shù)據(jù)庫(kù)集群;
- 如果有緩存,它們還全連接緩存集群;
面試官:“全連接”分層架構(gòu)能直接擴(kuò)展到多機(jī)房多活嗎,我們老板有計(jì)劃在北美搞一個(gè)機(jī)房?
我:不行。
如果直接將單機(jī)房“全連接”分層架構(gòu)復(fù)制到多機(jī)房多活,就會(huì)有非常多的跨機(jī)房的連接:
- 站點(diǎn)層連接服務(wù)層,一半的請(qǐng)求跨機(jī)房;
- 服務(wù)層連數(shù)據(jù)庫(kù),一半的請(qǐng)求跨機(jī)房;
- 站點(diǎn)和服務(wù)連緩存,一半的請(qǐng)求跨機(jī)房;
面試官:一半的請(qǐng)求跨機(jī)房連接,有問題嗎?
我:當(dāng)然有問題。
同機(jī)房連接,內(nèi)網(wǎng)的性能損耗幾乎可以忽略不計(jì)。一旦涉及到跨機(jī)房的訪問,即使機(jī)房和機(jī)房之間有專線,訪問的時(shí)延可能增加到秒級(jí),如果機(jī)房在北美,跨機(jī)房請(qǐng)求可能要幾十秒。
如果一個(gè)業(yè)務(wù)請(qǐng)求要訪問10個(gè)服務(wù),一半請(qǐng)求跨機(jī)房,光花在網(wǎng)絡(luò)上的請(qǐng)求都達(dá)到幾十秒,用戶體驗(yàn)不能接受。
面試官:那怎么辦呢?
我:如果業(yè)務(wù)具備地域特性的聚集效應(yīng),可以使用單元化架構(gòu)。
面試官:什么叫業(yè)務(wù)具備地域特性的聚集效應(yīng)?什么叫做單元化架構(gòu)?
我:舉個(gè)例子吧,DD打車。
- 下單用戶在一個(gè)城市;
- 接單司機(jī)在一個(gè)城市;
- 交易訂單在一個(gè)城市;

只需要按照地域,部署多個(gè)機(jī)房,機(jī)房?jī)?nèi)部站點(diǎn)層,服務(wù)層,緩存層,數(shù)據(jù)層都只連接同一個(gè)機(jī)房。數(shù)據(jù)層跨機(jī)房同步,即使有1分鐘的延時(shí),對(duì)業(yè)務(wù)也不會(huì)影響。這類業(yè)務(wù),就具備地域特性。
這種只訪問自己機(jī)房的多機(jī)房多活架構(gòu),就叫做單元化架構(gòu)。具體到你們的場(chǎng)景:
- 在東大機(jī)房部署一套,東大用戶訪問這一套。
- 在北美機(jī)房部署一套,北美用戶訪問那一套。
就能夠快速解決。
面試官:不行呀,TT就是玩這種架構(gòu),崩盤了。潑天的富貴這不才過來的嗎?
我:我建議,你們又不是交易類型的業(yè)務(wù),只需要:
- 發(fā)布文章,評(píng)論文章;
- 發(fā)布視頻,評(píng)論視頻;
UP主和粉絲,即使有個(gè)十幾秒數(shù)據(jù)延時(shí),不影響。只要不直播,用戶無感知。
因此直接在東大擴(kuò)容機(jī)房,就能夠搞定。
我:簡(jiǎn)單總結(jié),單元化架構(gòu)是一種能夠快速擴(kuò)容的多機(jī)房多活方案。但前提是,業(yè)務(wù)必須滿足地域性聚集效應(yīng)。
知其然,知其所以然。
思路比結(jié)論更重要。























