• blentle
    2022-01-27
    cap从每一个定义来说并不是说牺牲了第三者吧,而是尽量保证第三者

    作者回复: 是的,只是经常说成 3 选 2,让大家的感觉是要放弃 1 个

    
    24
  • 努力努力再努力
    2022-01-26
    1 一致性 (C)一致性级别 是 从高到低 1.1 强一致性 1.2 单调一致性 1.3 会话一致性 1.4 序列一致性 1.5 最终一致性 2 可用性 (A) 关键字: 100%可用 有限时间内 返回结果 3 分区容错性 (P) 3.1 网络分区 3.2 网络丢包导致的网络不通 (包含节点宕机) 对可用性的重新思考与理解 基于Raft 算法实现的etcd 属于CP模型,但是也尽量保持了可用性 对一致性的重新思考与理解 就算选择了 AP,哪怕出现网络分区 也要尽量保证高的 一致性级别 
结论: 开发一个分布式系统的时候 系统正常情况 CAP 都要,等到 出现网络分区的时候 再选择放弃 部分A 或者C 尽可能互相满足 自己的思考: 1 上面的每一点 如果是我 有什么方案解决呢?
 思考题: 大部分时间都是 无问题的,可以保证CAP 共存 只是需要 添加几个方法 1. 探知 分区发生问题 2. 进入显式的分区模式以限制某些操作 3 启动恢复过程以 恢复数据一致性并补偿分区期间发生的错误 猜测: 可以 先存到本地 ,等分区恢复 ,带着 offset 进行比较 恢复数据

    作者回复: 非常棒👍🏻

    
    12
  • GAC·DU
    2022-01-27
    分布式场景下,站在用户角度思考CAP理论,用户发送一条请求,在正确的时间响应正确的结果,可以被视为同时满足三者的系统设计。站在系统设计者的角度思考CAP理论,同时满足两者而第三者则是努力的方向,先让系统能够用起来,然后迭代优化。这也满足现在常说的“小步子快跑”的说法。

    作者回复: 非常棒!

    
    11
  • leitiannet
    2022-03-07
    Redis有主从架构,哨兵架构和集群架构,分别属于什么模型(AP还是CP)?

    作者回复: 主从架构,哨兵架构和集群架构是高可用和水平扩展的方案,它们都可以做成 AP 或 CP 的模型。 不过一般对于 redis 缓存的场景来说,可用性是高于一致性,所以,redis的主从架构,哨兵架构和集群架构都是 AP 模型。

    
    8
  • 独一无二
    2022-03-18
    文中有一句很有概括性的句子:"在满足分区容错的前提下,没有算法能同时满足数据一致性和服务可用性,只能在数据一致性和服务可用性之间二选一"。也就是未发生p,则ca都可以满足,发生p后,才会选择一个。并不是软件设计之初就必需要舍弃一个。

    作者回复: 是的👍

    
    5
  • 不吃辣👾
    2022-04-06
    老师,我发现人工可以弥补CAP中的任何一项,达到接近100%水平。😅

    作者回复: 哈哈,问题发生后,人工可以修复,但是不能保证不发生。

    
    2
  • Hello,Tomrrow
    2022-04-01
    CAP理论只是给我们提供了分布式系统设计的边界,这是好事,避免追求一些极致的尝试。系统设计不像是盖房子,主体结构确定后就不能改变了。系统设计要有灵活性,在不同的业务场景下,微调系统,以便更好的服务业务。

    作者回复: 赞👍

    
    2
  • Summer 空城
    2022-03-03
    作者您好,关于p,我听到最多的是数据在不同集群中复制。如果一个集群的话,是不是不存在p的问题,即使一个集群中有很多的服务而且这些服务可能会宕机

    作者回复: 不是的,只要是分布式系统,就存在 P 的问题,只不过对运行在多个数据中心的分布式系统,由于数据中心的网络出现问题的概率更大。

    
    2
  • 葡萄糖sugar
    2022-01-27
    作者你好,cp 我能理解为系统在达到强一致性以及网络分区容忍性,与此同时我们还能够尽力达到可用性,并且依旧保持强一致性吗?

    作者回复: 以 CAP 的定义来说,A 是指 100% 的可用性,所以分布式系统中,CA 不可以兼得,不过可用性的范围在0%-100%之间,99.9% 或者更高的可用性都有可能实现的,比如专栏中提到的 spanner。

    共 3 条评论
    2
  • HappyHasson
    2022-02-13
    既然说CAP中的A是100%可用,100%是一个理想值,那说明A是一个不可能达到的方向,AP这个组合不应该存在,理论上只存在CP?

    作者回复: 不关心 C 的时候,AP 是存在的。 P 是网络分区容忍,比如一个系统的数据会在 a、b 两个节点复制,假设 a 和 b 之前的网络出现故障,不同通信了,那么 a 和 b 之前的数据是不能保证一致的,就是 C 不能满足了,如果我们是 AP 的系统,不关心 a、b 之间数据的一致性的话,a、b 是可以同时对外提供服务的,这个时候 A 就是 100% 的

    共 4 条评论
    1