java cap_java分布式架构设计之CAP定理

e574a700c8e1488ec44e5161f70fecab.png

随着业务系统的不断壮大,单点的服务已经不能够满足庞大的业务数据,分布式服务也就应际而生。

一个系统可能有多个节点组成,每个节点都可能需要维护一份数据。那么如何维护各个节点之间的状态,如何保障各个节点之间数据的同步问题就是大家急需关注的事情了。

faa292518e63a65fd7bf2467cc4c81c6.png

CAP定理是分布式系统中最基础的原则。所以理解和掌握了CAP,对系统架构的设计至关重要。

CAP

Consisteny(一致性)

Availability(可用性)

Partition tolerance(分区容错性)

95cdd7e4ed2ef09d57cc31ce1cab86c4.png

CAP定理也称为布鲁尔定理,它提出对于一个分布式系统而言,任何分布式系统只能同时满足这三项中的两项。

我们先分别看一下 Consisteny(一致性)、Availability(可用性)、Partition tolerance(分区容错性)的含义。

Consisteny

对于任何客户端来说,每次的读操作,都能获得最新的数据。

也就是说当某个节点写入一条数据,这个时候其他节点能读取到,保持数据一致性。

Availability

可用性的要求是指,每个请求都能在合理的时间内获得符合预期的响应(不保证获取的结果是最新的数据)

简单理解就是客户端每次向任意节点发起请求都能得到响应,但不要求保证数据的时效性

Partition tolerance

分区容错性指:当节点之间的网络出现问题之后,系统依然能正常提供服务。

CAP组合应用

我们知道有 CA、CP、AP 三种组合方式,但是在分布式系统的结构下,网络是不可能做到100%可靠的。既然网络不能保证绝对可靠,那 P(分区容错性)就是一个必选项了。

原因如下:

如果选择 CA组合,放弃 P,当发生节点间网络故障时,为了保证 C(一致性),那么就必须将系统锁住,不允许任何写入操作,否者就会出现节点之间数据不一致了,但是锁住了系统,就意味着当有写请求进来的时候,系统是不可用的,这一点又违背了 A(可用性)原则。

因此分布式系统理论上是不可能有CA组合的,所以我们只能选择 CP 和 AP组合架构。

CAP 注意事项

9eac66e4f5528e112080026a5c7f21e3.png

当我们构建服务的时候,就需要根据业务特性作出权衡考虑,哪些点是当前系统可以取舍的,哪些是应该重点保障的。

比如:

用户模块的数据(账密、钱包余额等)对一致性的要求很高,就可以采用CP架构。

而对于一些商品信息方面的数据对一致性要求没那么高,对可用性要求更高一些,那么这个模块的数据就可以采用AP架构。

总结

喜欢文章的小伙伴麻烦点赞、关注作者,欢迎留言交流!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值