learn:distributed-system
差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版前次修改 下次修改 | 前次修改 | ||
learn:distributed-system [2022/05/14 15:01] – admin_wi1d5ky | learn:distributed-system [2024/12/22 21:17] (目前版本) – 外部編輯 127.0.0.1 | ||
---|---|---|---|
行 10: | 行 10: | ||
Distributed system 就是把這兩個問題從一台電腦上,「分散」到多台電腦上而已。 | Distributed system 就是把這兩個問題從一台電腦上,「分散」到多台電腦上而已。 | ||
+ | --- | ||
## 目標: Scalability | ## 目標: Scalability | ||
- | 只用一台電腦的話直覺要做擴展就是把資源往上加,但這樣成本會太高。 | + | 只用一台電腦要做擴展的話,直覺就是把資源往上加,但這樣成本會太高。 |
- | 多個電腦就可以用較低的成本換取相近的效能,不過會增加一些麻煩,這就是 Distributed System 要討論的東西。 | + | 使用多台電腦就可以用較低的成本換取相近的效能,不過會增加一些麻煩,這就是 Distributed System 要討論的東西。 |
- | ### 三個方向 | + | ### 三個 |
1. Size Scalability:增加系統的 Node 時,系統跑的速度應該要線性提昇;資料變多時讀取速度不會因此而變得過慢 | 1. Size Scalability:增加系統的 Node 時,系統跑的速度應該要線性提昇;資料變多時讀取速度不會因此而變得過慢 | ||
行 40: | 行 41: | ||
1. Node 增加時會產生 overhead | 1. Node 增加時會產生 overhead | ||
2. Node 之間的距離 | 2. Node 之間的距離 | ||
+ | |||
+ | --- | ||
+ | ## 面對分散式系統的兩個常用技巧: Partition 和 Replicate | ||
+ | |||
+ | - Partition: 把資料切成多個小塊 | ||
+ | - Replicate: 把資料複製多份 | ||
+ | |||
+ | ### 對 Performance & Availability 的影響 | ||
+ | |||
+ | | | Partition | ||
+ | | Performance | ||
+ | | Availability | 縮窄損害範圍 | ||
+ | |||
--- | --- | ||
## 建立抽象模型以解決分散式系統問題 | ## 建立抽象模型以解決分散式系統問題 | ||
+ | |||
例子: | 例子: | ||
行 51: | 行 66: | ||
- Consistency model (strong, eventual) | - Consistency model (strong, eventual) | ||
- | ### 如何評估抽象化:兩個面向 - 易理解程度 & 成本考量 | + | ### 兩個面向評估抽象化:易理解程度 & 成本考量 |
- 易理解程度: | - 易理解程度: | ||
- 成本考量: | - 成本考量: | ||
- | ### 什麼叫「抽象得更好」 | + | |
+ | ### 什麼叫「抽象程度更高」 | ||
一般日常中,聽到「你講得很抽象」跟這邊指的不是同一件事。 | 一般日常中,聽到「你講得很抽象」跟這邊指的不是同一件事。 | ||
行 62: | 行 78: | ||
可以先把這邊講的抽象想成是「簡化事情的複雜程度」。 | 可以先把這邊講的抽象想成是「簡化事情的複雜程度」。 | ||
- | 所以「A 比 B 抽象得更好」,指的是 A 刻意忽視了 B 的某些細節,以方便管理,所以 A 更易於理解。 | + | 所以「A 比 B 的抽象程度更高」,指的是 A 刻意忽視了 B 的某些細節,以方便管理,所以 A 更易於理解。 |
> 當我們每次進行抽象化時,都會失去對一些東西的掌握;假如遇到某些效能瓶頸時,還是得往實際面去解決,這時候就得重新審視那些被忽略的地方。 | > 當我們每次進行抽象化時,都會失去對一些東西的掌握;假如遇到某些效能瓶頸時,還是得往實際面去解決,這時候就得重新審視那些被忽略的地方。 | ||
- | |||
- | |||
- | |||
- | ## 兩個技巧: Partition 和 Replicate | ||
- | |||
- | - Partition: 把資料切成多個小塊,降低搜尋的目標集、縮窄損害範圍 | ||
- | - Replicate: 把資料複製多份,增加存取吞吐量、提供備援資料 | ||
- | |||
- | Replicate 很好用,只是需考量「一致性」(CAP 理論 的 Consistency),但就是要權衡考量的部分。(為了可用性降低資料同步等等) | ||
- | |||
- | --- | ||
- | |||
- | |||
learn/distributed-system.1652511702.txt.gz · 上一次變更: 2024/12/22 21:17 (外部編輯)