概念
场景
CP
牺牲可用性,保证一致性和分区容错性。
例②,数据库主从架构,并采用同步复制策略。保证一致性和分区容错性,同步复制会在一定程度上影响可用性。
AP
牺牲一致性,保证可用性和分区容错性。
例②,数据库主从架构,并采用异步复制策略。保证可用性和分区容错性,但是异步复制会导致短时间内的主从数据不一致。这种情况可以考虑强制读主库或延迟读从库。
AC
牺牲分区容错性,保证可用性和一致性。
例①,订单系统和库存系统不再拆分,合并成单体应用,所有操作均在同一事务下,仅可以保证可用性和一致性。且这样设计不再是分布式系统,不具备分区容错性。
例②,数据库单体架构,保证可用性和一致性,但数据库成为单点,不具备分区容错性。
总结
| 一致性 | 可用性 | 分区容错性 | 场景 | |
|---|---|---|---|---|
| CP | √ | × | √ | 要求数据的强一致性和容灾容错能力 通常是银行、金融类项目 |
| AP | × | √ | √ | 大部分的互联网应用会采用AP设计原则 允许短时间内的数据不一致,但是不能牺牲可用性 |
| AC | √ | √ | × | 在生产环境中,分区容错性非常重要 很少采用AC设计原则 |
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209392.html原文链接:https://javaforall.net
