MQ的应用

一.MQ介绍

message deque,消息队列,现如今有很多消息队列,比如rabbitMQ,kafka,rocketMQ

二.消息队列的应用场景

为什么要使用消息队列呢,适用于什么场景呢。

1.异步处理

如果以下三步操作,注册用户,注册成功后,发送短信给客户,发送邮件给客户

假设一个操作的时间未50ms,那么三步操作的时间就是150秒

那么我们可以,通过发送mq的形式,将消息发送到短信系统和邮件系统处理。那么响应时间将会大大减少。前提是我不需要管理消息接送方,接送到消息后是否处理成功。

串行模式 150ms

并行模式 100ms

消息队列模式 55ms

2.应用解耦

在一个业务方法中,需要处理2个系统的操作

A系统操作完之后,去操作B系统,当B系统操作失败,会影响A系统的操作。

解决方法,在操作完A系统后,通过消息队列,把信息带到B系统,在B系统进行相应的操作

3.流量削峰

当一个系统的访问流量很大,集中在一个时间点同时来访问时,比如双十一购物,秒杀活动等

那边就可以把请求暂存在队列中,可以设置队列的长度,来保证最大访问量,当超过此长度时,会抛出异常,同时提醒用户系统繁忙,稍后再试。后续队列中的请求,再慢慢处理。

4.日志处理

比如kafka队列可以处理吞吐量很大的数据,处理大量数据,复制日志的储存,转发到日志系统。

kafka:接受用户日志的消息队列

logstash:解析日志,转化为json格式

elasticsearch:实时日志分析服务的核心技术,一个schemaless,实时的数据存储服务,通过index组织数据,兼具强大的搜索和统计功能;

kibana:

基于Elasticsearch的数据可视化组件,超强的数据可视化能力是众多公司选择ELK stack的重要原因。

 5. 信息通讯

 

6.基于消息队列实现分布式事务处理机制

 参考rocketMQ的使用。

三.消息队列的模式    

以rabbitMQ为例 https://www.jianshu.com/p/80eefec808e5

1.简单模式:

一个消息提供者,一个对列,一个消息消费者

2.工厂模式:

一个消息提供者,一个队列,多个消息消费者,谁抢到消息归谁

3.订阅模式

一个消息提供者,一个交换机,多个队列,每个队列对应一个消费者

4.路由模式 

一个消息提供者,一个交换机(设置路由key),多个队列(队列与交换机进行绑定),一个队列对应一个消费者

5.主题模式(key,采用通配符)

一个消息提供者,要给交换机(定义通配符key,绑定符合通配符key的队列),多个队列,一个队列对应一个消费者

猜你喜欢

转载自www.cnblogs.com/wjw0324/p/10253188.html
MQ