掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
下圖是一個(gè)典型的,互聯(lián)網(wǎng)分層架構(gòu):

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
同一個(gè)層次的內(nèi)部,例如端上的APP,以及web-server,也都會進(jìn)行MVC分層:
工程師骨子里,都潛移默化的實(shí)施著分層架構(gòu)設(shè)計(jì)。
互聯(lián)網(wǎng)分層架構(gòu)的本質(zhì)究竟是什么呢?
如果我們仔細(xì)思考會發(fā)現(xiàn),不管是跨進(jìn)程的分層架構(gòu),還是進(jìn)程內(nèi)的MVC分層,都是一個(gè)“數(shù)據(jù)移動”,然后“被處理”和“被呈現(xiàn)”的過程。
如上圖所示:數(shù)據(jù)處理和呈現(xiàn),需要CPU計(jì)算,而CPU是固定不動的:
而數(shù)據(jù)是移動的:
歸根結(jié)底一句話:互聯(lián)網(wǎng)分層架構(gòu),是一個(gè)CPU固定,數(shù)據(jù)移動的架構(gòu)。
MapReduce的架構(gòu),是不是也遵循這個(gè)架構(gòu)特點(diǎn)呢?
假如MapReduce也使用類似的的分層架構(gòu)模式:
提前部署服務(wù):
當(dāng)用戶提交作業(yè)時(shí):
存在什么問題?
將有大量的時(shí)間浪費(fèi)在大量數(shù)據(jù)的網(wǎng)絡(luò)傳輸上。
畫外音:輸入給map,map給reduce,reduce給用戶。
會發(fā)現(xiàn),“固定CPU,移動數(shù)據(jù)”的架構(gòu)并不適合。
Google MapReduce工程架構(gòu)是如何思考這一個(gè)問題的呢?
為了減少數(shù)據(jù)量的傳輸:
(1) 輸入數(shù)據(jù),被分割為M塊后,master會盡量將執(zhí)行map函數(shù)的worker實(shí)例,啟動在輸入數(shù)據(jù)所在的服務(wù)器上;
畫外音:不需要網(wǎng)絡(luò)傳輸了。
(2) map函數(shù)的worker實(shí)例輸出的的結(jié)果,會被分區(qū)函數(shù)劃分成R塊,寫到worker實(shí)例所在的本地磁盤;
畫外音:不需要網(wǎng)絡(luò)傳輸了。
(3) reduce函數(shù),由于有M個(gè)輸入數(shù)據(jù)源(M個(gè)map的輸出都有一部分?jǐn)?shù)據(jù)可能對應(yīng)到一個(gè)reduce的輸入數(shù)據(jù)),所以,master會盡量將執(zhí)行reduce函數(shù)的worker實(shí)例,啟動在離這些輸入數(shù)據(jù)源盡可能“近”的服務(wù)器上;
所以,對于MapReduce系統(tǒng)架構(gòu),“固定數(shù)據(jù),移動CPU”更為合理。
這是為什么呢?
互聯(lián)網(wǎng)在線業(yè)務(wù)的特點(diǎn)是:
這類業(yè)務(wù),使用“固定CPU,移動數(shù)據(jù)”的分層架構(gòu)是合理的。
MapReduce離線業(yè)務(wù)的特點(diǎn)是:
這類業(yè)務(wù),使用“固定數(shù)據(jù),移動CPU”的分層架構(gòu)是合理的。
任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì),都是耍流氓。
思考問題的本質(zhì),希望大家有收獲。
【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】
戳這里,看該作者更多好文

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流