【架构师面试-消息队列-2】-消息队列使用场景剖析
2021/11/22 23:16:00
本文主要是介绍【架构师面试-消息队列-2】-消息队列使用场景剖析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1:应用解耦
1:原系统
缺点是耦合性太强,每个系统都要接入A,每次加入新系统是不是都需要修改代码?
2:应用解耦
需要被接入的系统A只需要将消息写入MQ即可,每个需要对接系统A的系统只需要订阅消息队列的消息,系统A的代码完全不需要修改。
3:举例
用户支付订单完成后,系统需要给用户发红包、增加积分、发货、物流等等行为,就可以通过这样的方式进行解耦。
2:异步处理
1:同步
一次请求耗时:3 + 300 + 200 + 600 = 1103ms
请求执行耗时较长有什么弊病:系统百分之80%的性能问题,都是慢查询导致
系统请求耗时较长 --- 吞吐量大幅降低 --- 系统资源占用陡升
特点:串行、逐个、同步
1. 系统A需要等待,BCD逐个执行完毕
2. 如果任意系统出错,那么真个流程就报错
3. 如果任意系统超时,那么整个流程就超时
2:异步
一次请求耗时:3 + 2 = 5ms
特点:异步、并行
前提:系统A返回的结果,并不依赖BCD处理的结果
MQ发送消息失败咋办?
3:流量削峰
系统A压测得出接口峰值处理能力500tps。
大多数系统,一定会有访问量的波峰和波谷。比如:12306、美团外卖...
如果在访问量大的情况下,所有请求都打到数据库上,那么再强悍的数据库也很难承受。
将多余请求积压在MQ中,系统A慢慢处理。把超过500峰值的流量削掉,填在空闲的其他低估时期,所以才叫削峰填谷。
消息队列会不会被打挂掉?
4:信息通信
1:概述
消息通讯是指,消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。
2:举例
IM 聊天
点对点消息队列。有基于消息队列的 RPC 框架实现,例如rabbitmq-jsonrpc ,用的人较少。
面向物联网的 MQTT 。阿里在开源的 RocketMQ 基础上,增加了 MQTT 协议的支持,可见 消息队列 for IoT 。
5:日志处理
1:如何使用
日志处理,是指将消息队列用在日志处理中,比如 Kafka 的应用,解决大量日志传输的问题。
日志采集client,负责日志数据采集,定时批量写入 Kafka 队列
Kafka,负责日志数据的接收,存储和转发
日志处理Server:订阅并消费 Kafka 队列中的日志数据,将日志信息进行分析,可视化展示等...
2:最常见日志解决方案:ELKK
Elasticsearch :实时日志分析服务的核心技术,一个 schemaless ,实时的数据存储服务,通过index 组织数据,兼具强大的搜索和统计功能。
Logstash :对接 Kafka 写入的日志,做日志解析,统一成 JSON 输出给 Elasticsearch 中。
Kibana :基于 Elasticsearch 的数据可视化组件,超强的数据可视化能力是众多公司选择 ELK
stack 的重要原因。
Kafka :接收用户日志的消息队列
这篇关于【架构师面试-消息队列-2】-消息队列使用场景剖析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21MQ-2烟雾传感器详解
- 2024-12-09Kafka消息丢失资料:新手入门指南
- 2024-12-07Kafka消息队列入门:轻松掌握Kafka消息队列
- 2024-12-07Kafka消息队列入门:轻松掌握消息队列基础知识
- 2024-12-07Kafka重复消费入门:轻松掌握Kafka消费的注意事项与实践
- 2024-12-07Kafka重复消费入门教程
- 2024-12-07RabbitMQ入门详解:新手必看的简单教程
- 2024-12-07RabbitMQ入门:新手必读教程
- 2024-12-06Kafka解耦学习入门教程
- 2024-12-06Kafka入门教程:快速上手指南