任何一个分布式数据库产品都无法达到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/
网友评论