MQ的应用
Posted wjw0324
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的队列),多个队列,一个队列对应一个消费者
以上是关于MQ的应用的主要内容,如果未能解决你的问题,请参考以下文章