分佈式業務系統設計的時候,基本的問題有:html
1. 高可用(High Availability) 2. 可伸縮(Scalable-擴展的方法論:AKF scale cube) 3. 可擴展(Extensibility) 4. 容錯性(彈力設計-Resilience) 5. 高性能(High Performace) 6. 容量規劃(Capacity Plan)
以上是最基本的業務訴求。
而在分佈式基礎系統設計的時候,基本的問題有:mysql
1. 體系結構 2. 進程 3. 通訊 4. 命名 5. 同步 6. 一致性與複製 7. 容錯性 8. 安全性
二者互相影響且互相決定。
理解高可用和可伸縮核心要理解複製(Replication),好比mysql主從複製的binlog,redis主從複製,etcd基於raft的複製狀態機的複製,在業務層若是設計爲無狀態,則複製會簡單。能夠說沒有複製就沒有高可用和可伸縮。redis
對比擴展性與伸縮性:sql
下圖總結了不一樣層次的高可用與可伸縮的手段。安全
來源:http://www.cnblogs.com/xingzc/p/5757758.html
https://wenku.baidu.com/view/5ffbfa2fae1ffc4ffe4733687e21af45b207fe59.html架構