redis 如果是集群方式呢,那么redis还是单线程模型么?

来源:9-5 队列泄洪原理

lcl_one

2020-03-06

写回答

2回答

龙虾三少

2020-09-10

这种情况下主从没办法保证一致性 所以会出现问题

0
0

yidaimi

2020-03-06

顶一个!我也有相同的问题,只是稍微有点不同。

个人浅见:正常情况下集群方式也不会影响原子性的。

集群方式有两种:sentinel和cluster。

sentiel是一主多从的结构,也就是说永远只有一个主节点负责写,由于只有一个节点负责写,那其实和单机redis其实是一样的。

cluster的话是一个主从切片模式,就是有n个主切片,每个主个切片有m个从切片,但是某个key的集合只能在某个特定的主切片以及它的m个从切片上,而这m+1个切片中m个从切片是只读的,写还是只能在那个唯一的主切片上。所以其实所有请求还是只对一个切片节点进行写操作。

所以正常情况下我理解不论sentinel还是cluster的原子性都是没问题的。

但是我觉得需要担心的是在秒杀活动的时候发生了节点的主从切换。假设有总库存6个,要是甲(买1个)、乙(买2个)、丙(买4个)三个人的请求甲和乙在主节点上执行好了,在执行丙操作的时候发生了主从切换,原先的从节点升级为主节点,并且由于种种原因这个新的主节点还未刷新到原来主节点宕机前最后的状态(也就是甲和乙的扣减动作还未更新到从节点上),此时丙会发现剩下库存还是6个而不是6-1-2=3个,会继续扣减库存,这样会不会出现超卖的现象?老师,请问这种问题如何处理啊?

0
3
慕UI3035061
回复
龙虾三少
那请问 现实中的秒杀架构中公司的redis难道也是单机吗?单机上限不高呀
2020-09-17
共3条回复

聚焦Java性能优化 打造亿级流量秒杀系统(赠秒杀项目)

理解高流量电商网站性能构建思路 用高逼格技术解决性能提升问题

2174 学习 · 1009 问题

查看课程