[分散式]分散式計算系統淺析
(1)從一個新聞入口網站案例引入
現在很多同學經常會看到一些名詞,比如分散式服務框架,分散式系統,分散式儲存系統,分散式訊息系統。
但是有些經驗尚淺的同學,可能都很容易被這些名詞給搞暈。所以這篇文章就對“分散式計算系統”這個概念做一個科普類的分析。
如果你要理解啥是分散式計算,就必須先得理解啥是分散式儲存,現在我們從一個小例子來引入。
比如說現在你有一個網站,我們們假設是一個新聞入口網站好了。每天是不是會有可能上千萬使用者會湧入進來看你的新聞?
好的,那麼他們會怎麼看新聞呢?
其實很簡單,首先他們會點選一些板塊,比如“體育板塊”,“娛樂板塊”。
然後,點選一些新聞標題,比如“20年來最刺激的一場比賽即將拉開帷幕”,接著還可能會發表一些評論,或者點選對某個好的新聞進行收藏。
那麼你的這些使用者乾的這些事兒有一個專業的名詞,叫做“使用者行為”。
因為在你的網站或者APP上,使用者一定會進行各種操作,點選各種按鈕,發表一些資訊,這些都是各種行為,統稱為“使用者行為”。
好了,現在假如說新聞入口網站的boss說想要做一個功能,在網站裡每天做一個排行榜,統計出來每天每個版塊被點選的次數,包括最熱門的一些新聞。
然後呢,在網站後臺系統裡需要有一些報表,要讓他看到不同的編輯產出的文章的點選量彙總,做一個編輯的績效排名,還有很多類似的事情。
這些事情叫什麼呢?你可以認為是基於使用者行為資料進行分析和統計,產出各種各樣的資料統計分析報表和結果,供網站的使用者、管理人員來檢視。
這也有一個專業的名詞,叫做“使用者行為分析”。
(2)推算一下你需要分析多少條資料?
好,我們麼繼續。如果你要對使用者行為進行分析,那你是不是首先需要收集這些使用者行為的資料?
比如說有個哥兒們現在點了一下“體育”板塊,你需要在網頁前端或者是APP上立馬傳送一條日誌到後臺,記錄清楚“id為117的使用者點選了一下id位003的板塊”。
同樣,這個東西也有一個專業的名詞,叫做“使用者行為日誌”。
那你可以來計算一下,這些使用者行為如果採用日誌的方式收集,每天大概會產生多少條資料?
假設每天1000萬人訪問你的新聞網站,平均每個人做出30個點選、評論以及收藏等行為,那麼就是3億條使用者行為日誌。
假設每條使用者行為日誌的大小是100個位元組,因為可能包含了很多很多的欄位,比如他是在網頁點選的,還是在手機APP上點選的,手機APP是用的什麼作業系統,android還是IOS,類似這樣的欄位是很多的。
那麼你就有每天大概28GB左右的資料,這裡一共包含3億條。
假如對這3億條資料,你就自己寫個Java程式,從一個超大的28GB的大日誌檔案裡,一條一條讀取日誌來統計分析和計算,一直到把3億條資料都計算完畢,你覺得會花費多少時間?
不可想象,根據你的計算邏輯複雜度來說,搞不好要花費幾十個小時的時間。
所以你覺得這種大資料場景下的分析,這麼玩兒靠譜麼?不靠譜。
(3)黃金搭檔:分散式儲存+分散式計算
所以這個時候,你就可以首先採用分散式儲存的方式,把那3億條資料分散存放在比如30臺機器上,每臺機器大概就放1000萬條資料,大概就1GB的資料量。
大家看看下面的圖:
接著你就可以上分散式計算了,你可以把統計分析資料的計算任務,拆分成30個計算任務,每個計算任務都分發到一臺機器上去執行。
也就是說,就專門針對機器本地的1GB資料,那1000萬條資料進行分析和計算。
這樣的好處就是可以依託30臺機器的資源並行的進行資料的統計和分析,這也就是所謂的分散式計算了。
每臺機器的計算結果出來之後,就可以進行綜合性的彙總,然後就可以拿到最終的一個分析結果,大家看下圖。
假設之前你的3億條資料都在一個30GB的大檔案裡,然後你一個Java程式一條一條慢慢讀慢慢計算,需要耗費30小時。
那麼現在把計算任務並行到了30臺機器上去,就可以提升30倍的計算速度,是不是就只需要1小時就可以完成計算了?
所以這個就是所謂的分散式計算,他一般是針對超大資料集,也就是現在很流行的大資料進行計算的。
首先需要將超大資料集拆分成很多資料塊分散在多臺機器上,然後把計算任務分發到各個機器上去,利用多臺機器的CPU、記憶體等計算資源來進行計算。
這種分散式計算的方式,對於超大資料集的計算可以提升幾十倍甚至幾百倍的效率,其實這個理論和概念,也是大資料技術的基礎。
比如現在最流行的大資料技術棧裡,Hadoop HDFS就是用做分散式儲存的,他可以把一個超大檔案拆分為很多小的資料塊放在很多機器上。
而像Spark就是分散式計算系統,他可以把計算任務分發到各個機器上,對各個資料塊進行平行計算。
以上就是用大白話+畫圖,給小白同學們科普了一下分散式計算系統的相關知識,相信大家看了之後,對分散式計算系統,應該有一個初步的認識了。
相關文章
- 搞懂分散式技術17:淺析分散式事務分散式
- [轉載]淺析海量使用者的分散式系統設計分散式
- [分散式][分散式鎖]淺談分散式鎖分散式
- 雲端計算分散式平行計算:系統架構分散式架構
- Hadoop 分散式儲存分散式計算Hadoop分散式
- 淺析三款大規模分散式檔案系統架構設計分散式架構
- 分散式 - 分散式系統的特點分散式
- 分散式系統(三)——分散式事務分散式
- 分散式雲端計算分散式
- 分散式系統中的自主自治計算 - pathelland分散式
- Spark:一個高效的分散式計算系統Spark分散式
- 分散式系統分散式
- 分散式系統設計策略分散式
- 分散式系統程式設計分散式程式設計
- 分散式系統2:分散式系統中的時鐘分散式
- 短影片直播系統為什麼需要分散式部署,淺談分散式部署分散式
- 【分散式計算】分散式日誌匯入工具-Flume分散式
- 什麼是分散式計算系統?—Vecloud微雲分散式Cloud
- 分散式系統:系統模型分散式模型
- 分散式:分散式系統下的唯一序列分散式
- 分散式系統中的分散式鏈路追蹤與分散式呼叫鏈路分散式
- 分散式計算與Map Reduce分散式
- 【分散式計算】DFS && BigTable分散式
- 分散式計算如果學習分散式
- 分散式搜尋系統的設計分散式
- 分散式系統設計的求生之路分散式
- 分散式系統安全設計原則分散式
- 分散式圖片系統分散式
- 分散式系統(二)——GFS分散式
- 分散式系統基礎分散式
- 分散式檔案系統分散式
- 冰激凌和分散式系統分散式
- 關於分散式系統分散式
- 高效能分散式計算與儲存系統設計概要分散式
- 淺談分散式計算的開發與實現(一)分散式
- 淺談分散式計算的開發與實現(1)分散式
- 大型分散式系統現場,阿里大牛帶你實戰分散式系統分散式阿里
- 從分散式計算到分散式訓練分散式