库存分段提高秒杀并发度

做的黑马点评的项目,面试时被问到在使用分布式锁解决超卖的情况下如何提高并发?回答将库存分段,比如100个库存,分别存在5redis节点上,每个节点上存储20个。但面试官问如果有一个节点上库存卖光,但总库存还有,怎么保证能卖就卖?当时回答的是提供一个协调者,监控每个redis节点上的剩余库存量,然后通过协调者进行转发。但是面试官对这个答案不太满意,说协调者仍然是串行的并且秒杀是很快的,如果通过一次协调者转发的话会有延迟并且脏读的问题。请问各位大佬这个分段库存在实际的应用场景中到底该怎么设计?#秒杀项目##蚂蚁##面经##redis##java##阿里#
全部评论
实际场景就是不会用分段库存。简单点就redis硬抗7、8w秒杀的请求,超过容量的就限流掉,给用户一个兜底。但是redis容易丢数据(实际上也没那么容易丢,5个9),所以用mysql来抗写,redis抗读,这时候会去魔改mysql内核,让mysql能够支持5w的写请求
2 回复 分享
发布于 2024-05-23 08:12 浙江
草了,刚面试那个面试官也说的分段,给我说晕了
点赞 回复 分享
发布于 04-22 16:54 天津
m
点赞 回复 分享
发布于 2024-06-09 16:15 贵州
m
点赞 回复 分享
发布于 2024-05-26 14:46 辽宁
m
点赞 回复 分享
发布于 2024-05-21 11:23 安徽
m
点赞 回复 分享
发布于 2024-05-20 01:32 江苏
m
点赞 回复 分享
发布于 2024-05-19 21:55 江苏
m
点赞 回复 分享
发布于 2024-05-18 09:14 湖南
m
点赞 回复 分享
发布于 2024-05-17 00:50 湖北
点评是真火呀
点赞 回复 分享
发布于 2024-05-13 19:48 辽宁
m
点赞 回复 分享
发布于 2024-05-13 16:15 江苏
m
点赞 回复 分享
发布于 2024-05-09 00:28 辽宁
m
点赞 回复 分享
发布于 2024-05-08 10:47 美国
m
点赞 回复 分享
发布于 2024-05-05 18:55 四川
m
点赞 回复 分享
发布于 2024-05-03 16:11 湖北
m
点赞 回复 分享
发布于 2024-04-28 01:56 辽宁
m
点赞 回复 分享
发布于 2024-04-26 22:18 安徽
m
点赞 回复 分享
发布于 2024-04-23 14:42 上海

相关推荐

05-26 21:15
已编辑
火炉中学 Java
问:ArrayList底层答:基于数组实现,查询时间复杂度 0(1),插入O(n),有扩容机制,扩容到原长度 1.5 倍,扩容先创建新数组然后移动转移数据。问:hashCode 和equals 区别答:hashCode是对象唯一哈希码,equals是通过比较对象成员变量值是否相等。(其实hashCode可能因为哈希冲突不唯一,Object的equals是比较地址,只是大部分类会重写为比较内容,==是比较地址)问:StringBuilder和 StringBuffer 区别答:在字符串拼接上性能有差异(其实应该答线程安全,Buffer是线程安全的所以性能上会有额外开销)问:如何保证并发安全答:简单变量可用 CAS或原子类保证数据一致性,复杂业务通过加锁保证线程安全问:ArrayList线程安全吗答:不安全,应该使用 ConcurrentHashMap 等线程安全集合类,底层用 AQS 实现问:Mysql事务隔离级别和相应的问题答:读未提交、读已提交(RC)、可重复读(RR)、串行化,默认可重复读,通过加间隙锁避免幻读问:索引底层答:基于B+树实现,双向链表维护的多叉查找树,前后指针方便范围查询,节点存主键实现回表查询问:什么情况导致索引失效答:不符合最左前缀原则,like、!=、isnull 等等。(其实还有函数与运算操作也会导致索引失效)问:Redis 分布式锁底层答:忘记了(其实是setnx,真忘了)问:JVM内存结构答:程序计数器、方法区、常量池、堆和栈问:垃圾回收算法答:标记清除法(会产生内存碎片),复制法(需多一倍空闲空间,无内存碎片)。问:讲讲AOP答:面向切面编程,用来增强方法,通过找到切入点,选择通知类型增强方法,通过动态代理,调用动态代理的方法问:Spring Bean 生命周期答:不会(没背Spring八股)问:超卖问题答:乐观锁解决,原理类似 CAS,先检查优惠券数量是否与原数量一致,再进行减一操作,但高并发下可能成功率会很低。(其实优化了不需要一致,只要剩余数大于0都会扣库存)问:消息队列推送消息如何保证不重复答:生产者去重,发送消息前筛掉发送过的消息(其实RocketMQ自身具备消息去重功能,通过生产者组内的唯一标识和消息的全局唯一标识,在 Broker 端对消息进行去重处理)最后经典问我27怎么就找实习学校同意吗,然后问我福州的为什么选择投珠海,然后就跟我说结束了让我等通知估计是挂了,答的太烂了,没岗位介绍也没反问机会,还跟我强调3天没回复就是落选了准备太不充分了,一定要把自己简历吃透,被自己写的东西问倒可太丢脸了————————————————二编后续经理二面,讲了公司大致业务和实习生安排。公司感觉大概是面向海外的外包业务,招实习生进来一般不会接触公司业务,是几个人的实习生小团队跟着ld研究课题进行技术迭代,后面有个业务是类似社区的可能会让我接触,ld说跟我的黑马点评有点像,想把我往那方面培养?原本我这么早就投暑期日常实习是想着熟悉面试流程,面着玩,结果OC了,我想着没法立刻过去,想拒掉的,结果经理很包容,跟我说可以期末考后再去。那我后续可能还是接着面,拿到offer我就摊牌说暑假才能去,最后选一个最合适的吧,后续应该会开个帖子来问下大家意见一起选一下
xnxnccccc:你是我今天在牛客见过最美的女孩
查看17道真题和解析
点赞 评论 收藏
分享
05-31 10:19
已编辑
门头沟学院 Java
bg:双非一本,非理工类院校,学习java已经半年了,目前大二,期末考试已经结束。主要是跟着黑家和尚家两家课程联合学习的,mysql、redis、juc、jvm都学完了,算法也在正常刷,LC200道题,hot100算是一瓶子不满半瓶子晃荡水平,八股一直在进行着,感觉还可以。按部就班写了苍穹外卖和黑马点评。目标:想要快点找实习走出校园,且已经坚定选择走java这条路场景1:大二这年在研究所待着,参加了很多软件设计相关的大赛,但都是省三,而另一个同届小组都是国奖,老师就说“你不拿奖,你简历上写什么。你学这java没用,就是个0”。个人想法:这些软件比赛都是比ppt、比idea,我走的是开发的路,道不同啊,我不学java我还有其他选择吗?双非本还有其他选择吗?我请问呢老师??问题1:这些国奖真的很重要吗?面试会看这些吗?场景2:期末提前考是因为后面有一个月的实训,我们软工的是在机房跟企业的工程师学习vue+springboot,结课是开发一个全栈小项目。但是研究所老师给了我们更多选择,可以让我们去企业(小公司,一个是.net开发,另一个比较杂)。我的想法:就按原本的机房实训,我签个到直接回研究所沉淀java,写项目(老罗的easypan,我准备重构这写,想尽力写到符合企业级)。但老师说“别学习了,你学的都没用,去企业看看你就会发现你学的都是0”。问题2:难道企业的开发不用springboot么?还是说企业有很nb、很特别的什么是javaer不需要学习就可以胜任的开发工作吗?大家建议我去企业还是沉淀?去这种小企业还是十几个学生一起去实训的真的会有很大收获吗?真的有些焦虑了,这条路对于双非来说本就不容易,反对、否认的声音常常在耳边回荡。但我不会放弃,因为我个人觉着我没有其他选择了,一学期逃课率95%的我真的很想在java这条路上走下去,我深知跟着学校学(PS:这次期末考试javaWeb考的是JSP!!!)不会有任何结果,按自己的想法走java这条路或许有结果,比起相信老师的话我更信任自己。但念在他是老师,平时对我也挺好的,我也确实能在他身上学到一些东西,我事事都不反驳,有些认可的话我会去思考,但一些否定的话真的很让人怀疑自己,我真的不应该这样吗?当我问“那我应该学什么?我应该怎么做的时候?”他就说“这得你自己多看看,多想想,别把路走窄了。”.....老师很早就跟我们讲要定目标,我定了,但总是被否定....我以后还是会在研究所学习,免不了老师接着否定。我应该如何自处呢?各位佬怎么看?大家有过这样的经历吗?
流浪的神仙:学校学的跟企业做的差距还是蛮大的,想本科就业的话自己去找实习吧,最好是千人以上的,实在不行第一段100人以上也行,小作坊就别去了
点赞 评论 收藏
分享
评论
12
89
分享

创作者周榜

更多
牛客网
牛客企业服务