分布式业务系统设计的时候,基本的问题有:
1. 高可用(High Availability)
2. 可伸缩(scalable-扩展的方法论:AKF scale cube)
3. 可扩展(Extensibility)
4. 容错性(弹力设计-Resilience)
5. 高性能(High Performace)
6. 容量规划(Capacity Plan)
以上是最基本的业务诉求。
而在分布式基础系统设计的时候,基本的问题有:
1. 体系结构
2. 进程
3. 通信
4. 命名
5. 同步
6. 一致性与复制
7. 容错性
8. 安全性
两者互相影响且互相决定。
理解高可用和可伸缩核心要理解复制(Replication),比如mysql主从复制的binlog,redis主从复制,etcd基于raft的复制状态机的复制,在业务层如果设计为无状态,则复制会简单。可以说没有复制就没有高可用和可伸缩。
对比扩展性与伸缩性:
下图总结了不同层次的高可用与可伸缩的手段。
来源:http://www.cnblogs.com/xingzc/p/5757758.html
https://wenku.baidu.com/view/5ffbfa2fae1ffc4ffe4733687e21af45b207fe59.html