谈谈CAP

分布式领域的CAP理论:
- Consistency(一致性),数据一致更新,所有数据变动都是同步的
- Availability(可用性),意味着服务是可用的,有一个属性:延迟
- Partition tolerance(分区容错性)可靠性。除了整个网络的故障外,其他的故障(集)都不能导致整个系统无法正确响应,单结点的partition就等同于服务器crash.即通过多结点部署提高分区容错性.

定理:任何分布式系统只可同时满足两点,没法三者兼顾。

要保证一致性和可用性,那么就会降低可靠性,即系统单点问题;
要保证一致性和可靠性,即保证多结点的数据一致更新,在数据同步的过程中,系统的可用性就会降低;
要保证可用性和可靠性,就需要降低系统中多结点数据的高一致性,即soft state(软状态):状态可以有一段时间不同步。接受事情会变得“最终一致”。

CAP定理在应用系统规模化时最有效。在低压力的情况下,小的延迟(以便数据库达到一致的状态)还不足以对整体的性能或用户体验造成影响

关系数据库的ACID模型拥有高一致性+可用性,但很难进行分区

跨数据库事务:2PC(two-phase commit),2PC is the anti-scalablility pattern(是反可伸缩模式的),JavaEE中的JTA事务可以支持2PC。因为2PC是反模式,尽量不要使用2PC,使用BASE来回避

BASE:
- Basically Available,基本可用,支持分区失败(eg,sharding)
- Soft state,软状态,状态可以有一段时间不同步。ACID是一种hard state,讲究强一致性
- Eventually consistent,最终一致,最终数据一致就可以了,而不是时时高一致
牺牲高一致性,获得可用性和可靠性
BASE,化学中的含义是碱,而ACID化学中的含义是酸。即BASE是ACID的反面。但如果认为任何架构应用完全基于一种(BASE)或完全基于另一种(ACID),就大错特错。

PS:任何系统一旦规模上来,你的关注点就会转向诸如操作维护,监控,安全,自动化发布等

参考资源:
1.佳文分享:CAP定理,http://blog.csdn.net/cutesource/article/details/5621725
2.CAP原理和BASE思想,http://www.jdon.com/37625

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值