
消息队列中间件可以说是Java开发中最常用的技术. 基本上,伸缩系统将使用消息队列来优化系统架构. 那么为什么要使用消息队列?我们使用消息队列解决什么问题?
对于大多数系统,我们使用消息队列执行以下三件事: 去耦,峰值削波和异步. [1]
第一个角色: 去耦.

在多个系统中,如果使用传统模式进行操作,则传统模式将如下所示:
传统模型的缺点: 系统之间的耦合太强. 如上图所示,系统A在代码中直接调用系统B和系统C的代码. 如果将来要连接系统D,则系统A需要修改代码,太麻烦了!
但是,如果我们修改中间件,则体系如下:

使用消息中间件后,我们将消息写入消息队列,需要消息的系统从消息队列本身进行订阅,因此系统A无需进行任何修改.
第二个角色: 异步.
在传统模式下,我们将串行方法用于传出消息,并且一些非必要的业务逻辑以同步方式运行,这非常耗时.

如果我们使用消息中间件将消息写入消息队列,则非必需业务逻辑将异步运行以加快响应速度.
第三个角色: 峰值削波.
在传统体系结构中,当存在大量并发时,所有请求都直接发送到,从而导致用于连接的中间件模块异常

但是,如果使用消息中间件,则系统A根据可以处理的并发量,从消息队列中缓慢提取消息. 在生产中,允许这种短暂的高峰积压.
除了上面提到的三个主要功能外消息队列中间件,实际上,消息队列还具有其他功能,例如: 可以保留数据,确保消息之间的顺序等等. 如果您想进一步了解消息队列的角色,可以参考文章[2]的结尾.
使用消息队列有很多优点,但是实际上消息队列不是万能药,它也有一些缺点.
实际上,由上述两个缺点引起的最终结果是: 增加了系统开发成本. 引入消息队列之后,您必须对大多数消息队列有深入的了解,否则如何进行技术选择?消息队列本身也相对复杂,无法在短时间内被完全理解. 因此消息队列中间件,是否使用消息队列需要根据具体情况进行判断,而不是为了使用技术而使用技术.
本文讨论以下几点:
阅读后,您应该能够回答以下问题:
在下一篇文章中,我们讨论使用消息队列时要考虑的一些问题.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-176174-1.html
论文就有立足之地
利息也买不到一斤肉了