分布式CAP理论与BASE理论
介绍CAP理论与BASE理论,此两种理论在分布式开发中不可不知.
CAP理论
是分布式最基本的理论基础
C: Consistency 强一致性
A: Availability 可用性
P: Partition Tolerance 分区容错性
什么是C,强一致性
tips:同一时刻,所有人看到的数据是一样的.重要在"强"字
强一致性是指分布式的两个节点的数据是实时同步的.
如果放弃C,并不是完全不需要数据的一致性,而保留数据的最终一致性.
什么是A,可用性
tips: 指任何提供的服务必须可用的状态.重要在"用"字
可用性是指系统提供的服务必须一直处于可用的状态.
对求用户来说:所有的请求,必须有响应.而不是报404, 500错误.
什么是P,分区容错性
tips: 某一网络发生故障,系统依然可用.重要在"容"字
分区容错性是指遇到某一网络分区发生故障的时间,你提供的服务依然可用.
在分布式系统中,不同的节点分布在不同的子网络,来提高分区容错性.
除非整个互联网瘫痪.
实际应用
CAP一般只能满足2个,要么是CA,要么是CP, 要么是AP
CA: Oracle, Mysql,Postgres,etc等
CP: BigTable, HBase, MongoDB, Redis
AP: 大多数网站架构的选择
采用AP并不代表放弃C
AP模式,放弃了C的强一致性,但保留数据的最终一致性.
由此涉及到BASE模型, (请向下看)
BASE理论
无法做到强一致性,采用适当的方式来使系统最终一致性
Basically Available 基本可用
Soft state 软状态
Eventually consistency 最终一致
什么是BA,基本可用
假设系统, 出现了不可预知的故障,但还是可用.
如: 响应时间上的损失, 功能上的损失.
什么是S,软状态
在分布式中,允许不同节点之间存在数据延时
什么是E,最终一致
系统不可以一直是软状态, 必须有个时间期限
分布式中不同节点,最终保持数据一致性.
额外加餐
什么是分布式
不同的多台服务器部署不同的服务模块
他们之间使用RPC通信
对外提供服务和服务之间协作
什么是集群
不同的多台服务器部署相同的服务模块
通过分布式调度软件(如nginx)进行统一的调度
对外提供服务和访问