消息队列-------Rabbitmq介绍和安装

1.消息队列介绍

消息队列就是基础数据结构中的"先进先出"的一种数据机构。想一下,生活中买东西,需要排队,先排的人先买消费,就是典型的"先进先出"

2.消息队列MQ可以解决的问题

MQ是一直存在,不过随着微服务架构的流行,成了解决微服务之间问题的常用工具。

1.应用解耦

单体应用---》分布式应用

-把一个大功能拆分成小功能,功能直接数据使用mq交互

以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。

当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中单用户感受不到物流系统的故障。提升系统的可用性

2.流量消峰 ------------秒杀场景,

举个栗子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。

使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这事有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。

3.消息分发-------发布订阅

多个服务队数据感兴趣,只需要监听同一类消息即可处理。

例如A产生数据,B对数据感兴趣。如果没有消息的队列A每次处理完需要调用一下B服务。过了一段时间C对数据也感性,A就需要改代码,调用B服务,调用C服务。只要有服务需要,A服务都要改动代码。很不方便。

有了消息队列后,A只管发送一次消息,B对消息感兴趣,只需要监听消息。C感兴趣,C也去监听消息。A服务作为基础服务完全不需要有改动

4.异步消息

如果使用resful调用---》同步调用

-发送了调用请求后,继续干自己的活,等另一个服务数据准备好,会放到mq中,再去mq中取

3常见消息队列比较

rabbitmq和kafka

-编程语言不通erlang,java

-对客户端支持都一样

-处理数据能力:rabbitmq低于kafak

-可靠性:rabbitmq更高

4.Rabbitmq安装

1 centos 安装

python 复制代码
# 安装配置epel源
# 安装erlang
yum -y install erlang
# 安装RabbitMQ
yum -y install rabbitmq-server

2.windows安装

python 复制代码
-官网下载erlang,版本跟rabbimq版本有对应关系
-rabbimq 官网下载安装包:https://github.com/rabbitmq/rabbitmq-server/releases

3 docker运行

python 复制代码
docker pull rabbitmq:management
# 设置用户名和密码,做端口映射:一个端口是web界面的端口,另一个端口是服务端口
docker run -di --name Myrabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management

web 管理页面的端口是 15672

服务端口是5672,使用python连接时候,指定这个端口

相关推荐
Surpass余sheng军7 小时前
AI 时代下的网关技术选型
人工智能·经验分享·分布式·后端·学习·架构
哈哈哈笑什么10 小时前
企业级高并发分布式SpringCloud系统下,订单动态超时自动取消(最终成熟方案),使用spring-cloud-starter-stream-rabbit
分布式·spring cloud·rabbitmq
哈哈哈笑什么10 小时前
Sleuth+Zipkin 与 OpenSearch 结合是企业级分布式高并发系统的“王炸组合”
分布式·后端·spring cloud
一只懒鱼a12 小时前
docker搭建rabbit集群
docker·容器·rabbitmq
哈哈哈笑什么12 小时前
在高并发分布式SpringCloud系统中,什么时候时候并行查询,提高查询接口效率,从10s到100ms
java·分布式·后端
阿杰同学15 小时前
Hadoop 面试题及答案整理,最新面试题
大数据·hadoop·分布式
听风吟丶15 小时前
微服务分布式事务实战:从数据一致性到故障恢复全方案
分布式·微服务·架构
ClouGence17 小时前
从 0 到 1 构建 TDSQL MySQL 实时同步链路
数据库·分布式·sql·mysql
哈哈哈笑什么17 小时前
完整Redis分布式锁技术方案(基于Redisson)
redis·分布式·spring cloud
树下水月17 小时前
kafka的topic积压的问题汇总
分布式·kafka