V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lsk569937453
V2EX  ›  程序员

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

  •  
  •   lsk569937453 · 15 天前 · 1410 次点击

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

    CP

    Zookeeper

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

    Etcd

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

    Redis

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

    AP

    Euraka

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

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

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

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

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

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

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

    附上去年在本站发的相关帖子: https://v2ex.com/t/974680
    fkdtz
        7
    fkdtz  
       15 天前
    Redis 不是 AP 的么
    wkong
        8
    wkong  
       15 天前   ❤️ 1
    难度还好,就是脱层皮。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2588 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:44 · PVG 15:44 · LAX 00:44 · JFK 03:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.