关于黑马点评的一些疑问
1.为什么要用redis存储点赞,大量点赞如何优化
2.异步下单了,写入数据库失败了怎么办,一致性如何保证(看好像没有使用事务了,但有ACK以及处理pending-list)
3.判断完了一人一单和超卖,下单更新数据库时再次查询库存是否充足以及乐观锁和分布式锁是不是没有必要了
4.项目中遇到的困难(想说滚动分页查询但是源码还是有BUG的怕给自己挖坑)
5.最严重的一个问题,为什么要用mq,用线程池不是一样吗,不是分布式,生产方和消费方在自己的服务上进行消费吗?
2.异步下单了,写入数据库失败了怎么办,一致性如何保证(看好像没有使用事务了,但有ACK以及处理pending-list)
3.判断完了一人一单和超卖,下单更新数据库时再次查询库存是否充足以及乐观锁和分布式锁是不是没有必要了
4.项目中遇到的困难(想说滚动分页查询但是源码还是有BUG的怕给自己挖坑)
5.最严重的一个问题,为什么要用mq,用线程池不是一样吗,不是分布式,生产方和消费方在自己的服务上进行消费吗?
全部评论

个人猜想:
1、bitmap 设置用户id 偏移位为1
2、db 减库存和创建订单肯定是在事务里。但 cache 和 db 的一致用消息确认+重试+订单号唯一幂等保证。不过其实也可以不处理,对应的场景就是少卖,给用户提示没抢到就行,而且商家在提示曝光率的同时减少了优惠券的损失。
3、兜底,万一 mq 消费完没来得及回复 ack 挂掉了,下次还消费就有重复消费问题
我也被问过,1.哈希分片,2.就是事务,3.没明白你的意思 4.我被问到答的就是这个分布式锁这一块 其他的感觉没啥意思 我还被问到视频记录哪里 哪里他会问你有没有更好的方案,但是他没说
mq是有必要的,如果使用线程池的话,那不是每来一个message都要拿一个新的线程来处理?用了mq就可以让一个线程一直等待处理获取到的message
点评项目很多方案都是假设分布式、高并发场景的
5 我的理解是,尽管我的项目不是分布式微服务架构,但是为了避免单点故障,项目设计为多服务端。
削峰填谷:秒杀服务可能产生大量的异步处理逻辑,当任务数量过大,线程池的内存队列无法承载大规模任务,还可能导致系统崩溃(有界队列装不下,无界队列爆内存),而引入 mq 中间件则不会有这个问题,即使生产者和消费者在同一台服务器实例上,也可通过参数控制消费速率防止服务突然崩溃。
任务丢失:一旦某一台服务端挂掉,其中线程池队列上还未执行的任务会完全丢失,引入 mq 可以保证数据可靠性,这也符合多服务端设计的逻辑,即避免单点故障。
不知道这样理解对不对。
佬,有没有搞明白问题3啊,那个分布式锁意义何在?
第一个问题redis的set可以确保一个内容的点赞收藏只会进行一次
分页查询不用MyBatis一样做😂
乐观锁解决超卖,分布式锁实现一人一单,查询库存充足是兜底操作吧🤔
接好运
mark
m
m
m
m
3我觉得确实没必要了
相关推荐
查看12道真题和解析 点赞 评论 收藏
分享
03-11 11:20
青海大学 运维工程师
Kurumis:整个简历看下来就发现你其实对测试理解还很浅,很多地方都是硬凑上去,项目也是学生课设级别,没什么含金量
首先是学习建议:
1.系统性了解一个真实工程的框架,有利于你后续提升项目含金量,理解测试的逻辑
2.真正去学一下自动化测试和性能测试
再就是简历本身包装问题:
1.投测试的话就不要说自己独立开发自己测,专注描述自己怎么做测试的
2.项目经历太像套话,很容易让人怀疑你到底真的做过没有,比如并发是具体做了多少并发?自动化脚本是怎么跑兼容性和性能测试的?测试用例写了多少条?
3.教务管理系统一听就是数据库课设作业,含金量不高,不过你可以在原项目基础上重构扩展,比如添加docker容器部署MySQL和Redis,添加消息队列和锁机制防止系统扛不住高并发访问,让它真的像个实际工程
4.技能里性能专项测试没有把握不要乱写,就写你会什么工具就行了,做专项性能测试的都是行业大佬,你要写的话一定要有对应的专项性能测试项目
5.可以在简历里附上项目链接,压缩简历内容的同时提升简历真实性 点赞 评论 收藏
分享