首页 > 其他分享 >RabbitMQ介绍

RabbitMQ介绍

时间:2023-12-14 11:58:34浏览次数:29  
标签:异步 调用 服务 请求 队列 介绍 RabbitMQ

一、RabbitMQ介绍

1.1 现存问题

  • 服务调用:两个服务调用时,我们可以通过传统的HTTP方式,让服务A直接去调用服务B的接口,但是这种方式是同步的方式,虽然可以采用SpringBoot提供的@Async注解实现异步调用,但是这种方式无法确保请求一定回访问到服务B的接口。那如何保证服务A的请求信息一定能送达到服务B去完成一些业务操作呢?| 如何实现异步调用

  

  

  • 海量请求:在我们在做一些秒杀业务时,可能会在某个时间点突然出现大量的并发请求,这可能已经远远超过服务器的并发瓶颈,这时我们需要做一些削峰的操作,也就是将大量的请求缓冲到一个队列中,然后慢慢的消费掉。如何提供一个可以存储千万级别请求的队列呢?

  

  • 在微服务架构下,可能一个业务会出现同时调用多个其他服务的场景,而且这些服务之间一般会用到Feign的方式进行轻量级的通讯,如果存在一个业务,用户创建订单成功后,还需要去给用户添加积分、通知商家、通知物流系统、扣减商品库存,而在执行这个操作时,如果任意一个服务出现了问题,都会导致整体的下单业务失败,并且会导致给用户反馈的时间延长。这时就造成了服务之间存在一个较高的耦合性的问题。如何可以降低服务之间的耦合性呢?

  

  

 

1.2 处理问题

RabbitMQ就可以解决上述的全部问题

  • 服务之间如何想实现可靠的异步调用,可以通过RabbitMQ的方式实现,服务A只需要保证可以把消息发送到RabbitMQ的队列中,服务B就一定会消费到队列中的消息只不过会存在一定的延时。| 异步访问

  

 

  • 忽然的海量请求可以存储在RabbitMQ的队列中,然后由消费者慢慢消费掉,RabbitMQ的队列本身就可以存储上千万条消息 

  

 

  • 在调用其他服务时,如果允许延迟效果的出现,可以将消息发送到RabbitMQ中,再由消费者慢慢消费| 服务解耦

 

1.3 RabbitMQ介绍

百度百科:

>RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

首先RabbitMQ基于AMQP协议开发,所以很多基于AMQP协议的功能RabbitMQ都是支持的,比如SpringCloud中的消息总线bus

其次RabbitMQ是基于Erlang编写,这是也是RabbitMQ天生的优势,Erlang被称为面向并发编程的语言,并发能力极强,在众多的MQ中,RabbitMQ的延迟特别低,在微秒级别,所以一般的业务处理RabbitMQ比Kafka和RocketMQ更有优势。

最后RabbitMQ提供自带了图形化界面,操作方便,还自带了多种集群模式,可以保证RabbitMQ的高可用,并且SpringBoot默认就整合RabbitMQ,使用简单方便。

 

标签:异步,调用,服务,请求,队列,介绍,RabbitMQ
From: https://www.cnblogs.com/nihaoyx/p/17840957.html

相关文章

  • 一、V8 引擎的介绍
    一、V8引擎的介绍懂思念的杨树2023-06-27753阅读4分钟 专栏: V8引擎源码分析 GoogleV8引擎的作用用来解析javascript代码,它内置jit(实时编译),用来编译和执行JS代码,处理调用栈,内存分配,处理垃圾回收V8和其他高级语言具有相同的能力,具备解析器,解释器,编译器......
  • Excel 公式SWITCH函数你用过吗?多种查找函数介绍
    我们公司的项目上的模板使用了Excel的Switch函数,今天我使用的时候,发现报错,无法使用。环境说明我使用的是Windows10专业版,Office2016报错信息在Excel中的报错如下: 单元格的公式如下:=F8*_xlfn.SWITCH(H8,"高",1.5,"中",1,"低",0.5)*(100-I8)/100 查找问题从网上找了......
  • OAuth2.0详细介绍与实践
    一、OAuth2.0介绍1.1概述OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth......
  • k8s介绍
    k8s容器编排系统k8S是谷歌几十年来研发的一套系统,更新了运维领域的玩法。内容很多,先快速练习玩法,知道是什么就行。具体【为什么】再花时间慢慢学吧!0.参考资料1.k8s能干什么https://kubernetes.io/zh-cn/docs/concepts/overview/#why-you-need-kubernetes-and-what-can-i......
  • 【干货】SSH安全协议介绍
    原创:厦门微思网络SSH(SecureShell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行......
  • 运维工程师必备-Linux-RHCE认证介绍
    原创:厦门微思网络红帽RHCE9.0课程介绍红帽公司介绍红帽是首个(也是全球最大、全球领先)的企业开源软件解决方案提供商,在过去20几年里,红帽已经成为开源社区里令人尊敬的成员,赞助了数百个开源项目,并为数千个项 目贡献代码。屡获殊荣的支持、培训和咨询服务使红帽成为《财富》500......
  • 嵌入式系统开发中常用的程序例程的简要介绍
    这些例程都是嵌入式系统开发中常用的程序,它们分别属于不同的领域和功能。以下是对这些例程的简要介绍:audio_codec:音频编解码器程序,用于处理音频数据的编码和解码。cherryusb:基于CherryPi的USB设备驱动程序,用于连接USB设备。coremark:一个用于测试处理器性能的基准测试程序......
  • 嵌入式系统开发中常用的程序这些例程的简要介绍和使用示例
    这些例程都是嵌入式系统开发中常用的程序。以下是对这些例程的简要介绍和使用示例:audio_codec:音频编解码器程序,用于处理音频数据的编码和解码。使用示例:#include"audio_codec.h"intmain(){AudioCodeccodec;uint8_tinput[]={0x01,0x02,0x03,0x04};uint8_......
  • Hnswlib 介绍与入门使用
    Hnswlib是一个强大的近邻搜索(ANN)库,官方介绍Header-onlyC++HNSWimplementationwithpythonbindings,insertionsandupdates.热门的向量数据库Milvus底层的ANN库之一就是Hnswlib,为milvus提供HNSW检索。HNSW原理HNSW原理将节点划分成不同层级,贪婪地遍历来自上层的......
  • RabbitMQ
    简介作用流量消峰:相当于等待队列。应用解耦:当子系统出现故障,该系统的要处理的信息被缓存在消息队列中,待修复完成后即可恢复。异步处理。四大核心概念生产者:产生数据发送消息的程序。交换机:一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。队列:队列是Rabbit......