消息队列相关

1 RabbitMQ

1.1 什么是RabbitMQ?

采用AMQP高级消费队列协议的一种消息队列技术,最大特点就是消费并不需要确保提供方存在,实现了服务间的高度解耦.

1.2 如何保证消息的顺序性?

在这里插入图片描述

  1. 拆分多个 queue,每个 queue 一个 consumer,就是多一些 queue 而已,确实是麻烦点;
  2. 就一个 queue 但是对应一个 consumer,然后这个 consumer 内部用内存队列做排队,然后分发给底层不同的 worker 来处理。

在这里插入图片描述

1.3 为什么使用RabbitMQ

  1. 在分布式系统下具备异步,削峰,负载均衡等一系列高级功能
  2. 拥有持久化的机制,进程消息,队列中的信息也可以保存下来,
  3. 实现了消费者和生产者之间的解耦.
  4. 对于高并发场景下,利用消息队列可以使得同步访问变为串行访问量达到一定量的限流,利于数据库的操作.
  5. 可以使用消息队列达到异步下单的效果,排队中,后天进行逻辑下单.

1.4 使用RabbitMQ的场景

  1. 服务间异步通信
  2. 顺序消费
  3. 定时任务
  4. 请求削峰

1.5 如何避免消息重复投递或者重复消费

在消息产生时,MQ内部针对每一条生产者发送的消息生成一个inner-msg-id,作为去重的依据,避免重复消息进入队列;
在消息消费时,要求消息体中必须要有一个bizId作为去重的依据,避免同一条消息被重复消费.

2 Kafka

2.1 什么是Kafka?

2.2 :如何保证消息的顺序性?

在这里插入图片描述

  1. 写 N 个内存 queue,具有相同 key 的数据都到同一个内存 queue;然后对于 N 个线程,每个线程分别消费一个内存 queue 即可,这样就能保证顺序性。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值