发布订阅模式定义
发布订阅模式,全称是Publish-Subscribe Pattern,是一种软件设计模式,用于实现消息传递机制。
如下图所示:
在该模式中,有一个消息代理(或中介者),充当消息的发布者和订阅者之间的桥梁,以便它们可以松散耦合地通信。
发布者不需要知道哪些订阅者接收消息,订阅者也不需要知道消息的来源。这种模式实现了一对多的通信方式,其中多个订阅者可以同时接收消息。
发布订阅模式作用
发布订阅模式有以下作用:
- 解耦合: 发布者和订阅者之间是松散耦合的,它们互相不知道彼此的存在。
- 异步通信: 发布订阅模式支持异步通信,因为消息的生产者和消费者可以独立执行,无需等待彼此的响应。
- 消息过滤: 订阅者可以选择订阅特定类型的消息,从而降低了不必要的消息传递。
发布订阅模式原理
实现订阅发布模式的关键组件是消息代理,Message Broker。
如下图所示:
消息代理负责接收来自发布者的消息,并将其分发给相应的订阅者。
常见的消息代理,包括:Apache Kafka、RabbitMQ和Redis等。
1.发布者
发布者负责创建并发布消息,它将消息发送到消息代理,而无需知道哪些订阅者将接收到该消息。
2.订阅者
订阅者注册对感兴趣的消息进行订阅,并接收消息代理分发的消息,订阅者可以根据自己的需求选择订阅特定类型的消息。
3.消息代理
消息代理是订阅发布模式的中心组件,它负责接收发布者的消息,并将其传递给相应的订阅者。
发布订阅模式应用
发布订阅模式的适用场景,主要包括:
1.消息队列系统
发布订阅模式是消息队列系统的核心概念,它允许生产者将消息发布到消息队列中,然后允许多个消费者订阅感兴趣的消息主题。
这用于实现异步消息传递,比如:Apache Kafka、RabbitMQ、ActiveMQ、RocketMQ 等消息中间件。
2.微服务架构
在微服务架构中,不同的微服务之间可能需要进行异步通信。
发布订阅模式可以用于微服务之间的消息传递,例如:通知其他微服务有关特定事件的发生,以实现松散耦合的通信。
3.事件处理和调度系统
许多事件驱动的应用程序使用发布订阅模式来处理用户交互、外部事件、传感器数据等。
事件处理框架通常会将事件发布到特定主题,然后感兴趣的事件处理程序(订阅者)可以订阅这些主题来响应事件。
4.监控和日志处理
在监控系统和日志处理系统中,发布订阅模式用于订阅特定类型的事件或日志数据,以实时监控系统状态、收集和分析日志信息。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

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