分佈式系統的定義
分佈式系統就是若干獨立計算機的集合,這些計算機對於用戶來說就像是單個相關係統。
當在不同的主機執行不同的功能來最終完成同一個服務,這就可以叫做分佈式系統。當在不同的主機執行相同的功能,這就叫做集羣。集羣就是將相同的程序,通過不斷橫向擴展,以提高服務能力的方式。
分佈式系統的優勢
分佈式系統因爲將數據、功能等都分到多個主機,這樣如果發生由於各種原因而導致的主機崩潰的時候,我們可以減輕風險,另一個重要的優勢就是可擴展性,任何主機都會有性能的極限,而分佈式可以通過不斷擴張主機的數量以實現橫向水平性能的擴展,主機數量越多,CPU、內存、存儲資源等也就越多,能夠處理的併發訪問量也就越大。
分佈式系統面臨的挑戰
- 異構性:分佈式系統由於基於不同的網絡、操作系統、計算機硬件和編程語言來構造,所以必須用一種通用的網絡通信協議來屏蔽異構系統之間的差異。一般由中間件來處理這些差異。
- 一致性:數據被分散或者複製到不同的主機上,如何保證各臺主機的一致性則成爲一個難點。
- 故障獨立性:分佈式系統要求單個主機出現故障不會影響整個系統的正常使用。
- 安全性:由於分佈式系統主要通過網絡通信來相互溝通,所以網絡通信中的數據安全也是一個需要解決的問題。
- 可擴展性:系統要設計成隨着業務量的增加,相應的系統也必須要能擴展來提供相對應的服務。
分佈式系統基礎設施
- 分佈式緩存系統
分佈式緩存主要用於高併發環境相愛,減輕數據庫的壓力,提高系統的響應速度和併發吞吐量。當大量的讀、寫請求涌向數據庫時,磁盤的處理速度和內存不再一個量級,因此,在數據庫之前加一層緩存,能夠顯著提高系統的響應速度,並降低數據庫的壓力。 - 持久化存儲
常見的分佈式系統存儲解決方案,包括Mysql的分佈式擴展、HBase的API及使用場景、Redis的使用等。 - 分佈式信息系統
消息可以被保存在隊列中,直到被接受者取出。 - 搜索引擎
垂直化的搜索引擎。 - CDN系統
- 負載均衡系統
- 運維自動化系統
- 實時計算系統
- 離線計算系統
- 分佈式文件系統
- 日誌收集系統
- 監控系統
- 數據倉庫
今天先寫到這兒,後面補充。。。