关于CAP理论和实践的一下看法

在项目中实现过三个微服务之间的相互请求,使用的都是HTTP请求,当时都没注意到CAP这个东西,后来又遇到了三个微服务之间的请求使用了消息队列和HTTP请求,发现了数据不一致性,又把三个微服务改成了HTTP请求,对CAP有了一些看法。
理论:
首先CAP得含义是什么?
 ● 一致性(C):在分布式环境中,一致性是指在多个副本之间能够保持一致的特性。保证系统在一致性的状态下经过更新后仍然处于一致性的状态。

● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。服务处于可以的状态,对用户的每一个操作总是能够在有限的时间内内返回结果。

● 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
实践:
根据以上理论发现当P发生组合只有AP和CP这两个方式,使用了HTTP请求实际上就是在使用CP组合,而使用消息队列就是使用AP组合,当微服务之间的网络出现了问题后,使用HTTP交互,只能把整个消息失败返给用户,但实际上自己的服务是没有问题的,整个流程却是失败的,这样做达到了微服务之间数据的一致性,但是损失了可用性,而在微服务之间使用消息队列可以保证消息的传递,但是没法达到数据的一致性,消息队列需要使用者主动地去拉取,如果消息不能被及时的消费,那么微服务之间的数据不能达到一致性,这些问题在项目中都出现了,在选取方案时必须对使用的场景经行分析,然后选取合适的方案,达到最优解,同时也通过实践证明了C和A是不可共存性的。

前提微服务之间交互:
对于实时性要求高的的数据,应该采取CP方案来解决,反之采用AP方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值