官术网_书友最值得收藏!

1.2 分布式計算及其原理

前文提到分布式計算就是將計算任務分攤到大量的計算節點上,一起完成海量的計算任務。

而分布式計算的原理和并行計算類似,就是將一個復雜龐大的計算任務適當劃分為一個一個小任務,并讓任務并行執行,只不過分布式計算會將這些任務分配到不同的計算節點上,每個計算節點只需要完成自己的計算任務即可,可以有效分擔海量的計算任務。而每個計算節點也可以并行處理自身的任務,更加充分利用機器的CPU資源。最后我們想方設法將每個節點計算結果匯總,得到最后的計算結果。

很多時候,劃分計算任務以支持分布式計算看起來較為困難,但人們逐漸發現確實也是可行的。而且隨著計算任務量增加與計算節點增加,這種劃分體現出來的價值會越來越大。分布式計算一般分為以下幾步。

1)設計分布式計算模型:首先我們要規定分布式系統的計算模型。計算模型決定了系統中各個組件應該如何運行,組件之間應該如何進行消息通信,組件和節點應該如何管理等。

2)分布式任務分配:分布式算法不同于普通算法。普通算法通常是按部就班,一步接著一步完成任務。而分布式計算中計算任務是分攤到各個節點上的。該算法著重解決的是能否分配任務,或如何分配任務的問題。

3)編寫并執行分布式程序:使用特定的分布式計算框架與計算模型,將分布式算法轉化為實現,并盡量保證整個集群的高效運行。其中有一些難點。

① 計算任務的劃分。

分布式計算的特點就是多個節點同時運算,因此如何將復雜算法優化分解成適用于每個節點計算的小任務,并回收節點的計算結果就成了問題。尤其是并行計算的最大特點是希望節點之間的計算互不相干,這樣可以保證各節點以最快速度完成計算,一旦出現節點之間的等待,往往就會拖慢整個系統的速度。

② 多節點之間的通信方式。

另一個難點是節點之間如何高效通信。雖然在劃分計算任務時,計算任務最好確保互不相干,這樣每個節點可以各自為政。但大多數時候節點之間還是需要互相通信,比如獲取對方的計算結果等。一般有兩種解決方案:一種是利用消息隊列,將節點之間的依賴變成節點之間的消息傳遞;第二種是利用分布式存儲系統,我們可以將節點的執行結果暫時存放在數據庫中,其他節點等待或從數據庫中獲取數據。無論哪種方式只要符合實際需求都是可行的。

主站蜘蛛池模板: 迭部县| 临猗县| 安吉县| 航空| 久治县| 武胜县| 五寨县| 汽车| 承德市| 长治市| 浠水县| 额尔古纳市| 兰溪市| 云南省| 无锡市| 竹溪县| 神农架林区| 绥芬河市| 鲁甸县| 漠河县| 安丘市| 台前县| 嘉义县| 普兰县| 城固县| 平陆县| 安化县| 黄骅市| 平罗县| 丁青县| 咸阳市| 察隅县| 南投市| 社会| 宜章县| 惠州市| 竹山县| 澄江县| 南京市| 商丘市| 九寨沟县|