消息队列的认识

同步异步通讯

微服务间通讯有同步和异步两种方式

同步通讯:就像打电话,需要实时响应。
异步通讯:就像发邮件,不需要马上回复。

python rabbitmq 数据同步 rabbitmq同步异步_rabbitmq

同步调用的优点:

时效性较强,可以立即得到结果

同步调用的缺点:

耦合度高
性能和吞吐能力下降
有额外的资源消耗
有级联失败问题

异步调用好处:

吞吐量提升:无需等待订阅者处理完成,响应更快速
故障隔离:服务没有直接调用,不存在级联失败问题
调用间没有阻塞,不会造成无效的资源占用
耦合度极低,每个服务都可以灵活插拔,可替换
流量削峰:不管发布事件的流量波动多大,都由 Broker 接收,订阅者可以按照自己的速度去处理事件

异步调用缺点:

架构复杂了,业务没有明显的流程线,不好管理
需要依赖于 Broker 的可靠、安全、性能

常见的消息队列对比:

python rabbitmq 数据同步 rabbitmq同步异步_Erlang_02

RabbitMq的下载

RabbitMq是Erlang 语言开发的,所以下载RabbitMq需要先下载Erlang环境
RabbitMq和Erlang语言必须版本对应,下列连接可以查询版本对应表

RabbitMq和Erlang版本对应表

ErLang语言下载

RabbitMq下载 找到对应的版本下载完成后,开始配置对应的环境信息,可以查看下列帖子比较详细
下载和配置环境 配置完环境之后,进入安装目录下的sbin目录,执行

rabbitmq-plugins enable rabbitmq_management

安装插件,然后windows点击

python rabbitmq 数据同步 rabbitmq同步异步_学习_03


打开浏览器输入http://127.0.0.1:15672/后,出现登录按钮即可配置成功

python rabbitmq 数据同步 rabbitmq同步异步_Erlang_04


Username和Password都为:guest

RabbitMq功能介绍:

python rabbitmq 数据同步 rabbitmq同步异步_java-rabbitmq_05

Overview:

此界面为总览。主要包括一些节点信息和硬件信息

python rabbitmq 数据同步 rabbitmq同步异步_学习_06

Connections:

此界面为连接信息,消息发布者和消费者都应该连接MQ,在此处可以查看连接信息

python rabbitmq 数据同步 rabbitmq同步异步_虚拟主机_07

Channels:

此界面为通道信息,生产者消费者都应基于channels通道的连接和接收信息,每一个连上的人都应该创建Channel通道

python rabbitmq 数据同步 rabbitmq同步异步_学习_08

Exchanges:

交换机,也成路由器,跟现实中的路由器效果类似

python rabbitmq 数据同步 rabbitmq同步异步_rabbitmq_09

Queues:

消息队列,可做消息存储

python rabbitmq 数据同步 rabbitmq同步异步_rabbitmq_10

Admin:

用户管理界面,管理用户

python rabbitmq 数据同步 rabbitmq同步异步_rabbitmq_11

添加管理员:

新增之后没有访问权限,不同的用户可能产生冲突

python rabbitmq 数据同步 rabbitmq同步异步_rabbitmq_12


下面为nfl创建虚拟主机:

python rabbitmq 数据同步 rabbitmq同步异步_java-rabbitmq_13


回到user界面点击nfl

python rabbitmq 数据同步 rabbitmq同步异步_rabbitmq_14


分配对应的权限

python rabbitmq 数据同步 rabbitmq同步异步_java-rabbitmq_15


分配之后可以看到成功添加虚拟主机:

python rabbitmq 数据同步 rabbitmq同步异步_虚拟主机_16


将guest的/test主机删除:

python rabbitmq 数据同步 rabbitmq同步异步_学习_17


即可完成每个虚拟主机的权限划分:

python rabbitmq 数据同步 rabbitmq同步异步_学习_18


一般情况下,每个用户有自己的虚拟主机

小结:

python rabbitmq 数据同步 rabbitmq同步异步_Erlang_19