做后台系统开发,跨进程通信除了发请求实现以外,还有一种方式就是发布订阅模式,列举项目实战中的几个用到消息发布订阅模式的场景:一、做照片采集的时候,将照片信息存库,并且需要把照片信息提交给第三方服务做照片解析工作。二、从第三方接收到推送消息,将消息按照分类字段推送给系统的不同业务服务做分发处理。三、发送邮件通知或者短信通知。这是脑海里处理过的印象比较深刻的三个场景。有人会问,可以通过HTTP请求的方式去调用处理的程序处理上面的数据达到一样的目的呢?下面就要谈谈消息发布订阅模式的好处了。
消息发布订阅是一种软件架构模式,用于在分布式系统中处理事件驱动的通信。它的作用是将系统中的各个部分解耦,让它们可以独立地进行工作,而不必直接互相通信。这种解耦可以带来以下几个好处:
1、松耦合:通过发布订阅模式,各个组件之间的关系变得松散,降低了它们之间的耦合度,使得系统更容易维护和扩展。
2、可扩展性:由于各个组件之间的解耦,新的组件可以更容易地添加到系统中,而不必修改已有的代码。
3、异步通信:消息发布订阅模式使得异步通信成为可能,组件之间可以通过消息进行通信,而不必等待对方的响应。
4、可靠性:消息发布订阅模式可以提高系统的可靠性,因为它可以处理系统中各个部分之间的故障。
5、可测试性:发布订阅模式使得系统的不同部分可以独立测试,从而提高了系统的可测试性。
结合我们上面列举的几个应用场景,首先消息订阅模式起到了松散耦合的目的,保证了系统的可扩展性,不需要同步获取响应,达到了异步通信的效果,可靠性方面需要通过程序逻辑去保证,可测试性本身也不是发布订阅模式特有的,是靠程序设计保证的。
说完上述的场景和理论,就是具体实现了,可以实现消息发布订阅模式的中间件比较多,有kafka,activemq,rabbitmq,redis等,可以根据项目需要和团队喜好进行选择。