欢迎各位一起讨论,目前正在整理面试问题,我会汇总到这里
https://github.com/shubiaodian/javaerdiscussion
数据表的大概结构
购物详情id | 购物sku | ... | 评论状态 | 购物时间 | 评论 |
---|---|---|---|---|---|
1 | 毛衣(123) | ... | 已评论(1) | 2023-05-21 | 毛衣真好看 |
2 | 故事书(234) | ... | 未评论(0) | 2023-05-26 | null |
- 具体方案:
定时任务扫描,扫描出 【评论状态】==0 &&(【 购物时间】+5天)<当前时间的数据
然后将【评论状态】设置为1,并且添加评论
存在的问题:
表中数据量很大的时候,定时去扫表的效率很低。
2.延迟消息队列
- 具体方案:
(1)购物结束后,将【购物详情id】作为消息,扔到延迟消息队列里面,延迟时间为5天
(2)购物结束后,将【购物详情id】和【 购物时间】作为消息,扔到延迟消息队列里面,延迟时间为1小时,消费者检查消息 【评论状态】==0 &&(【 购物时间】+5天)<当前时间,如果满足条件继续放到延迟消息队列中 - 存在的问题:
(1)延迟消息队列可能会积压
(2)能够缓解积压的问题,但是大部分用户购物后都不会去评论,消息积压的问题仍然得不到解决
3.针对评论查询接口优化
-
数据表结构
购物详情id 购物sku ... 购物时间 评论时间 评论 1 毛衣(123) ... 2023-05-21 2023-05-21 毛衣真好看 2 故事书(234) ... 2023-05-26 2023-05-31 null -
具体方案:
针对查询接口进行优化,读优化
(1)如果 【评论时间】>当前时间,则表示【已评论】,评论如果为空,则展示默认评论
(2)如果 【评论时间】<=当前时间,则表示【未评论】
写优化
(1)购物结束后,将评论时间设置为 【当前时间】+5天
(2)评论完成以后,将评论时间设置为当前时间 -
存在的问题:
(1)如果在评论完成后需要执行其他动作(例如:通知商户收到好评,或者通知用户该订单已经自动好评),这种方案没办法实现
网友评论