我英文网站建设,哈尔滨市做网站公司,做网站主要栏目内,中美最近军事新闻文章目录 一、MQ介绍1、什么是MQ#xff1f;为什么要用MQ#xff1f;中间服务要保证这些系统可以正常工作#xff0c;应该要有哪些特性呢#xff1f;2、MQ的优缺点 一、MQ介绍
1、什么是MQ#xff1f;为什么要用MQ#xff1f;
ChatGPT中对于消息队列的介绍是这样的为什么要用MQ中间服务要保证这些系统可以正常工作应该要有哪些特性呢2、MQ的优缺点 一、MQ介绍
1、什么是MQ为什么要用MQ
ChatGPT中对于消息队列的介绍是这样的 MQMessageQueue消息队列。这东西分两个部分来理解队列是一种FIFO 先进先出的数据结构。 消息在不同应用程序之间传递的数据。将消息以队列的形式存储起来并且在不同的应用程序之间进行传 递这就成了MessageQueue。而MQ的作用从刚才ChatGPT的介绍中就能够抽象出三个关键字异步、 解耦、削峰。但是这什么意思呢跟开发有什么关系我们从一个简单的SpringBoot应用开始说起。 首先搭建一个普通的Maven项目在pom.xml中引入SpringBoot的依赖
中间服务要保证这些系统可以正常工作应该要有哪些特性呢
1、SpringBoot应用和监控服务应该是解耦的。不管有没有监控服务SpringBoot应用都要是可以正常运行 的。同时不管监控服务是用什么语言开发的同样不应该影响SpringBoot应用的正常运行。更进一步不 管监控服务要部署多少个同样也不应该影响SpringBoot应用的正常运行。反过来从监控服务看 SpringBoot应用也应该是一样的。这就需要这个中间服务可以提供不同语言的客户端通过不同客户端让消 息生产者和消息消费者之间彻底解耦。 2、SpringBoot应用和监控服务之间处理消息应该是异步的。基于解耦的关系SpringBoot应用并不需要知 道监控服务有没有运行。所以他并不需要将消息直接发送到监控服务也不需要保证消息一定会被监控服务 处理。他只要将消息发到中间服务就可以了。而监控服务可以在SpringBoot应用发布了时间之后随时去接 收处理这些消息。 3、这个中间服务需要可以协调双方的事件处理速度产生削峰填谷的效果。监控服务一般都是希望每五分 钟接收到SpringBoot发布过来的消息然后进行一次统计但是SpringBoot应用发布的事件频率却是不确定 的。如果SpringBoot应用在五分钟内产生了海量的消息就有可能让监控服务内存撑爆处理不过来。而监 控服务如果加大内存SpringBoot应用又有可能在五分钟内根本没有消息监控服务的内存就白加了。监控 服务的内存配大配小都不合适。这时候就需要这个中间服务能够这些消息暂存起来让监控服务可以按照 自己的能力慢慢处理问题。这就是中间服务的削峰填谷的作用。
2、MQ的优缺点
这时候你可能在想SpringBoot已经提供了本地的事件驱动支持。 那么我是不是给SpringBoot应用加上 一些web接口基于这些web接口不就可以将本地的这些系统事件以及自己产生的这些事件往外部应用推 送那这不就成了一个MQ服务了吗单其实上面列出了MQ的的很多优点。 但是在具体使用MQ时也会带 来很多的缺点 系统可用性降低