分布式面试题

文章讨论了CAP理论在分布式系统中的应用,对比了Redis和Zookeeper实现分布式锁的优缺点。Redis锁性能高但可能无法保证强一致性,而ZK锁通过半数写入机制和ZAB协议确保一致性但牺牲了部分性能。选择哪种方式取决于实际业务需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CAP

分布式系统中通常要考虑CAP的,一致性,可用性和分区容错性

redis锁与zk锁

redis分布式锁:
优点:性能高,能保证AP,保证其高可用,
缺点:但是不能保证其一致性,原因就是在redis集群+主从的结构中,数据是通过分片存储的,但是这个时候当一个master节点挂了之后,slave节点还未同步到master节点的数据,导致数据丢失,万一丢失的数据刚好是你的锁,那么就有可能造成并发问题,所以不能保证强一致性,这种情况下可以通过redisson的红锁来解决,解决的原理其实就是redis的半数写入机制,但是这样完全降低了redis的性能,所以一般情况下是不采用的,zk其实能保证其一致性的原因就是其半数写入机制加上其leader选举的逻辑实现
zk分布式锁:
优点:能够保证其一致性,每个节点的创建都会同时写入leader和follwer节点,半数以上写入成功才返回,如果leader节点挂了之后选举的流程会优先选举zxid(事务Id)最大的节点,就是选数据最全的,又因为半数写入的机制这样就不会导致丢数据(ZAB协议)
缺点:性能没有redis高
以上已经说明了两种分布式锁实现的方式及其原理,怎么选择以实际业务为准

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值