呜呜呜 被面试官拷打了

昨天面试, 面试官问我怎么保证缓存与数据库的数据一致性 ,我说使用了先更新数据库 ,然后用rabbitmq消息异步发送更新数据到缓存 ,来更新缓存面试官问如果已经写入数据库 ,但是 rabbitmq挂了缓存没有更新怎么办, 我说rabbitmq有ack机制 ,他说 生产者发送消息, mq还没接收到消息就挂掉了怎么办 ?mq并不知道消息的存在, 只能中间键这种场景 ,不能更改其它方案如延迟双删等  ,我说用事务回滚 ,面试官说不能用事务, 我说 mq挂了 ,生产者连接不到mq应该会抛异常, 用try catch来判断 ,然后抛异常之后 ,把数据库的已经写入的数据改为旧值, 并告诉给用户请求失败 。面试官还是不满意😢😢😢 有没有更好的办法   9igANbWppk7SoSHDhYi96zdvyvmUK2UZ.jpg#我的实习求职记录#
全部评论
消息存数据库,mq消费完后删消息或者改消息状态,发送完消息每隔1,2,5,10,20分钟去查消息状态,判断消息是否丢失,然后进行处理
35 回复 分享
发布于 2023-09-19 06:39 浙江
我没有学过mq,今天也被问到这个问题,我说定时更新缓存,面试官说这个方法可以
19 回复 分享
发布于 2023-09-19 20:27 陕西
感觉就是尬问
13 回复 分享
发布于 2023-09-19 16:53 湖南
1.先数据库后缓存,2.先缓存后数据库 3.八股文标答延迟双删 4.实际:前两种+人工校对
10 回复 分享
发布于 2023-09-18 15:27 湖北
一定要用rabbitmq吗? 不是的话就用RocketMQ的事务消息, 通过两阶段提交能搞保证本地事务和消息发送的原子性。即使是二阶段提交失败了,也提供了回查的函数来判断本地事务是否执行完成。
10 回复 分享
发布于 2023-09-20 17:11 陕西
部署多个rabbitmq集群。设置参数使用rabbitmq的可靠消息传输机制(其作用为:消息发送时,消息队列宕机了,消息会回到队列中等待恢复后处理。
7 回复 分享
发布于 2023-09-20 15:09 广东
这就是纯恶心人,mq稳定性都保证不了硬要这种方案来做缓存一致那不就是钻牛角尖
4 回复 分享
发布于 2023-09-19 21:32 上海
服务如果对 mq 的宕机或者消息在网络丢失是有感知(ack)的话,那么在无法判断 mq 的状态的情况下,我感觉只能尝试一些降级措施 1,生产的重试机制。2,死信队列。先持久化了再说,队列集群都崩了,redis 也只能容忍一段时间的数据不一致了
3 回复 分享
发布于 2023-09-19 14:20 湖南
rocketmq是不是提供了一个半事务消息呀?半事务提交和消息回查机制,面试官是不是想知道这个?
3 回复 分享
发布于 2023-09-19 20:48 吉林
直接不使用缓存,用机器嗯堆
3 回复 分享
发布于 2023-09-20 15:21 广东
kafka的leader和follower的机制?
2 回复 分享
发布于 2023-09-19 13:34 浙江
生产者发送消息不是要有ack吗,不然怎么确保写不丢失,而且消费也有ack,确认消费后才会删除消息。
1 回复 分享
发布于 2023-09-19 22:06 辽宁
大佬,可以试试腾讯云智,hc多,不卡学历,而且面试不难,只要基础扎实,多准备准备很容易过———https://www.nowcoder.com/share/jump/26748809023214642
1 回复 分享
发布于 2023-09-20 23:37 湖南
从不毁应届生,小众宝藏it公司,知名品牌全能扫描王;https://www.nowcoder.com/share/jump/7685791311074027918
1 回复 分享
发布于 2023-10-08 18:55 湖北
实际操作中就是定时+集群
1 回复 分享
发布于 2023-11-01 23:15 湖北
binlog
点赞 回复 分享
发布于 2023-09-18 15:26 北京
确实菜
点赞 回复 分享
发布于 2023-09-18 15:31 江西
延迟双删,或者订阅binlog。消息队列会保证消息的可靠性的
点赞 回复 分享
发布于 2023-09-20 00:14 江苏
下次说用kafka,讲讲kafka的高可用架构,估计想问的就是保证消息队列高可用
点赞 回复 分享
发布于 2023-09-20 09:37 天津
我:这个我不知道😁
点赞 回复 分享
发布于 2023-09-22 18:59 湖北

相关推荐

废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
60 302 评论
分享
牛客网
牛客企业服务