06|配置中心:如何确保配置的强一致性呢?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了分布式系统中配置中心的重要性以及如何确保配置的强一致性。首先,文章指出了手动管理配置在分布式系统中的问题,引出了配置中心的必要性。随后,文章详细分析了配置中心需要具备的功能,包括统一管理配置信息、保持实例之间配置的一致性以及高效地修改配置。针对存储系统的选择,文章比较了常见的存储系统,强调了对于配置中心的业务场景来说,选择一个AP模型的存储系统是最优的方案。此外,文章还探讨了如何做配置信息的同步以及如何确保配置的强一致性。最后,通过一个例子介绍了类似两阶段提交的方式,来实现强一致性的配置发布。整体而言,本文通过深入的技术讨论,为读者提供了关于配置中心的全面理解,帮助读者解决分布式系统配置管理问题。
《深入浅出分布式技术原理》,新⼈⾸单¥59
全部留言(10)
- 最新
- 精选
- 努力努力再努力思考题: 其实就是 一个 数据一致性问题 ,关于共识算法 共识算法: 1. Paxos (批量的Multi Paxos) 2. Raft 算法。这种比较熟 3.ZAB 算法 1. 如果允许 Prepare 状态的 Proxy 节点读,会出现什么问题? 出去的数据 是旧的数据 1.1 自己思路:这里是为了强一致性,如果不是强一致,其实感觉 有一个copy的数据 ,然后这边写完 再替换copy 其实是可以的 2. 如果允许 Prepare 状态的 Proxy 节点写,又会出现什么问题? 并行走的有多个写操作,可能出现有时序问题 2.1 自己思路: 如果是其他系统,可以使用mq 顺序消息 里面加一个时间戳的字段或者版本号 进行区分 我最近自己在玩计数服务,里面关于数据一致性 就用的是 2pc
作者回复: 赞~ 2PC 能保证数据的一致性,但是 2PC 是可用性非常差,被称为“反可用性”协议,所以 Raft 和 Paxos 之类的线性一致性并且高可用的算法价值非常大。
2022-02-0926 - bearlu如果我们选择 etcd 和 ZooKeeper,那么出现网络分区的时候,在网络分区的少数派节点一侧,配置中心将不能提供服务,这一侧的服务实例也就不能通过配置中心获取配置,这时如果有实例的重启等操作,就一定会发生故障。 老师。我这边有个问题。etcd分区后。只是不能写,但是读是应该可以,为什么不能提供服务呢?
作者回复: 在上面的情况,如果直接读网络分区的少数派节点一侧的数据,当数据在网络分区多数派一侧已经更新的情况下,就会读到旧版本的数据,即 stale read,这个就不是线性一致性的读了。 正常来说,如果要线性一致性地读 etcd 上的数据,需要 ReadIndex 或者 LeaseRead 之类的机制来保证。
2022-02-1023 - 青鸟飞鱼选择像Eureka这样子的AP系统,是最终一致性,不确定一致性的时间长短;像etcd出现网络分区时,少数节点的一边提供读服务,读的可能不是最新的数据。但是效果我觉得跟像Eureka差不多,因为不确定这个最终一致性的时间长度。
作者回复: etcd 对外的保障是线性一致性的,所以在故障的时候,少数节点是不准读的。不过很多情况下,很多公司也经常用 Etcd 来做服务发现,是因为公司只有一个集群,P一般很难出现,并且有了etcd,不想再引入其他的组件了,这个也是可以的。好的架构都是知道系统的边界,然后根据自己的情况去权衡
2022-02-211 - 不吃辣👾老师 数据迁移的工作中为什么会有两个proxy呢?这两个proxy解决了什么问题?
作者回复: 由于存储层数据是分片的,请求来了后,需要知道去哪一个存储查询数据,proxy 就是做路由的。 两个 proxy 是表达多个的意思,为了高可用。
2022-04-01 - peter请教老师一个问题: 在本章强一致性例子中,proxy不是配置中心,只是存储系统的proxy。图中没有画出配置中心。Proxy从配置中心获取配置信息。对吗?
作者回复: 是的
2022-02-10 - Rayjun在 k8s 中,configMap 是否可以替代配置中心2022-07-112
- 鱼肥这一节有点抽象,是不是应该提一下阿波罗?2023-06-27归属地:北京1
- 默默且听风我们是用redis集群缓存,如果服务器扛不住的话,再自己往外弹。2023-01-13归属地:北京
- janey思考题,eureka没用过,按照数据库的迁移尝试分析一下: 如果prepare时允许读,如果按迁移开始前的路由到proxy1,可能proxy1下对应存储的数据已经被迁走而读取不到数据失败;如果按迁移后的路由到proxy2,可能对应存储的数据尚未迁移到存储2而读取不到数据失败; 如果prepare时允许写,如果按迁移开始前的路由到proxy1,可能proxy1的对应存储已经迁走到存储2,写入失败或成功,但将来存储2丢失了这个写入,commit完成后,在存储2找实际写在存储1的数据失败;如果按迁移后路由到proxy2,可能相关的数据结构还不存在,导致写入失败,或者迁移后将写入给覆盖掉。2022-07-24
- 思绪走了灬光✨Eureka能做配置中心吗?不是只有注册中心的能力吗?2022-04-08