分布式业务系统设计的时候,基本的问题有: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架构