首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
宝塔
V2EX  ›  问与答

有没有学术大佬, 判断一下我对 CAP 的应用是不是对的

  •  1
     
  •   petelin · 39 天前 · 484 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/

    按照论文里的证明的定义, CAP 描述的是一个非常简陋且特殊的分布式系统.

    那么

    • 单机数据库可以用 CAP 来分析吗? 比如单机 MySQL 可以说是 CA 的吗?
    • 在一个读写主库, 只读从库的 MySQL 集群里, 如果发生了分区那么
      • 依然允许读写从库 -> 肯定不一致, 但是因为从库没办法给出正确的信息(只有老数据)所以他也是"不可用的"
      • 不允许写数据了 -> 那么他是一致的, 但是不可用. (这种没任何价值)

    求教我这种理解是对的吗?

    5 回复  |  直到 2019-10-09 18:30:58 +08:00
        1
    misaka19000   39 天前   ♥ 1
    依然允许读写从库 -> 肯定不一致, 但是因为从库没办法给出正确的信息(只有老数据)所以他也是"不可用的"

    这里可用啊,只是不一致,符合 AP
        2
    petelin   39 天前
    @misaka19000 从我读文章到的意思,
    > A(可用) 指的是客户端能够访问的节点一定要给出正确的结果

    访问从库给出的是旧的数据所以不是论文里描述的 A.
    我能理解你说的可用是整个系统没挂, 但是这个和论文里说的不是一回事
        3
    petelin   39 天前
    typo
    依然允许读写从库 改为 依然允许读写主库
        4
    misaka19000   39 天前
    > A(可用) 指的是客户端能够访问的节点一定要给出正确的结果

    这个是在论文的哪部分表达的呢?
        5
    petelin   39 天前
    @misaka19000 定义是
    every request received by a non-failing node in the system must result in a response

    这里说的就不够清楚然后你看他证明的时候
    如果有一个 CAP 都满足的系统, 那么我们先写 V1 到 G1,因为 A 所以成功了, 我们在访问 G2, G2 按照一致性应该给出 v1 这个值, 然而他给出来的是 V0 所以自相矛盾.

    ----------
    啊 我发现自己犯的错误了, 给出来 V0 并不适合不满足 A, 而是因为在一致性的前提他给出来 V0 是错误的.

    多谢多谢
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1292 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    ♥ Do have faith in what you're doing.