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

為何說,MapReduce,顛覆了互聯(lián)網(wǎng)分層架構(gòu)的本質(zhì)?

開發(fā) 開發(fā)工具 架構(gòu)
如果我們仔細(xì)思考會(huì)發(fā)現(xiàn),不管是跨進(jìn)程的分層架構(gòu),還是進(jìn)程內(nèi)的MVC分層,都是一個(gè)“數(shù)據(jù)移動(dòng)”,然后“被處理”和“被呈現(xiàn)”的過程。

下圖是一個(gè)典型的,互聯(lián)網(wǎng)分層架構(gòu):

  • 客戶端層:典型調(diào)用方是瀏覽器browser或者手機(jī)APP
  • 站點(diǎn)應(yīng)用層:實(shí)現(xiàn)核心業(yè)務(wù)邏輯,從下游獲取數(shù)據(jù),對(duì)上游返回html或者json
  • 服務(wù)層:業(yè)務(wù)服務(wù),數(shù)據(jù)服務(wù),基礎(chǔ)服務(wù),對(duì)上游提供友好的RPC接口
  • 數(shù)據(jù)緩存層:緩存加速訪問存儲(chǔ)
  • 數(shù)據(jù)固化層:數(shù)據(jù)庫(kù)固化數(shù)據(jù)存儲(chǔ)

同一個(gè)層次的內(nèi)部,例如端上的APP,以及web-server,也都會(huì)進(jìn)行MVC分層:

  • view層:展現(xiàn)
  • control層:邏輯
  • model層:數(shù)據(jù)

工程師骨子里,都潛移默化的實(shí)施著分層架構(gòu)設(shè)計(jì)。

互聯(lián)網(wǎng)分層架構(gòu)的本質(zhì)究竟是什么呢?

如果我們仔細(xì)思考會(huì)發(fā)現(xiàn),不管是跨進(jìn)程的分層架構(gòu),還是進(jìn)程內(nèi)的MVC分層,都是一個(gè)“數(shù)據(jù)移動(dòng)”,然后“被處理”和“被呈現(xiàn)”的過程。

如上圖所示:數(shù)據(jù)處理和呈現(xiàn),需要CPU計(jì)算,而CPU是固定不動(dòng)的:

  • db/service/web-server都部署在固定的集群上
  • 端上,不管是browser還是APP,也有固定的CPU處理

而數(shù)據(jù)是移動(dòng)的:

  • 跨進(jìn)程的:數(shù)據(jù)從數(shù)據(jù)庫(kù)和緩存里,轉(zhuǎn)移到service層,到web-server層,到client層
  • 同進(jìn)程的:數(shù)據(jù)從model層,轉(zhuǎn)移到control層,轉(zhuǎn)移到view層

歸根結(jié)底一句話:互聯(lián)網(wǎng)分層架構(gòu),是一個(gè)CPU固定,數(shù)據(jù)移動(dòng)的架構(gòu)。

MapReduce的架構(gòu),是不是也遵循這個(gè)架構(gòu)特點(diǎn)呢?

假如MapReduce也使用類似的的分層架構(gòu)模式:

提前部署服務(wù):

  • map服務(wù)層:接收輸入數(shù)據(jù),產(chǎn)出“分”的數(shù)據(jù),集群部署M=1W個(gè)實(shí)例
  • reduce服務(wù)層:接受“合”的數(shù)據(jù),產(chǎn)出最終數(shù)據(jù),集群部署R=1W個(gè)實(shí)例

當(dāng)用戶提交作業(yè)時(shí):

  • 把數(shù)據(jù)數(shù)據(jù)傳輸給map服務(wù)集群;
  • map服務(wù)集群產(chǎn)出結(jié)果后,把數(shù)據(jù)傳輸給reduce服務(wù)集群;
  • reduce服務(wù)集群把結(jié)果傳輸給用戶;

存在什么問題?

將有大量的時(shí)間浪費(fèi)在大量數(shù)據(jù)的網(wǎng)絡(luò)傳輸上。

畫外音:輸入給map,map給reduce,reduce給用戶。

會(huì)發(fā)現(xiàn),“固定CPU,移動(dòng)數(shù)據(jù)”的架構(gòu)并不適合。

Google MapReduce工程架構(gòu)是如何思考這一個(gè)問題的呢?

為了減少數(shù)據(jù)量的傳輸:

(1) 輸入數(shù)據(jù),被分割為M塊后,master會(huì)盡量將執(zhí)行map函數(shù)的worker實(shí)例,啟動(dòng)在輸入數(shù)據(jù)所在的服務(wù)器上;

畫外音:不需要網(wǎng)絡(luò)傳輸了。

(2) map函數(shù)的worker實(shí)例輸出的的結(jié)果,會(huì)被分區(qū)函數(shù)劃分成R塊,寫到worker實(shí)例所在的本地磁盤;

畫外音:不需要網(wǎng)絡(luò)傳輸了。

(3) reduce函數(shù),由于有M個(gè)輸入數(shù)據(jù)源(M個(gè)map的輸出都有一部分?jǐn)?shù)據(jù)可能對(duì)應(yīng)到一個(gè)reduce的輸入數(shù)據(jù)),所以,master會(huì)盡量將執(zhí)行reduce函數(shù)的worker實(shí)例,啟動(dòng)在離這些輸入數(shù)據(jù)源盡可能“近”的服務(wù)器上;

  • 畫外音:目的也是最小化網(wǎng)絡(luò)傳輸;
  • 服務(wù)器之間的“近”,可以用內(nèi)網(wǎng)IP地址的相似度衡量。

所以,對(duì)于MapReduce系統(tǒng)架構(gòu),“固定數(shù)據(jù),移動(dòng)CPU”更為合理。

這是為什么呢?

互聯(lián)網(wǎng)在線業(yè)務(wù)的特點(diǎn)是:

  • 總數(shù)據(jù)量大
  • 吞吐量比較大,同時(shí)發(fā)起的請(qǐng)求多
  • 每個(gè)請(qǐng)求,處理的數(shù)據(jù)相對(duì)比較小
  • 用戶對(duì)處理時(shí)延比較敏感

這類業(yè)務(wù),使用“固定CPU,移動(dòng)數(shù)據(jù)”的分層架構(gòu)是合理的。

MapReduce離線業(yè)務(wù)的特點(diǎn)是:

  • 吞吐量比較小,同時(shí)發(fā)起的任務(wù)比較少
  • 每個(gè)任務(wù),處理的數(shù)據(jù)量非常大
  • 用戶對(duì)處理時(shí)延容忍性大

這類業(yè)務(wù),使用“固定數(shù)據(jù),移動(dòng)CPU”的分層架構(gòu)是合理的。

任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì),都是耍流氓。

思考問題的本質(zhì),希望大家有收獲。

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

 

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

2017-10-15 14:36:10

互聯(lián)網(wǎng)分層架構(gòu)服務(wù)化

2020-08-11 09:43:28

分層架構(gòu)互聯(lián)網(wǎng)架構(gòu)

2023-08-27 21:02:14

2015-05-11 11:06:43

統(tǒng)一基礎(chǔ)架構(gòu)系統(tǒng)華三通信UIS

2020-09-29 07:42:34

互聯(lián)網(wǎng)分層架構(gòu)前后端分離

2017-11-06 08:41:53

互聯(lián)網(wǎng)分層架構(gòu)前后端

2014-03-19 16:11:04

移動(dòng)互聯(lián)網(wǎng)的顛覆和延伸

2019-04-08 11:06:07

互聯(lián)網(wǎng)中層高管

2020-04-29 14:44:50

互聯(lián)網(wǎng)5G顛覆

2017-10-18 14:31:34

互聯(lián)網(wǎng)分層架構(gòu)服務(wù)化

2013-01-14 14:02:11

2020-12-31 11:01:26

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2015-08-25 10:52:37

2012-05-23 14:31:11

移動(dòng)互聯(lián)網(wǎng)手機(jī)

2015-10-29 16:07:41

互聯(lián)網(wǎng)整合危機(jī)

2012-09-18 13:58:58

互聯(lián)網(wǎng)創(chuàng)業(yè)架構(gòu)

2014-06-05 18:01:49

互聯(lián)網(wǎng)化變革

2018-05-07 11:26:01

2021-05-18 16:31:50

大數(shù)據(jù)互聯(lián)網(wǎng)IT

2020-12-29 10:36:34

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)
點(diǎn)贊
收藏

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