概要: 分布式系统设计理念 、 CAP定理 、 BASE理论
一、分布式设计理念
目标:提升性能和吞吐量,尽量保证容错性
1、中心化设计:
干活的/领导: leader分发任务并监督“干活的”,“干活的”劳累倒了,不“医治”踢出去,任务分给其他人,Kubernetes 设计思路。
问题: 1)“领导”安危问题,热备或者冷备,自动选举切换或者手动切换解决
2)“领导”能力问题:领导10个人并不意味着可以领导100个
2、去中心化设计
众生地位平等,由节点来自由选择中心,集群成员自发选领导,如zk
问题: 脑裂:集群由于网络的故障,被分两个单独集群各自工作,冲突和错误。较小自杀
3、分布式与集群的区别是什么?
分布式: 多个子业务,部署不同服务器上
集群: 同一个业务,部署在多个服务器上。如redis集群
二、CAP定理
一致性(Consistence) :所有节点访问同一份最新的数据副本
可用性(Availability):每次请求都能获取到非错响应——但不保证为最新数据
分区容错性(Partition tolerance) : 故障时,仍满足一致性和可用性。网络分区时,继续服务,强一致性和可用性只能2选1
《分布式系统之CAP理论》 : http://www.cnblogs.com/hxsyl/p/4381980.html
三、BASE理论
BASE 是 Basically Available(基本可用) 、Soft-state(软状态) 和 Eventually Consistent(最终一致性) 三缩写。基于CAP定理逐步演化而来的,大大降低对系统的要求。
牺牲一致性来满足高可用,做法:1)按功能划分数据库、2)分片(如开源的Mycat、Amoeba等)。
1.基本可用:1)时间: 正常0.5秒,故障1~2秒2)功能:大促保护购物系统的稳定性,部分消费者引导到降级页面
2. 软状态 :允许系统数据有中间状态,即允许不同节点数据同步延时