自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Instagram在如何越洋擴(kuò)展基礎(chǔ)設(shè)施?

譯文
網(wǎng)絡(luò) 通信技術(shù)
2015年,Instagram將基礎(chǔ)設(shè)施從一個(gè)數(shù)據(jù)中心擴(kuò)展到了三個(gè),從三個(gè)數(shù)據(jù)中心擴(kuò)展到五個(gè)很輕松;我們只是增加了復(fù)制因子,將數(shù)據(jù)復(fù)制到新的區(qū)域;然而當(dāng)下一個(gè)數(shù)據(jù)中心遠(yuǎn)在另一個(gè)大陸時(shí),擴(kuò)展起來會(huì)更難。

【51CTO.com快譯】2014年,Instagram加入Facebook兩年后,Instagram的工程團(tuán)隊(duì)該將公司的基礎(chǔ)設(shè)施從亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)服務(wù)器遷移到了Facebook的數(shù)據(jù)中心。Facebook在歐美有多個(gè)數(shù)據(jù)中心,但直到最近Instagram才使用美國(guó)的數(shù)據(jù)中心。

[[247768]]

Instagram想把基礎(chǔ)設(shè)施擴(kuò)展到大洋彼岸的主要原因是,我們?cè)诿绹?guó)已沒場(chǎng)地可用。隨著服務(wù)不斷增多,Instagram已到了我們需要考慮利用Facebook建在歐洲的數(shù)據(jù)中心的地步。另一個(gè)好處是:本地?cái)?shù)據(jù)中心意味著對(duì)歐洲用戶來說延遲更低,這有望在Instagram上打造更好的用戶體驗(yàn)。

2015年,Instagram將基礎(chǔ)設(shè)施從一個(gè)數(shù)據(jù)中心擴(kuò)展到了三個(gè),以提供急需的彈性:我們的工程團(tuán)隊(duì)不想重蹈2012年AWS災(zāi)難的覆轍,當(dāng)時(shí)弗吉尼亞州的一場(chǎng)大風(fēng)暴導(dǎo)致其近一半的實(shí)例癱瘓。從三個(gè)數(shù)據(jù)中心擴(kuò)展到五個(gè)很輕松;我們只是增加了復(fù)制因子,將數(shù)據(jù)復(fù)制到新的區(qū)域;然而當(dāng)下一個(gè)數(shù)據(jù)中心遠(yuǎn)在另一個(gè)大陸時(shí),擴(kuò)展起來會(huì)更難。

了解基礎(chǔ)設(shè)施

基礎(chǔ)設(shè)施通??煞譃閮煞N類型:

  • 無狀態(tài)服務(wù)通常用作計(jì)算,根據(jù)用戶流量進(jìn)行擴(kuò)展(按需擴(kuò)展)。Django Web服務(wù)器就是個(gè)例子。
  • 有狀態(tài)服務(wù)通常用作存儲(chǔ),必須在數(shù)據(jù)中心之間保持一致性。比如包括Cassandra和TAO。

每個(gè)人都喜歡無狀態(tài)服務(wù),它們易于部署和擴(kuò)展,可以隨時(shí)隨地根據(jù)需要來啟動(dòng)。事實(shí)上,我們還需要像Cassandra這樣的有狀態(tài)服務(wù)來存儲(chǔ)用戶數(shù)據(jù)。運(yùn)行帶有太多副本的Cassandra不僅增加了維護(hù)數(shù)據(jù)庫(kù)的復(fù)雜性,還浪費(fèi)了容量,更不用說越洋傳輸仲裁(quorum)請(qǐng)求有多慢了。

Instagram還使用TAO(面向社交圖的分布式數(shù)據(jù)存儲(chǔ))作為數(shù)據(jù)存儲(chǔ)系統(tǒng)。我們將TAO作為每個(gè)分片(shard)的單個(gè)主系統(tǒng)(master)來運(yùn)行,沒有任何從屬系統(tǒng)(slave)為任何寫入請(qǐng)求更新分片。它將所有寫入內(nèi)容轉(zhuǎn)發(fā)到分片的主區(qū)域。由于所有寫入都在位于美國(guó)的主區(qū)域進(jìn)行,所以歐洲那邊的寫入延遲無法忍受。你可能注意到我們的問題反饋基本上是光速。

潛在解決方案

我們能否縮短請(qǐng)求越洋傳輸?shù)臅r(shí)間(甚至使往返傳輸消失)?有兩種方法可以解決這個(gè)問題。

1. 對(duì)Cassandra分區(qū)

為了防止仲裁請(qǐng)求越洋傳輸,我們?cè)诳紤]將數(shù)據(jù)集分為兩部分:Cassandra_EU和Cassandra_US。如果歐洲用戶的數(shù)據(jù)存儲(chǔ)在Cassandra_EU分區(qū)中,美國(guó)用戶的數(shù)據(jù)存儲(chǔ)在Cassandra_US分區(qū)中,用戶的請(qǐng)求就不必遠(yuǎn)距離傳輸來獲取數(shù)據(jù)。

比如說,假設(shè)美國(guó)有五個(gè)數(shù)據(jù)中心,歐盟有三個(gè)數(shù)據(jù)中心。如果我們通過復(fù)制當(dāng)前集群而在歐洲部署Cassandra,復(fù)制因子將是8,仲裁請(qǐng)求必須與8個(gè)副本中的5個(gè)進(jìn)行聯(lián)系。

但是如果我們可以找到將數(shù)據(jù)分成兩組的方法,就會(huì)有一個(gè)復(fù)制因子是5的Cassandra_US分區(qū)和一個(gè)復(fù)制因子是3的Cassandra_EU分區(qū),每個(gè)分區(qū)可獨(dú)立運(yùn)行,而不影響其他分區(qū)。與此同時(shí),每個(gè)分區(qū)的仲裁請(qǐng)求能夠保持在同一個(gè)大陸,因而解決往返傳輸?shù)难舆t問題。

2. TAO僅限于寫入到本地

為了縮短TAO寫入的延遲,我們可以將所有EU寫入限制于本地區(qū)域。這在最終用戶看來幾乎一樣。我們向TAO發(fā)送寫入時(shí),TAO將在本地更新,不會(huì)阻止同步向主數(shù)據(jù)庫(kù)發(fā)送寫入;相反,它會(huì)在本地區(qū)域?qū)懭敕诺疥?duì)列中。在寫入的本地區(qū)域,數(shù)據(jù)可立即從TAO獲取,而在其他區(qū)域,數(shù)據(jù)將在從本地區(qū)域傳播后可用。這類似今天的常規(guī)寫入,數(shù)據(jù)從主區(qū)域傳播。

雖然不同的服務(wù)可能會(huì)有不同的瓶頸,但如果致力于減少或消除越洋流量這個(gè)想法,我們能逐一解決問題。

經(jīng)驗(yàn)教訓(xùn)

與每個(gè)基礎(chǔ)設(shè)施項(xiàng)目一樣,我們?cè)诖诉^程中汲取了一些重要的經(jīng)驗(yàn)教訓(xùn)。以下是幾個(gè)主要的。

  • 別急著搞新項(xiàng)目。開始在新數(shù)據(jù)中心配置服務(wù)器之前,確保你了解為什么需要在新區(qū)域部署服務(wù)、有什么樣的依賴關(guān)系以及新區(qū)域投入使用時(shí)系統(tǒng)會(huì)如何運(yùn)行。此外,別忘了反思災(zāi)難恢復(fù)計(jì)劃,并進(jìn)行必要的改動(dòng)。
  • 別低估復(fù)雜性??偸窃谀愕娜粘贪才胖辛舫鲎銐虻臅r(shí)間,因?yàn)橐稿e(cuò)誤,要找出意外的阻礙因素,要學(xué)習(xí)你不了解的新的依賴關(guān)系。你可能發(fā)現(xiàn)自己無意中在重新設(shè)計(jì)構(gòu)建基礎(chǔ)設(shè)施的方式。
  • 明白取舍。成功總是要付出代價(jià)。我們對(duì)Cassandra數(shù)據(jù)庫(kù)進(jìn)行分區(qū)后,通過縮小復(fù)制因子,節(jié)省了大量存儲(chǔ)空間。然而為了確保每個(gè)分區(qū)仍然準(zhǔn)備好面對(duì)災(zāi)難,我們需要更多的前端Django容量,以接受來自故障區(qū)域的流量,因?yàn)楝F(xiàn)在分區(qū)無法彼此共享容量了。
  • 耐心一點(diǎn)。在開啟歐洲數(shù)據(jù)中心的過程中,我不記得有多少次我們說過“哦,見鬼!”但事情總是最終得到了解決??赡鼙饶泐A(yù)期的要更久,但要有耐心,整個(gè)團(tuán)隊(duì)要通力合作,這是超有意思的過程。

原文標(biāo)題:How Instagram is scaling its infrastructure across the ocean,作者:Sherry Xiao

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:趙寧寧 來源: 51CTO.com
相關(guān)推薦

2010-10-19 14:55:55

惠普融合基礎(chǔ)架構(gòu)

2023-06-16 15:53:55

DevOps基礎(chǔ)設(shè)施

2024-03-29 14:25:44

云計(jì)算人工智能

2015-05-27 09:03:46

IT基礎(chǔ)設(shè)施IT基礎(chǔ)設(shè)施監(jiān)控

2020-05-28 10:34:43

超融合基礎(chǔ)設(shè)施HCI服務(wù)器

2024-09-30 11:29:07

2022-02-10 11:54:34

即時(shí)基礎(chǔ)設(shè)施基礎(chǔ)設(shè)施數(shù)字化轉(zhuǎn)型

2020-04-28 10:21:58

基礎(chǔ)設(shè)施硬件遠(yuǎn)程工作

2022-05-19 19:14:30

數(shù)據(jù)中心縱向擴(kuò)展橫向擴(kuò)展

2009-12-18 17:14:25

惠普基礎(chǔ)架構(gòu)

2009-12-22 13:59:59

惠普基礎(chǔ)設(shè)施運(yùn)營(yíng)

2023-07-17 18:43:26

測(cè)試基礎(chǔ)設(shè)施開發(fā)

2021-01-28 10:28:33

云計(jì)算基礎(chǔ)設(shè)施自動(dòng)化IT

2023-01-13 16:21:38

物聯(lián)網(wǎng)

2013-11-28 09:24:57

SDN傳統(tǒng)網(wǎng)絡(luò)

2019-09-27 15:48:32

網(wǎng)絡(luò)5G無線基礎(chǔ)設(shè)施

2013-11-29 10:34:55

SDN網(wǎng)絡(luò)基礎(chǔ)設(shè)施

2015-03-18 14:30:09

2023-05-23 15:10:57

智慧城市IT物聯(lián)網(wǎng)

2015-07-29 11:13:57

Joyent容器基礎(chǔ)設(shè)施Linux容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)