MessageQueue

Siona

MessageQueue

消息队列?应用场景?

消息队列是一种异步通信机制,用于在应用程序之间传递消息。它可以将消息暂时存储在队列中,然后按照一定的顺序和条件将消息传递给消费者。

✅ 应用场景:
		▪ 异步处理:通过将任务转换为消息,异步地进行处理,可以提高系统的吞吐量和响应速度。
		▪ 系统解耦:在不同的系统或模块之间使用消息队列进行通信,可以实现系统的解耦,提高系统的灵活性和可扩展性。
		▪ 流量控制:消息队列可以对消息进行缓存和限流,保证系统的稳定性和高可用性。
		▪ 应用解耦:在同一个应用程序中,不同的模块之间使用消息队列进行通信,可以实现模块之间的解耦,提高代码的可维护性。
		▪ 日志处理:通过将日志转换为消息,可以实现日志的异步处理,提高系统的性能和可维护性。

✅ 应用场景举例:
		▪ 异步处理:
				实时性要求不高的场景,如用户注册后发送注册短信和注册邮件。
				传统串行方式,将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,再返回给客户。
				   并行方式,将注册信息写入数据库成功后,发送注册邮件和发送注册短信同时进行,三个任务完成后,返回给客户端。可以提高处理时间。
				假如三个业务节点每个使用50毫秒,不考虑网络等其他开销,则串行方式的时间为150毫秒,并行的时间可能是100毫秒。
		▪ 系统解耦:
		▪ 流量控制(流量削峰):
				① 在秒杀系统中使用广泛,一般因为流量过大,导致流量暴增,然后应用挂掉。
				   解决方案为:在前端加入消息队列,可以控制活动的人数,缓解短时间内高流量压垮应用。
				   用户的请求,服务器接收后,首先写入消息队列,加入消息队列过长或者长度超过最大数量,则直接抛弃用户请求或者跳转到错误页面。
				② 订单系统中, 请求太多, 下单的太多. 那么直接将生成的订单id等信息放到MQ, 让新线程监听MQ, 然后慢慢地去进行订单创建, 库存扣减等工作.
		▪ 应用解耦:
				用户下单后,订单系统需要通知库存系统。
				传统方法是:订单系统调用库存系统的接口。
				假如库存系统没有办法完成访问,则整个操作无法完成。但是如果将消息写入消息队列,用户下单后,订单系统持续化处理,将返回用户订单下单成功,库存系统,将采用拉/推的方式,获取下单信息,库存系统根据下单的信息,进行库存操作。如此设计后,订单系统与库存系统将分离开来,订单系统写入消息队列,之后就不再关心其他后续操作,实现了解耦。
		▪ 日志处理:
				将消息队列使用在日志处理中,比如Kafka的应用,解决大量日志传输的问题,日志采集客户端,负责日志数据采集,定时写入Kafka队列;Kafka消息队列,负责日志数据的接收、存储、转发;日志处理应用:订阅并消费kafka队列中的日志数据。

MQ 私信队列、延迟队列

MQ 如何保证消息幂等性

MQ 如何保证分布式事务的最终一致性

MQ 如何进行产品选型

MQ 如何保证消息的高效读写

MQ 如何保证消息顺序

MQ 如何保证消息不丢失

MQ 有什么用?

MQ 如何保证消息可靠性传输

MQ 如何保证消息不被重复消费

MQ 有哪些作用?

如何设计一个 MQ

MQ 优缺点、使用场景

MQ

Last Updated 8/18/2024, 2:26:38 PM