大數(shù)據(jù)時(shí)代,網(wǎng)絡(luò)演進(jìn)發(fā)生了三個(gè)變化:1.不定向突發(fā)流量的挑戰(zhàn);2.云數(shù)據(jù)中心互聯(lián);3.云開數(shù)據(jù)中心內(nèi)部組網(wǎng)支持云服務(wù)。歸納來說就是業(yè)務(wù)變化驅(qū)動(dòng)網(wǎng)絡(luò)架構(gòu)的變化:1. 業(yè)務(wù)流量由縱向?yàn)橹餮葸M(jìn)為橫向?yàn)橹?2. 大型異構(gòu)化,更多的節(jié)點(diǎn)數(shù)跨數(shù)據(jù)中心;虛擬化:3. 同一物理服務(wù)器的虛擬機(jī)之間的通信、跨物理服務(wù)器的虛擬機(jī)通信時(shí)的虛擬機(jī)標(biāo)識(shí)、虛擬機(jī)遷移。
在將大規(guī)模和分布式架構(gòu)組合在一起時(shí),我們就能發(fā)現(xiàn)大數(shù)據(jù)網(wǎng)絡(luò)有一組特殊的需求。下面是企業(yè)在部署大數(shù)據(jù)網(wǎng)絡(luò)過程中需要注意的一些問題,所謂知己知彼,當(dāng)你了解了這些問題,或許在部署過程中就不會(huì)有那么多問題了。
網(wǎng)絡(luò)彈性與大數(shù)據(jù)應(yīng)用程序
如果有一組分布式資源必須通過互聯(lián)網(wǎng)絡(luò)進(jìn)行協(xié)調(diào)時(shí),可用性就變得至關(guān)重要。如果網(wǎng)絡(luò)出現(xiàn)故障,那么造成的后果是出現(xiàn)不連續(xù)的壞計(jì)算資源與數(shù)據(jù)集。
準(zhǔn)確地說,大多數(shù)網(wǎng)絡(luò)架構(gòu)和工程師的主要關(guān)注點(diǎn)是正常運(yùn)行時(shí)間。但是,網(wǎng)絡(luò)故障時(shí)間的根源又各不相同。它們可能源自于各個(gè)方面,包括設(shè)備故障(硬件與軟件)、維護(hù)和人為錯(cuò)誤。故障是不可避免的。雖然網(wǎng)絡(luò)的高度可用性也很重要,但是想要設(shè)計(jì)完美可用性是不可能的。
網(wǎng)絡(luò)架構(gòu)師不能用故障來逃避目標(biāo),而應(yīng)該設(shè)計(jì)一些能適應(yīng)故障的彈性網(wǎng)絡(luò)。網(wǎng)絡(luò)的彈性取決于路徑多樣性(資源之間設(shè)置多條路徑)和故障轉(zhuǎn)移(能夠快速發(fā)現(xiàn)問題和轉(zhuǎn)移到其他路徑上)。除了傳統(tǒng)的平均故障時(shí)間間隔(MTBF)方法,大數(shù)據(jù)網(wǎng)絡(luò)的真正設(shè)計(jì)標(biāo)準(zhǔn)一定要包含這些特性。
其實(shí)對(duì)于現(xiàn)在的很多大數(shù)據(jù)應(yīng)用來說,大部分的網(wǎng)絡(luò)架構(gòu)安全性和穩(wěn)定性還是很高的,當(dāng)然,網(wǎng)絡(luò)和數(shù)據(jù)資源當(dāng)中的故障是不可避免的,雖然網(wǎng)絡(luò)的高度可用性也很重要,但是想要設(shè)計(jì)完美可用性是不可能的。
解決大數(shù)據(jù)應(yīng)用中的網(wǎng)絡(luò)擁塞問題
大數(shù)據(jù)應(yīng)用程序不僅僅是規(guī)模大,而且還有一種我稱為突發(fā)性的特性。當(dāng)一個(gè)作業(yè)啟動(dòng)之后,數(shù)據(jù)就開始流轉(zhuǎn)。在高流量時(shí)間段里,擁塞是一個(gè)嚴(yán)重的問題。然而,擁塞可能引起更多的隊(duì)列延遲時(shí)間和丟包率。此外,擁塞還可能觸發(fā)重轉(zhuǎn),這可能讓本身負(fù)載繁重的網(wǎng)絡(luò)無法承受。因此,網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)時(shí)應(yīng)該盡可能減少擁塞點(diǎn)。按照可用性的設(shè)計(jì)標(biāo)準(zhǔn),減少擁塞要求網(wǎng)絡(luò)具有較高的路徑多樣性,這樣才能允許網(wǎng)絡(luò)將流量分散到大量不同的路徑上。
大數(shù)據(jù)中網(wǎng)絡(luò)一致性要比遲延性更重要
實(shí)際上,大多數(shù)大數(shù)據(jù)應(yīng)用程序?qū)W(wǎng)絡(luò)延遲并不敏感。如果計(jì)算時(shí)間的數(shù)量級(jí)為幾秒鐘或幾分鐘,那么即使網(wǎng)絡(luò)上出現(xiàn)較大延遲也是無所謂的——數(shù)量級(jí)大概為幾千毫秒。然而,大數(shù)據(jù)應(yīng)用程序一般具有較高的同步性。這意味著作業(yè)是并行執(zhí)行的,而各個(gè)作業(yè)之間較大的性能差異可能會(huì)引發(fā)應(yīng)用程序的故障。因此,網(wǎng)絡(luò)不僅要足夠高效,而且要在空間和時(shí)間上具有一致的性能。
現(xiàn)在就要準(zhǔn)備大數(shù)據(jù)未來的可伸縮性
可能讓人有點(diǎn)意外的是,大多數(shù)大數(shù)據(jù)集群實(shí)際上并不大。
可伸縮性并不在于現(xiàn)在集群現(xiàn)在有多大規(guī)模,而是說如何平衡地?cái)U(kuò)展支持未來的部署規(guī)模。如果基礎(chǔ)架構(gòu)設(shè)計(jì)現(xiàn)在只適合小規(guī)模部署,那么這個(gè)架構(gòu)將如何隨著節(jié)點(diǎn)數(shù)量的增加而不斷進(jìn)化?在將來某一個(gè)時(shí)刻,它是否需要完全重新設(shè)計(jì)架構(gòu)?這個(gè)架構(gòu)是否需要一些近程數(shù)據(jù)和數(shù)據(jù)位置信息?關(guān)鍵是要記住,可伸縮性并不在于絕對(duì)規(guī)模,而是更關(guān)注于實(shí)現(xiàn)足夠規(guī)模解決方案的路徑。
通過網(wǎng)絡(luò)分割來處理大數(shù)據(jù)
網(wǎng)絡(luò)分割是創(chuàng)建大數(shù)據(jù)環(huán)境的重要條件。在最簡單的形式上,分割可能意味著要將大數(shù)據(jù)流量與其他網(wǎng)絡(luò)流量分離,這樣應(yīng)用程序產(chǎn)生的突發(fā)流量才不會(huì)影響其他關(guān)鍵任務(wù)工作負(fù)載。除此之外,我們還需要處理運(yùn)行多個(gè)作業(yè)的多個(gè)租戶,以滿足性能、合規(guī)性和/或?qū)徲?jì)的要求。這些工作要求在一些場(chǎng)合中實(shí)現(xiàn)網(wǎng)絡(luò)負(fù)載的邏輯分離,一些場(chǎng)合則還要實(shí)現(xiàn)它們的物理分離。架構(gòu)師需要同時(shí)在兩個(gè)方面上進(jìn)行規(guī)劃,但是初始需求最好統(tǒng)一在一起。
大數(shù)據(jù)網(wǎng)絡(luò)的應(yīng)用感知能力
雖然大數(shù)據(jù)的概念與Hadoop部署關(guān)系密切,但是它已經(jīng)成為集群環(huán)境的代名詞。根據(jù)不同應(yīng)用程序的特點(diǎn),這些集群環(huán)境的需求各不同相同。有一些可能對(duì)對(duì)帶寬要求高,而有一些則可能對(duì)延遲很敏感。總之,一個(gè)網(wǎng)絡(luò)要支持多應(yīng)用程序和多租戶,它就必須要能夠區(qū)分自己的工作負(fù)載,并且要能夠正確處理各個(gè)工作負(fù)載。
大數(shù)據(jù)網(wǎng)絡(luò)設(shè)計(jì)的關(guān)鍵是要理解一點(diǎn):需求不僅僅是提供足夠的東西向帶寬。最終,應(yīng)用程序體驗(yàn)取決于很多因素,包括網(wǎng)絡(luò)擁塞和分割。創(chuàng)建一個(gè)滿足所有這些需求的網(wǎng)絡(luò)需要有前瞻性,不僅要考慮基礎(chǔ)架構(gòu)能夠支持的伸縮規(guī)模,還要考慮不同類型的應(yīng)用程序如何共存于一個(gè)通用環(huán)境中。