南宁好的网站建设公司,模板网站和定制网站的区别是什么,用dw做静态网站的步骤,云南省建设工程信息网招标公告一、MQ是什么#xff1f;为什么使用它
MQ#xff08;Message Queue#xff0c;简称MQ#xff09;被称为消息队列。 是一种用于在应用程序之间传递消息的通信方式。它是一种异步通信模式#xff0c;允许不同的应用程序、服务或组件之间通过将消息放入队列中来进行通信。这…一、MQ是什么为什么使用它
MQMessage Queue简称MQ被称为消息队列。 是一种用于在应用程序之间传递消息的通信方式。它是一种异步通信模式允许不同的应用程序、服务或组件之间通过将消息放入队列中来进行通信。这些消息可以包含数据、命令、事件等从而实现系统之间的解耦和异步处理。
消息队列能给系统带来的好处有下面几点
异步通信程序解耦流量削峰
当然有好处也有坏处
程序复杂性提高数据一致性问题系统可用性降低
1.RabbitMQ
RabbitMQ是实现了高级消息队列协议AMQP的开源消息代理软件亦称面向消息的中间件。RabbitMQ服务器是用Erlang语言编写的而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
首先RabbitMQ基于AMQP协议开发所以很多基于AMQP协议的功能RabbitMQ都是支持的比如SpringCloud中的消息总线bus
其次RabbitMQ是基于Erlang编写这是也是RabbitMQ天生的优势Erlang被称为面向并发编程的语言并发能力极强在众多的MQ中RabbitMQ的延迟特别低在微秒级别所以一般的业务处理RabbitMQ比Kafka和RocketMQ更有优势。
最后RabbitMQ提供自带了图形化界面操作方便还自带了多种集群模式可以保证RabbitMQ的高可用并且SpringBoot默认就整合RabbitMQ使用简单方便。
二、为什么使用它
第1个场景
在微服务架构下可能一个业务会出现同时调用多个其他服务的场景而且这些服务之间一般会用到Feign的方式进行轻量级的通讯如果存在一个业务用户创建订单成功后还需要去给用户添加积分、通知商家、通知物流系统、扣减商品库存而在执行这个操作时如果任意一个服务出现了问题都会导致整体的下单业务失败并且会导致给用户反馈的时间延长。这时就造成了服务之间存在一个较高的耦合性的问题。可能有些服务不需要一些及时的性。比如积分服务、消息服务等等。
第2个场景
在我们在做一些秒杀业务时可能会在某个时间点突然出现大量的并发请求这可能已经远远超过服务器的并发瓶颈这时我们需要做一些削峰的操作也就是将大量的请求缓冲到一个队列中然后慢慢的消费掉。
第2个场景解决方案
忽然的海量请求可以存储在RabbitMQ的队列中然后由消费者慢慢消费掉RabbitMQ的队列本身就可以存储上千万条消息
第1个场景解决方案
在调用其他服务时我们把一些不具有及时性的任务放到RabbitMq中再由消费者慢慢消费 当然除了上面这些场景用到消息队列的地方很多看大家对自己系统的设计主要理解消息队列能干什么。