書名: 分布式實時處理系統:原理、架構與實現作者名: 盧譽聲本章字數: 914字更新時間: 2019-01-03 10:50:21
1.2 分布式計算及其原理
前文提到分布式計算就是將計算任務分攤到大量的計算節點上,一起完成海量的計算任務。
而分布式計算的原理和并行計算類似,就是將一個復雜龐大的計算任務適當劃分為一個一個小任務,并讓任務并行執行,只不過分布式計算會將這些任務分配到不同的計算節點上,每個計算節點只需要完成自己的計算任務即可,可以有效分擔海量的計算任務。而每個計算節點也可以并行處理自身的任務,更加充分利用機器的CPU資源。最后我們想方設法將每個節點計算結果匯總,得到最后的計算結果。
很多時候,劃分計算任務以支持分布式計算看起來較為困難,但人們逐漸發現確實也是可行的。而且隨著計算任務量增加與計算節點增加,這種劃分體現出來的價值會越來越大。分布式計算一般分為以下幾步。
1)設計分布式計算模型:首先我們要規定分布式系統的計算模型。計算模型決定了系統中各個組件應該如何運行,組件之間應該如何進行消息通信,組件和節點應該如何管理等。
2)分布式任務分配:分布式算法不同于普通算法。普通算法通常是按部就班,一步接著一步完成任務。而分布式計算中計算任務是分攤到各個節點上的。該算法著重解決的是能否分配任務,或如何分配任務的問題。
3)編寫并執行分布式程序:使用特定的分布式計算框架與計算模型,將分布式算法轉化為實現,并盡量保證整個集群的高效運行。其中有一些難點。
① 計算任務的劃分。
分布式計算的特點就是多個節點同時運算,因此如何將復雜算法優化分解成適用于每個節點計算的小任務,并回收節點的計算結果就成了問題。尤其是并行計算的最大特點是希望節點之間的計算互不相干,這樣可以保證各節點以最快速度完成計算,一旦出現節點之間的等待,往往就會拖慢整個系統的速度。
② 多節點之間的通信方式。
另一個難點是節點之間如何高效通信。雖然在劃分計算任務時,計算任務最好確保互不相干,這樣每個節點可以各自為政。但大多數時候節點之間還是需要互相通信,比如獲取對方的計算結果等。一般有兩種解決方案:一種是利用消息隊列,將節點之間的依賴變成節點之間的消息傳遞;第二種是利用分布式存儲系統,我們可以將節點的執行結果暫時存放在數據庫中,其他節點等待或從數據庫中獲取數據。無論哪種方式只要符合實際需求都是可行的。
- 零起點學Linux系統管理
- Modern Web Testing with TestCafe
- BPEL and Java Cookbook
- FreeRTOS實時內核應用指南
- Kubernetes網絡權威指南:基礎、原理與實踐
- 嵌入式應用程序設計綜合教程(微課版)
- STM32庫開發實戰指南:基于STM32F4
- Linux內核觀測技術BPF
- Windows 7案例教程
- Application Development in iOS 7
- 計算機應用基礎(Windows 7+Office 2016)
- Windows 7實戰從入門到精通(超值版)
- Linux網絡操作系統項目教程(RHEL 7.4/CentOS 7.4)(第3版)(微課版)
- OpenVZ Essentials
- Web Penetration Testing with Kali Linux(Third Edition)