• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lsk569937453
V2EX  ›  程序员

目前来看 CAP 理论中的 CP 和 AP 最容易造的轮子是?

  •  
  •   lsk569937453 · May 17, 2024 · 3272 views
    This topic created in 902 days ago, the information mentioned may be changed or developed.

    CA:如果不要求 P (不允许分区),则 C (强一致性)和 A (可用性)是可以保证的。但放弃 P 的同时也就意味着放弃了系统的扩展性,也就是分布式节点受限,没办法部署子节点,这是违背分布式系统设计的初衷的。因此在这里只讨论实现了 CP 或者 AP 的架构/系统。

    CP

    Zookeeper

    Paxos 协议我从工作的时候就了解,基本上过目就忘非常难理解。想要手撸一个 Paxos 协议太难了。

    Etcd

    Raft 协议初认识的时候简单,源码比 Paxos 也简单点,但是实现起来有点难。

    Redis

    Gossip 协议算法简单,实现起来也容易。

    AP

    Euraka

    理解起来简单,实现起来也简单。

    个人感觉 Euraka 的通信协议最简单,其次是 Gossip ,这里说的是手撸的难度。

    8 replies  •  2024-05-17 13:55:44 +08:00
    keakon
    keakon
    May 17, 2024
    1
    你不都发现盲点了么,没人搞 CA
    chenzw2
    chenzw2
    May 17, 2024
    2
    @keakon #1 关系型数据库就是 CA 模式
    coyove
    coyove
    May 17, 2024
    3
    因为现在全球化部署,业务对解决 P 问题更感兴趣
    lxdlam
    lxdlam
    May 17, 2024❤️1
    4
    Zookeeper 不是 Paxos ,而是自己发明的协议 ZAB ,跟 Paxos 有一定差距;实现了 Paxos 的系统有很多,比如 Google 的 Chubby 和 Scylla DB 。

    同样,根据 DDIA 的说法,现代 CAP 其实逐渐式微,因为现代系统设计里面这三个每一个话题都会有很多需要考虑的问题,不再只是单纯的 3 选 2 了。
    lxdlam
    lxdlam
    May 17, 2024
    5
    @lxdlam 有一定差距 -> 有一定不同
    heqingpan
    heqingpan
    May 17, 2024 via Android❤️1
    6
    亲身实践过,如果不依赖三方库从 0 开始写,一般 AP 会比 CP 简单些。

    不过 CP raft 一般都有库(与业务无关的基础部分),而 AP 没有( AP 一般和业务相关较大,没有通用库)。

    CP 基于库做二次开发与 AP 从 0 开发相比,工作量会差不多。(和具体业务有关)

    我之前在写 r-nacos (用 rust 重新实现 nacos )时,有分别用 CP(基于 raft 库)实现配置中心,用 AP (从 0 开发)实现注册中心。
    它们两块整体工作量上感觉差不多。

    附上去年在本站发的相关帖子: https://v2ex.com/t/974680
    fkdtz
    fkdtz
    May 17, 2024
    7
    Redis 不是 AP 的么
    wkong
    wkong
    May 17, 2024❤️1
    8
    难度还好,就是脱层皮。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2945 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:18 · PVG 19:18 · LAX 03:18 · JFK 06:18
    ♥ Do have faith in what you're doing.