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

38 天前
 lsk569937453

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

CP

Zookeeper

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

Etcd

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

Redis

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

AP

Euraka

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

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

1586 次点击
所在节点    程序员
8 条回复
keakon
38 天前
你不都发现盲点了么,没人搞 CA
chenzw2
38 天前
@keakon #1 关系型数据库就是 CA 模式
coyove
38 天前
因为现在全球化部署,业务对解决 P 问题更感兴趣
lxdlam
38 天前
Zookeeper 不是 Paxos ,而是自己发明的协议 ZAB ,跟 Paxos 有一定差距;实现了 Paxos 的系统有很多,比如 Google 的 Chubby 和 Scylla DB 。

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

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

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

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

附上去年在本站发的相关帖子: https://v2ex.com/t/974680
fkdtz
38 天前
Redis 不是 AP 的么
wkong
38 天前
难度还好,就是脱层皮。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1041500

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX