Distributed Systems 是把一台電腦可以做完的事情分到很多台電腦上。
但不管 Application 要完成什麼,都只包含兩件事:
Distributed system 就是把這兩個問題從一台電腦上,「分散」到多台電腦上而已。
只用一台電腦要做擴展的話,直覺就是把資源往上加,但這樣成本會太高。
使用多台電腦就可以用較低的成本換取相近的效能,不過會增加一些麻煩,這就是 Distributed System 要討論的東西。
Availability = uptime / (uptime + downtime)
Partition | Replicate | |
Performance | 降低搜尋的目標集 | 增加存取吞吐量 |
Availability | 縮窄損害範圍 | 提供備援資料 |
例子:
一般日常中,聽到「你講得很抽象」跟這邊指的不是同一件事。
可以先把這邊講的抽象想成是「簡化事情的複雜程度」。
所以「A 比 B 的抽象程度更高」,指的是 A 刻意忽視了 B 的某些細節,以方便管理,所以 A 更易於理解。
當我們每次進行抽象化時,都會失去對一些東西的掌握;假如遇到某些效能瓶頸時,還是得往實際面去解決,這時候就得重新審視那些被忽略的地方。