1.先说字母的意思
- C , consistency,翻译过来叫“一致性”;
- A , availability,"可用性"
- P, partition tolerance,分区容错性
- consistency ,一致性,分3种,强一致,弱一致,最终一致;cap中指的是强一致性;
- 强一致性,就是分布式中,有很多结点(一个服务多台主机),对同一个情况下,每个结点上的数据只要有读取,返回的数据都是一模一样的; 比如银行卡取钱,必须所有的数据都一致
- 弱一致性和最终一致性,都是有一个容错时间窗口的,在一段时间之后 ,如果数据能保持一致,那是最终一致;如果过一时间窗口,还有可能不一致,那就是弱一致;比如微信提现,一般在2小时之内到账,这个就是最终一致,时间窗口是2小时
- availability,可用性,就是分布式系统,对外表现是保证可用的;不能这次查询正常,下次异常了
- partition tolerance,分区容错,意思是一个分布式系统,对外表现的是一个整体,不能因为内部的某个结点异常或者网络故障,导致整个系统异常了;这个是分布式系统必须要保证的。不然就没有分布式的意义了
- CAP中,p是必须的,所以ca两个只能满足一种;因为如果要保证数据一致,每个结点数据同步是需要时间的,在这个同步数据的时间内,系统就不可用;如果要可用了,那数据就有可能不强一致了
- zookeeper,保证的是CP,强调的时数据强一致;zk是结点之间同步数据的时候,服务是不能保证可用的,如果出现了master网络故障或者下线,需要重新选举leader的这个期间内,服务是不可用的;所以客户端在请求zk服务的时候,要考虑失败重试;
7.Eurka,保证是AP,数据最终一致,保证可用性; 大多数网站架构的选择,对外提供服务的网站肯定是先保证服务可用了。 - redis ,mongdb,是保证CP;涉及到数据存储,服务注册一般都保证数据一致吧。感觉 这是数据存储的基本要求
- 满足CA原则的,一般都是单点集群,没有备份数据同步功能 ,扩展性不好
网友评论