分布式下的一致性

分布式下的一致性

在这里插入图片描述

核心是可拓展性

通过对服务,存储的拓展,来提高系统的处理能力

通过对多台服务器协同工作,来完成单台服务器无法完成的任务

单点故障

传统架构中,系统中某个组件一旦失效,这会让整个系统都无法工作,而在分布式系统中,单点不影响整体的运作

无状态

无状态的服务才能满足部分机器宕机不影响全部,可以随时进行拓展的需求

CAP理论

一个分布式系统只能满足一致性

c consistency 一致性

所有节点同时能看到相同的数据

也就是更新操作完成并返回后,所有节点在同一时间的数据完全保持一致,等同于所有的节点同时拥有数据的最新版本

一致性被称为原子对象,任何的读写都因该看起来是原子的 或串行的,写后面的读一定能读到前面的内容,所有的读写请求都好像被全局排序

A Availability 可用性

任何时候,读写都是成功的

也就是服务一直可用而且都是正常响应

这里可以对应SLA协议(N个9)

对任何非失败节点都应该在有限的时间内得到返回

P Partition Tolerance 分区容忍性

当部分节点出现消息丢失或者分区故障时分布式系统仍然能够继续运行

在遇到某节点或网络分区之间网络不可达的情况下,仍然能够对外提供满足一致性和可用性的服务

允许节点之间丢失任意多消息,当网路分区时,节点之间的消息可能完全丢失

CP

放弃可用性,追求一致性和分区容错性

zooKeeper 就是采用了CP一致性 核心算法 Zab算法

我的理解:zk采用主从架构,当主节点挂掉,就要采取选举,这时系统不可用(放弃可用性),主从架构的特点,从节点复制主节点数据提供读,主节点 提供写和读,以及每次写后将数据发送给从节点,是一种典型的读写分离(满足了一致性和分区容错性)

AP

放弃强一致性,追求分区容错性和可用性

绝大部分分布式架构的选择

Base理论也是这一基础上的拓展

总结

cap三者不能同时满足,不要把精力浪费在如何才能设计满足三者的分布式系统上,而要进行取舍

一般是选择AP 和 CP 这里提到强一致性和最终一致性(Base 理论)

我们关注的往往是如何保持相对一致性的前提下,提高系统的可用性

Base理论

Base 理论是 Basically Available (基本可用) Soft-state(软状态) Eventually Consistent (最终一致性)的缩写

基本可用: 不追求CAP 中的任何时候,读写都是成功的,而是系统能够基本运行,一直提供服务, 允许损失部分性能 (请求可能会被 限流,降级)

软状态: 允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性

最终一致性 : 数据不可能一直处于软状态,必须在一个时间期限内达到某个节点的一致性,达到最终一致性

( 这里提到 ) 强一致性

当用户更新后,任何多的后续进程的访问都会返回最新的更新过的值,这种对用户是最友好的,但是根据CAP理论,需要牺牲可用性

总结

Base理论放弃强一致性,实现基本可用

一致性算法

paxos:https://juejin.cn/post/6844903621499289613

raft : https://juejin.cn/post/6907151199141625870 典型中间件 : etcd

zab : https://juejin.cn/post/6978751402206052360 典型中间件 : zookeeper

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值