簡明易懂的分布式計算模型

2021-07-15 01:08:07 字數 1433 閱讀 4234

讀了 陳紹業.大規模分布式系統架構與設計實戰[m]機械工業出版社,2014.2。

根據裡面的模型延伸。

開發中用到了分布式計算的系統。但是沒有仔細去琢磨其中的設計理念。

本文延伸書中的內容,嘗試用更簡單的語言去闡述一種分布式計算的模型。

每天都會有各種各樣的新的公司成立,公司嘛,總是有願景滴,這個願景呢,就是分布式計算的結果。那麼為了達成這個願景呢,就需要做分布式計算。誰來做分布式計算呢?當然是員工了。也就是worker。

那麼問題來了,我去**找這些員工呢?明顯是招聘對吧?你總不能指望乙個人完成所有的工作吧?我們把所有介紹工作的都稱為獵頭。獵頭維護了大量的求職者的資訊,大把大把的資源,而且求職者也會向獵頭提交簡歷並詢問有沒有工作可以推薦。 當然在這裡獵頭可以是乙個,也可以是多個,我們簡化成乙個。當然多個也並不複雜。

公司需要員工,向獵頭詢問員工資訊,獵頭把目前沒有工作的求職者的資訊給a公司。a公司問求職者a願不願意來工作,求職者說我可以來。接著就是求職者入職啦。

有人了,公司怎麼分配工作呢?這就是分布式的分片,由公司領導完成。

怎麼幹活呢?公司a給員工a(求職者a已經變成了員工a)分配工作,這個就是分布式計算的輸入啦。怎麼完成這個工作呢?公司要先培訓,這裡的培訓就可以理解為任意乙個員工經過培訓都可以做這個工作,即開發人員定義了工作方式,你只要按著我給你說的做,那麼就會有結果。

公司可能不斷詢問員工工作進展,那麼這裡就是整個task的進度。工作完成了,給公司匯報工作結果,這裡也就意味著分布式計算的輸出。乙個公司的願景的可能是每個人都完自己的事情就實現(公司土豪人多),當然也可能公司人少,可呼叫的資源少,那麼乙個員工完成了乙個任務,可能會給他繼續安排下乙個任務。這很明顯,計算資源不夠,那麼就要多花時間。

公司彙總所有員工的工作,發現所有需要做的工作都完成了,願景實現,分布式計算完成。

公司不再需要人了,員工離職。然後再次詢問獵頭有沒有工作,獵頭介紹下一家公司,進行下乙個分布式的計算。

當然了,也有意外情況,員工工作過程中出意外了(worker退出或者斷連),沒有返回結果,怎麼辦?再找人從新來咯。員工工作工程中老婆生孩子,必須要辭職回去照顧老婆,怎麼辦?交接工作,給下乙個人搞吧。

那麼來對映一下分布式計算中的關係吧。

公司定義了:

1.分布式計算的目標(這個計算要得到什麼結果)

2.每個worker做哪些工作(map)

3.工作怎麼分配(任務排程)

4.最後結果如何彙總(reduce)

獵頭在這裡充當了乙個資源排程的角色,所有空閒worker都向獵頭註冊,公司則向獵頭申請worker。

worker拿到工作,工作完,沒下乙個工作就去下一家公司啦。

第一次寫,肯定很醜,還沒圖,多多包涵,不過應該表達清楚了。erlang中,分布式的實現有disco

不過這個專案缺乏維護,打算用18版本的erlang自己實現一次mapreduce。期待吧!

分布式計算模型MapReduce

1 需求 統計乙個檔案中每乙個單詞出現的總次數。2 案例資料 3 編寫reducer類 public class wordcountreducer extends reducer v.set sum context.write key,v 4 編寫驅動類 public class wordcount...

分布式(通俗易懂。。。)

在這裡,簡單滴問乙個問題,為什麼乙個好好的程式要變成分布式,這裡說一下理由 1.為了效能擴充套件,系統負載高,單台機器無法承載,希望通過使用多台機器來提高系統的負載能力.2.為了增強可靠性 軟體不是完美的,網路不是完美的,甚至機器本身也不可能是完美的,隨時可能會出錯,為了避免故障,需要將業務分散開保...

分布式計算

定義 研究如何把乙個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。什麼是分布式系統 分布式系統 distributed system 是由多台計算機和通訊的軟體通過計算機網路連線組成 本地區域網或者廣域網 分布...