自己做的网站链接,上海网站建设公司兴田德润放心,页面菜单 wordpress,制作音乐排行榜html5分布式中的Cap定理 CAP理论 C: 一致性#xff0c;是站在分布式的角度#xff0c;要么读取到数据#xff0c;要么读取失败#xff0c;比如数据库主从#xff0c;同步时的时候加锁#xff0c;同步完成才能读到同步的数据#xff0c;同步完成#xff0c;才返回数据给程序是站在分布式的角度要么读取到数据要么读取失败比如数据库主从同步时的时候加锁同步完成才能读到同步的数据同步完成才返回数据给程序这样就能解决数据不一致的问题简单来说就是保证数据最新A: 可用性任何客户端请求都能得到响应式数据不会出现响应错误但可能不包含最新的写入数据简单来说就是保证数据不出错P: 分区容错性由于分布式系统都是通过网络通信的网络是不可靠的当任意数量的消息丢失或延迟到达的时候系统仍然提供服务, 不会挂掉简单说就是一直运行不管内部出现任何数据同步问题强调的是不挂但是要保证集群内有足够多的可用节点所以一般要满足这个P条件 CAP理论只有两两相交不能同时满足三点一般而言分布式系统要满足P这个要求就是不能挂掉所以要么是CP要么是AP。而CA类型的就是单体应用而非分布式应用
Base 理论
这里先看一个场景有两个人分别是a和b, a在A银行存钱b在B银行存钱有一种情况是a给b转账10元b查询时可能不会及时到账系统还没有执行完这样就存在一个中间状态比如提示1个小时候再查询是否到账这样就可以从业务层面解决问题还有一种情况a转了系统执行了但是遇到问题了b没有收到这时候a仍然要保持原来的余额那这时候通知a, 重新转一次账即可。这一种是银行系统故障问题为了保持一致性在高并发的场景中是不可接受的可以主动提示用户1小时之后再进行查询这是一个中间状态或者设置一个转账中的标识现在我们思考2个问题在生产环境中是否可以牺牲可用性也就是系统不能提供服务了; 是否可以牺牲一致性也就是数据不一致的问题我们在分布式服务中就需要做一些取舍根据自身情况的等级来选择现在举2个例子单独的mysql是强一致性分布式的集群是弱一致性在强一致性的单独的系统中基于事务可以回滚分布式比如A和B银行两家银行都是相互独立的相互不会被控制所以是弱一致性 我们现在来看下Base理论的三要素 1 ) 基本可用 Basically Available系统出现了不可预知的故障但是能用相比较正常系统而言会有响应时间上的损失和功能上的损失比如从原来的 200ms响应到 500ms相应再比如抢购活动中抢不到提示稍后再试2 软状态 Soft State也就是可以有一段时间不同步什么是软状态呢相对于原子性而言要求多个节点的数据副本都是一致的这是一种硬状态软状态是指允许系统中的数据存在中间状态并认为该状态不影响系统的整体可用性即允许系统在多个不同的节点的数据副本存在数据延时3 最终一致性Eventually Consistent, 简称 E, 最终数据一致就可以了而不是时时保持强一致。上面说软状态其实不可能一直是软状态必须有个时间期限。在期限过后应当保证所有副本保持数据一致性从而达到数据的最终一致性。这个时间期限取决于网络延时、系统负载、数据复制方案设计等因素。A到B银行的转账就是最终一致性的体现