分佈式系統學習筆記

分佈式系統的定義

分佈式系統就是若干獨立計算機的集合,這些計算機對於用戶來說就像是單個相關係統。

當在不同的主機執行不同的功能來最終完成同一個服務,這就可以叫做分佈式系統。當在不同的主機執行相同的功能,這就叫做集羣。集羣就是將相同的程序,通過不斷橫向擴展,以提高服務能力的方式。

分佈式系統的優勢

分佈式系統因爲將數據、功能等都分到多個主機,這樣如果發生由於各種原因而導致的主機崩潰的時候,我們可以減輕風險,另一個重要的優勢就是可擴展性,任何主機都會有性能的極限,而分佈式可以通過不斷擴張主機的數量以實現橫向水平性能的擴展,主機數量越多,CPU、內存、存儲資源等也就越多,能夠處理的併發訪問量也就越大。

分佈式系統面臨的挑戰

  • 異構性:分佈式系統由於基於不同的網絡、操作系統、計算機硬件和編程語言來構造,所以必須用一種通用的網絡通信協議來屏蔽異構系統之間的差異。一般由中間件來處理這些差異。
  • 一致性:數據被分散或者複製到不同的主機上,如何保證各臺主機的一致性則成爲一個難點。
  • 故障獨立性:分佈式系統要求單個主機出現故障不會影響整個系統的正常使用。
  • 安全性:由於分佈式系統主要通過網絡通信來相互溝通,所以網絡通信中的數據安全也是一個需要解決的問題。
  • 可擴展性:系統要設計成隨着業務量的增加,相應的系統也必須要能擴展來提供相對應的服務。

分佈式系統基礎設施

  1. 分佈式緩存系統
    分佈式緩存主要用於高併發環境相愛,減輕數據庫的壓力,提高系統的響應速度和併發吞吐量。當大量的讀、寫請求涌向數據庫時,磁盤的處理速度和內存不再一個量級,因此,在數據庫之前加一層緩存,能夠顯著提高系統的響應速度,並降低數據庫的壓力。
  2. 持久化存儲
    常見的分佈式系統存儲解決方案,包括Mysql的分佈式擴展、HBase的API及使用場景、Redis的使用等。
  3. 分佈式信息系統
    消息可以被保存在隊列中,直到被接受者取出。
  4. 搜索引擎
    垂直化的搜索引擎。
  5. CDN系統
  6. 負載均衡系統
  7. 運維自動化系統
  8. 實時計算系統
  9. 離線計算系統
  10. 分佈式文件系統
  11. 日誌收集系統
  12. 監控系統
  13. 數據倉庫

今天先寫到這兒,後面補充。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章