消息队列 | 青训营笔记

65 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

一、消息队列是什么

这就要提到消息队列的三大好处

1、解耦

举个例子,一个模块A执行一个功能需要调用模块B、C、D才能完成。如果需要对该功能进行改动,需要进行较大改动,耦合度较高。

因此,需要使用消息队列解耦。模块A只需将消息发送到消息队列,再由模块B、C、D从消息队列获取消息进行消费即可。

2、异步

使用系统A,但是A要调用系统B,C,D,但是每一个系统返回的时间是不一样的,你必须要等待全部返回后才可以响应用户。采用消息队列,当用户发送请求后,我们把数据传给消息队列,然后再直接响应给用户我已经发送了信息。

3、削峰

比如平常用户的请求我们会直接访问数据库,在大量用户过来的时候,这样的话我们会对数据库照常比较大的压力

可以增加一个消息队列,这样的话不管请求来多少,先存入消息队列,然后再让系统慢慢的处理请求,这样很好的减缓了数据库的访问压力。

二、消息队列有哪些

1、kafka

kafka使用场景,业务日志、用户行为数据、Metrics数据

基本概念,Producer、Cluster、Consumer、Topic、Partition

数据迁移、Offset、Partition选主

一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑

2、BMQ

Kafka在使用中遇到问题

BMQ架构

BMQ各模块是如何工作的,Broker、Proxy、HDFS、MetaStorage

BMQ多机房容灾

3、RocketMQ

RocketMQ使用场景

RocketMQ和Kafka对比

RocketMQ架构介绍,Producer、Broker、Nameserver、Consumer

一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑