消息中间件的作用(5大主要作用详解)

消息中间件的作用(5大主要作用详解)-mikechen

消息中间件在高并发架构设计场景拥有非常重要的作用,以下是5大消息中间件的主要作用@mikechen

1.解耦应用程序之间的通信

通过消息中间件,应用程序可以彼此发送消息,而不必知道对方的详细信息。

典型的上下游解耦如下图所示:

消息中间件的作用(5大主要作用详解)-mikechen

这种松散耦合的架构模式使得应用程序更加灵活、可维护和可扩展。

 

2.支持异步通信

消息中间件允许应用程序异步地发送和接收消息,因此可以使应用程序更加高效地处理任务,同时提高响应速度。

举一个用户注册的例子:用户注册成功后,系统需要发送注短信注册成功通知,以及赠送注册成功的积分。

1)同步

用户注册后,如果采用同步通信的方式,总耗时:10ms+100ms+100ms=210ms。

如下图所示:

消息中间件的作用(5大主要作用详解)-mikechen

由于短信通知与增加积分为非核心流程,为了提升系统响应性能,从而我把它改造为异步。

2)异步

用异步通信改造后,用户注册后写入消息10ms左右立即返回成功给客户端,无需等待耗时较久的同步(短信+积分)就可以返回,从而极大的提升了系统的吞吐量。

如下图所示:

消息中间件的作用(5大主要作用详解)-mikechen

所以异步的典型场景就是将比较耗时而且不需要即时返回结果的操作,通过消息中间件来实现异步通信。

 

3.流量削峰

消息中间件流量削峰,是指通过对消息中间件中的消息传输速率进行控制,以达到削减消息流量峰值的目的的技术。

流量削锋也是消息中间件的常用场景,一般在秒杀,或团抢活动中使用广泛。

例如:在电商平台中,通过对订单消息流量进行削峰处理,可以避免订单瞬时量过大导致系统崩溃的问题。

在社交网络中,通过对消息通知流量进行削峰处理,可以避免通知瞬时量过大导致用户无法正常使用的问题。

消息中间件的作用(5大主要作用详解)-mikechen

这种场景中系统的峰值流量往往集中于一小段时间内,所以为了防止系统在短时间内的峰值流量冲垮,往往采用消息中间件来削弱峰值流量,相当于消息队列做了一次缓冲。

 

4.消息中间件日志处理

消息中间件日志处理是指对消息中间件产生的日志进行收集、存储、分析和展示的一系列操作。

比如:Kafka的应用,解决大量日志传输的问题,如下图所示:

消息中间件的作用(5大主要作用详解)-mikechen

 

消息中间件日志包括了消息传输、消息消费、消息队列状态等各个方面的信息,对于消息中间件的性能调优、故障排查、安全监控等方面都非常重要。

 

5.提高可靠性

消息中间件可以确保消息的可靠传递,并通过重试机制、持久化存储等方式保证消息不会丢失。

以上就是消息中间件的作用详解,更多内容请查看:史上最强消息队列MQ万字图文总结

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法