发布订阅模式详解(定义作用及原理应用)

发布订阅模式详解(定义作用及原理应用)-mikechen

发布订阅模式定义

发布订阅模式,全称是Publish-Subscribe Pattern,是一种软件设计模式,用于实现消息传递机制。

如下图所示:

发布订阅模式详解(定义作用及原理应用)-mikechen

在该模式中,有一个消息代理(或中介者),充当消息的发布者和订阅者之间的桥梁,以便它们可以松散耦合地通信。

发布者不需要知道哪些订阅者接收消息,订阅者也不需要知道消息的来源。这种模式实现了一对多的通信方式,其中多个订阅者可以同时接收消息。

 

发布订阅模式作用

发布订阅模式有以下作用:

  1. 解耦合: 发布者和订阅者之间是松散耦合的,它们互相不知道彼此的存在。
  2. 异步通信: 发布订阅模式支持异步通信,因为消息的生产者和消费者可以独立执行,无需等待彼此的响应。
  3. 消息过滤: 订阅者可以选择订阅特定类型的消息,从而降低了不必要的消息传递。

 

发布订阅模式原理

实现订阅发布模式的关键组件是消息代理,Message Broker。

如下图所示:

发布订阅模式详解(定义作用及原理应用)-mikechen

消息代理负责接收来自发布者的消息,并将其分发给相应的订阅者。

常见的消息代理,包括:Apache Kafka、RabbitMQ和Redis等。

1.发布者

发布者负责创建并发布消息,它将消息发送到消息代理,而无需知道哪些订阅者将接收到该消息。

2.订阅者

订阅者注册对感兴趣的消息进行订阅,并接收消息代理分发的消息,订阅者可以根据自己的需求选择订阅特定类型的消息。

3.消息代理

消息代理是订阅发布模式的中心组件,它负责接收发布者的消息,并将其传递给相应的订阅者。

 

发布订阅模式应用

发布订阅模式的适用场景,主要包括:

1.消息队列系统

发布订阅模式是消息队列系统的核心概念,它允许生产者将消息发布到消息队列中,然后允许多个消费者订阅感兴趣的消息主题。

这用于实现异步消息传递,比如:Apache Kafka、RabbitMQ、ActiveMQ、RocketMQ 等消息中间件。

2.微服务架构

在微服务架构中,不同的微服务之间可能需要进行异步通信。

发布订阅模式可以用于微服务之间的消息传递,例如:通知其他微服务有关特定事件的发生,以实现松散耦合的通信。

3.事件处理和调度系统

许多事件驱动的应用程序使用发布订阅模式来处理用户交互、外部事件、传感器数据等。

事件处理框架通常会将事件发布到特定主题,然后感兴趣的事件处理程序(订阅者)可以订阅这些主题来响应事件。

4.监控和日志处理

在监控系统和日志处理系统中,发布订阅模式用于订阅特定类型的事件或日志数据,以实时监控系统状态、收集和分析日志信息。

mikechen

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

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

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

评论交流
    说说你的看法