如何理解CAP理论?
2 个回答
慢慢理解世界,慢慢更新自己。java蚂蚁### Consistency 一致性 一致性指“all nodes see the same data at the same time”,即所有节点在同一时间的数据完全一致。 一致性是因为多个数据拷贝下并发读写才有的问题,因此理解时一定要注意结合考虑多个数据拷贝下并发读写的场景。 对于一致性,可以分为从客户端和服务端两个不同的视角。 **客户端** 从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。 **服务端** 从服务端来看,则是更新如何分布到整个系统,以保证数据最终一致。 对于一致性,可以分为强/弱/最终一致性三类 从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。 **强一致性** 对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。 **弱一致性** 如果能容忍后续的部分或者全部访问不到,则是弱一致性。 **最终一致性** 如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。 ### Availability 可用性 可用性指“Reads and writes always succeed”,即服务在正常响应时间内一直可用。 好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。可用性通常情况下可用性和分布式数据冗余,负载均衡等有着很大的关联。 ### Partition Tolerance分区容错性 分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。编辑于 2022-03-11 18:45 •IP属地 江苏举报评论收藏
希望有人告诉你开心比对错更重要。梅拾璎分布式最大的难点在于各个节点的状态怎么同步。 CAP理论 C是一致性,Consistency,就是各个节点保存的数据都是最新的。 A是Availability, 可用性,每次请求都可以获得响应,但是没法保证是最新的响应。 P是分区容错性(Partition tolerance),就是每个节点可能都存在于不同的子网络,也就是不同的分区,不同分区之间的通信总是有可能发生故障的,或者总是有可能存在一些节点挂了的情况。 可以认为P总是成立的,C和A是无法同时做到。所以一般对于数据一致性要求特别高的业务,例如支付,交易相关的业务,就是会优先保证一致性C和分区容错性P,就是保证数据一致性,例如让所有子节点都收到更新后才算提交成功,就像MySQL主从同步中的全同步模式一样。普通的业务是优先保证可用性A和分区容错性P,比如在MySQL主从同步时,默认就是异步的方式,我们执行一条更新SQL,只需要主节点更新成功就行就对事务进行提交,不需要等待从节点更新数据成功,主节点会异步把SQL发送给从节点。发布于 2022-02-15 01:00 •IP属地 重庆举报评论收藏
公众号进入网站体验更佳

