![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
消息队列
文章平均质量分 88
丢丢diu丢
CSDN,做笔记用的……
展开
-
消息队列——Kafka
敖丙大佬:《浅入浅出》-Kafka 0.消息队列,考虑以下的问题: 1.使用消息队列不可能是单机的(必然是分布式or集群) Kafka天然是分布式的,往一个topic丢数据,实际上就是往多个broker的partition存储数据 2.数据写到消息队列,可能会存在消息丢失的问题,所以,数据在消息队列需要持久化(磁盘?数据库?Redis?分布式文件系统?) Kafka会将partition以消息日志的方式(落磁盘)存储起来,通过 顺序访问IO和缓存(等到一定的量或时间)才真正把数据写到磁盘上,来提高速度。原创 2021-04-23 22:53:43 · 430 阅读 · 3 评论 -
消息队列——重复消费、顺序消费、分布式事务
大佬敖丙的《吊打面试官》系列-重复消费、顺序消费、分布式事务 1.重复消费——与消息队列的重试机制 正常情况下,支付成功后,后边的流程积分、消费券…也应该执行成功。 **但总会出现问题。**网络抖动、开发人员的Bug、数据问题……这些都可能处理失败,导致要求重发!! 问题1:重复消费怎么解决? 如下图,当积分流程出现问题时,那他会要求你重发一次,可问题在于,其他已经成功的流程难道也要跟着它一起再重新执行一遍吗? 积分加2次?优惠券扣2次? 肯定不行!!! 接口幂等 幂等 他是一个数学概念,表示原创 2021-04-23 12:25:51 · 919 阅读 · 0 评论 -
消息队列—基础知识
1.消息队列的3个场景 异步 削峰 解耦 1.异步 场景1:支付系统的优惠券、积分等环节 如下图所示,一个单纯的支付系统,在加上一系列的同步操作之后(左) 中间的流程越多,链路越长,系统的执行速度越慢,用户体验越差! 问题1:那怎么解决呢? 解决方案2: 异步 如下图所示,可以让一些动作同时进行,支付成功后,就去校验优惠券、增减积分; 问题2:那为什么不使用线程池呢?(等会说) 2.解耦 如果用线程池实现异步,那线程的代码是不是要写? 问题3:线程池的缺点: 在订单流程中,扣积分、扣优惠券、发短信原创 2021-04-23 10:54:03 · 110 阅读 · 0 评论