前言
瞭解什麼是分散式,得先了解應用系統的分層和分割。
分層
分層是將系統在橫向維度上切分成幾個部分,每個部分負責比較單一的職責,然後通過上層對下層的依賴和呼叫組成一個完整的系統。網站軟體系統可分層為應用層、服務層、資料層。
應用層:負責具體業務和檢視展示。(可再細分為檢視層和業務邏輯層)
服務層:為應用層提供服務支援。(可再細分為資料介面層和邏輯處理層)
資料層:提供資料儲存訪問服務。
PS:禁止跨層次呼叫和逆向呼叫。
分割
分割是將系統在縱向維度上進行切分,將不同的功能和服務分割開來,包裝成高內聚低耦合的模組單元,我們常說的微服務就是這樣。
分散式
分散式部署是將不同模組(分層、分割後的模組)部署在不同的伺服器上,通過遠端呼叫協調工作。與負載均衡區別在於,負載均衡叢集上的伺服器的內容是相同的,而分散式叢集上的是不同的。
優點
1、可以使用更多計算機資源,能夠處理併發訪問和資料量更大。
缺點
1、分散式服務呼叫必須通過網路,可能對效能影響大。
2、越多伺服器,某一機器當機,可能導致很多應用不可用。
3、開發管理維護複雜性、難度更高。
常用的分散式方案
1、分散式應用和服務
將分層和分割後的應用和服務模組分散式部署。
2、分散式靜態資源
網站靜態資源如JS、CSS、Logo圖片等資源獨立分散式部署。
3、分散式資料和儲存
海量資料進行分散式儲存。
PS:各種NOSQL產品幾乎都是分散式的。
4、分散式計算
業務計算規模非常大的,使用Hadoop及其MapReduce分散式計算框架進行批處理計算。
5、分散式快取
分散式快取將資料快取在一個專門的分散式快取叢集中,應用程式通過網路通訊訪問快取資料。
6、分散式檔案系統