RabbitMQ复习

1、什么是消息中间件?
   --基于队列模型实现异步传输数据,可以实现抗高并发/异步/解耦/流量消峰。
   1.1 如何能抗高并发?
    --基于队列,根据消费者能力进行消费,而不是一次性全部消费完,对瞬时流量进行缓冲,从而实现抵抗高并发。
   1.2 什么是异步?
    --将程序中耗时的代码解构出来,单独开个线程执行,不影响整个业务的响应时间。
   1.3 什么是解耦?
    --系统模块之间的依赖性较强时,将共同依赖的不同结构出来,通过接口的形式调用,降低模块之间的强依赖关系。
    --比如A模块依赖B模块中的功能,一旦B模块挂了,A模块就会收到影响。所以将B中AB都需要的功能结构出来,这个过程叫做解耦。
   1.4 什么是流量消峰?
    --对服务器的瞬时流量值进行缓冲,存储到队列中,再根据消费者的能力进行消费。
2、Http请求有哪些缺点:后台业务逻辑耗时,响应超时;高并发崩溃
   --用户体验不好,基于请求与相应,响应超时造成用户体验不好。
   --高并发容易造成系统崩溃
   --重试会造成幂等性问题
3、MQ与多线程的区别
   --多线程只能实现异步,比较消耗CPU,且没有实现解耦。
4、MQ物件
   --virtualHost-->Producer-->message-->Exchange-->Top-->Queue-->message-->Comsumer
5、生产者如果获取消费结果
   --生产者投递成功将消息id返回给前端,消费者消费成功将消息id插入db,前端通过ajax定时通过消息id查询数据库。
6、什么是工作队列
   --与工作队列对应的是均摊队列,就是每个消费者均摊消费;而工作队列根据消费者的能力进行消费,设置一次给消费者推送的消息数量。

7、MQ如何避免消息堆积/提高消息的消费速度?
8、MQ如何避免消息重复消费/如何解决幂等性问题?
9、MQ如何确保消息在生产者、MQ服务器、消费者阶段丢失?
10、如何确保消息消费顺序一致?
    --绑定同一个队列和消费者。
11、MQ消息的推与拉形式
    --MQ服务器与消费者建立长连接后,会主动推数据给消费者。
    --消费者第一次启动的时候,会主动找服务器拉取数据,建立长连接。
12、MQ如何实现抗高并发?
    --通过将消息缓存到队列,根据消费者的消费能力对队列中的消息进行消费,而不是一次性全部消费完所有消息。
13、死信队列
   13.1 产生背景
    消息超时、队列满载、消费多次失败。
   13.2 架构原理
    将对应消息转移到死信交换机,死信交换机将消息分发给死信队列,死信消费者进行消费。
   13.3 应用场景
    这种情况在支付中用的比较多,比如超时支付。
14、幂等性问题
   14.1 产生幂等性背景
    网络波动等导致暂时调用接口失败的情况需要重试。
   14.2 自动重试机制
    MQ消费者消费失败会自动重试,默认无限次数重试。可配置重试次数和间隔时间。
   14.3 如何避免重复消费
    重复消费会导致的后果是数据库中数据不一致的问题。对数据库的操作有增删改查,查无妨,删原理同改,所以只需处理增和改两种情况。
    增:通过唯一性约束进行控制;改:通过乐观锁版本号控制
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值