0%

RabbitMQ-复习

RabbitMQ-复习

RabbitMQ-复习

消息中间件

诞生业务背景:

  • A 系统通过接口调用发送数据到 BCD 三个系统。一天后E 系统也要这个数据,有一天后 C 系统现在不需要了。
  • A 系统接收一个前端请求,需要在ABCD四个系统写入库,请求总延时是 3 + 300 + 400 + 200 = 903ms,接近 1s。而互联网类的企业,对于用户直接的操作,一般要求每个请求在 200 ms 以内完成。
  • 每天 12:00 ~ 13:00 ,A系统每秒并发请求数量突然会暴增到 5k+ 条。可能会导致数据库崩溃,系统无法访问。其他时间,并发量小于100.

解决了什么:降低A系统其他系统的耦合,提升响应速度,将一个时间段的高并发量平均到其他时间段。

优点

  • 解耦
  • 提升响应速度
  • 削峰

缺点

  • 可用性降低,rabbitmq可能宕机。
  • 复杂度提高
  • 需要解决数据一致性
    • 消息丢失
    • 重复消费

不同消息中间件对比

RabbitMQ 基于erlang并发语言实现,性能好,延时最低。社区活跃

kafaka 大数据方面,日志收集,社区活跃。高可用的实现更好,本身是分布式的。用到了选举算法。

RocketMQ 阿里出品,已捐献给apache,社区不够活跃

RabbitMQ

介绍:基于erlang语言开发,延时低,并发性能高。

架构:

工作模式:7种。

工作模式

路由模式

一个生产者,一个交换机,多个队列,多个消费者

交换机类型 topic

生产者发送消息指定 路由 key.

队列绑定交换机,指定路由key,路由key 可以是通配符。

高级特性

消息可靠性
消费者限流(削峰填谷)
TTL(过期时间)
死信队列
延迟队列
消息追踪(rabbitmq_tracing)
消息一致性解决
幂等性解决

RabbitMQ高可用

为了解决引入RabbitMQ带来的系统可用性降低。

解决方法:镜像集群模式。

镜像集群模式

介绍:将创建的queue的元数据(queue配置信息)和queue里的消息存储到多个实例上。

如何使用镜像集群模式

​ 在RabbitMQ的管理控制台,就是在后台新增一个镜像集群模式策略,指定数据同步的节点。

镜像集群模式缺点:性能开销大