Introduction
1.什麼是分佈式系統?
- 核心:通過網絡使一羣計算機通過相互通信來完成一些連貫的任務。
- 例子:存儲爲大網站或者大數據計算(MapReduce)以及點對點文件共享等等
- 原因:許多關鍵的基礎設施是分佈式的
2.爲什麼人們要構建分佈式系統?(以此獲得更高的性能)
- 通過並行增加容量(Parallelism)
- 通過複製來容忍錯誤(fault tolerance)
- 使計算物理上接近外部實體(Physical)
- 通過隔離實現安全(security / isolated)
困難: - 併發編程和複雜的交互帶來的各種問題(concurrency)
- 故障模式、局部故障(partial failure)
- 難以實現的性能潛力(performance)
3.實驗
- 實驗1:MapReduce
- 實驗2:使用Raft進行容錯複製
- 實驗3:容錯鍵/值存儲(K/V server)
- 實驗4:分片鍵/值存儲(Shared K/V service)
4.這是一門關於應用程序基礎設施的課程。(Infrastructure)
- 存儲(Storage)
- 通信(Communication)
- 計算(Computation)
All,最大的目標是:構建一個接口,隱藏分佈複雜性的抽象。(abstractions)
5.主題(考慮抽象)
(1)實現(implementation)
- RPC、線程(threads)、併發控制(concurrency CH.)。
(2)性能(performance)
- 目標:用擴展加速(Scalability)即(Nx服務器-> Nx總吞吐量通過並行CPU、磁盤、網絡)
- 處理更多的負載只需要購買更多的計算機