1、概述
1.1 分布式應用可以在給定時間(同時)在網絡中的多個系統上運行,通過協調它們以快速有效的方式完成特定任務;
通常來說,對於復雜而耗時的任務,非分布式應用(運行在單個系統中)需要幾個小時才能完成,而分布式應用通過使用所有系統涉及的計算能力可以在幾分鍾內完成。
1.2 集群:分布式應用正在運行的一組系統;
節點:在集群中運行的每台機器;
1.3 分布式應用的組成:
Server應用程序:
服務器應用程序實際上是分布式的,並具有通用接口,以便客戶端可以連接到集群中的任何服務器並獲得相同的結果;
Client應用程序:
客戶端應用程序是與分布式應用進行交互的工具;
1.4 分布式應用的優點:
可靠性 - 單個或幾個系統的故障不會使整個系統出現故障。
可擴展性 - 可以在需要時增加性能,通過添加更多機器,在應用程序配置中進行微小的更改,而不會有停機時間。
透明性 - 隱藏系統的復雜性,並將其顯示為單個實體/應用程序;
1.5 分布式應用的挑戰:
競爭條件 - 兩個或多個機器嘗試執行特定任務,實際上只需在任意給定時間由單個機器完成。例如,共享資源只能在任意給定時間由單個機器修改。
死鎖 - 兩個或多個操作等待彼此無限期完成。
不一致 - 數據的部分失敗。