分布式数据库与CAP定理

什么是CAP

CAP

任何一个分布式数据库产品都无法达到C.A.P特点俱全,这是目前的结论。但是这个不代表这个只能三取其二,二是在3者中间找平衡点。

那么首先介绍一下,CAP是什么

  • Consistency 一致性
    All clients see the same view of data, even right after update or delete
    即使在更新或删除后,所有客户端都会看到相同的数据视图

  • Availability 可用性
    All clients can find a replica of data, even in case of partial node failures
    即使出现部分节点故障,所有客户端都可以找到数据副本

  • Partitioning 容错性
    The system continues to work as expected, even in presence of partial network failure
    即使存在部分网络故障,系统也会按预期继续工作

组合

CP (一致性+容错性) —— 首先这个看起来很奇怪,其实是CP指的是仅在网络分区(存在互不可达的节点)的情况下牺牲可用性。

CA (一致性+可用性) —— 一般指没有网络分区的的分布式服务,单节点虽然没有网络分区,但是不是分布式范畴内的。

AP (可用性+容错性) —— 这种是指存在网络分区的分布式节点,可以做到可用性,但做不到实时一致性。

常用数据库的划分

从网上盗来一张图,是主流数据库的 CAP倾向

针对数据的特性,选择相应的数据库,非常重要。

注意事项

对于一个分布式系统来说,CAP三者中,Partitioning是基本要求,只能通过基础设施提升,无法通过牺牲Consistency和Availability 某个,或者同时牺牲两个来提高。
基本要求满足了,Consistency和Availability直接可以根据具体要求权衡实现。

喜欢请点个赞

转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3

如有错误,请务必不吝指正。谢谢

我的博客:https://xzing.github.io/