今天阅读的文章是《架构设计之CAP定理》,原文链接:https://mp.weixin.qq.com/s/BtHPlZOvy8HNK1TuOrDxLA。
关于CAP定理,之前在数据库课程的学习中曾听老师讲过CAP定理的一些知识。在这篇文章中,作者主要讲的是CAP在分布式结构中的
应用。现在稍微有点规模的互联网项目就都采用分布式结构了,一个系统可能有多个节点组成,每个节点都可能需要维护一份数据。关于如何维护
各个节点之间的状态,如何保障各个节点之间的数据的同步问题就是所关注的重点问题了。CAP定理是分布式系统中最基础的原则,对于如何设计系统
架构至关重要。
什么是CAP定理?
CAP定理又名布鲁尔定理,他提出对于一个分布式系统来说,不可能同时满足以下三点:Consisteny(一致性),Availablity(可用性)、Partition tolerance(分区容错性)
,也就是说任何分布式系统只能同时满足这三项中的两项。接下来再说下这三个属性的含义。
图源自:https://mp.weixin.qq.com/s/BtHPlZOvy8HNK1TuOrDxLA
1.一致性:一致性的要求是指,对于任何客户端来说,每次的读操作,都能获得最新的数据。也就是说,当有客户端向A节点写入了新数据后,其他客户端从B节点中进
行读操作所获得的数据必须也是最新的,是与A节点数据保持一致的。
2.可用性:可用性的要求是指,每个请求都能在合理的时间内获得符合预期的响应,但不能保证获取的结果是最新的数据。从上图中看,客户端只要向A节点或B节点发起请求后,
只要这两个点收到了请求,就必须响应给客户端,但不能保证内容的正确性。
3.分区容错性:分区容错性指的是,当节点之间的网络出现问题时,系统依然能够正常提供服务。
CAP在分布式架构中的用法
因为不能同时满足一致性、可用性、分区容错性这三个属性,所以有CA、CP、AP三种组合方式。在分布式系统中,网络是不可能保证百分百可靠的,所以P(分区容错性)是一个
必须的选项。
所以有两种可供我们选择的方案。1、CP架构,即放弃了可用性 2、AP架构,即放弃了一致性
CAP使用的注意事项
对于开发者而言,当我们构建服务的时候,就需要根据业务特性作出权衡考虑,哪些点是当前系统可以取舍的,哪些应该是重点保证的。即使在同一个系统中,不同模块的数据可
能应用的CAP架构都是不同的。我们按照CAP定理,三个中只能取二,但并不代表我们只要保证其中的两点,而完全忽略第三点。我们应该为不能保障的第三点也做一些防备措施或
冗余方案,来使系统更加的健全。