码迷,mamicode.com
首页 > 其他好文 > 详细

MQ的应用

时间:2019-01-11 00:47:11      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:shu   ash   实时日志分析   异步   elk stack   交换机   分布   组件   形式   

一.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的应用

标签:shu   ash   实时日志分析   异步   elk stack   交换机   分布   组件   形式   

原文地址:https://www.cnblogs.com/wjw0324/p/10253188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!