提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1、同步通讯和异步通讯
(1)同步调用
同步通讯相当于打电话,两者通讯之间,不能有第三个人加入。
异步通讯就相当于发微信,能多线操作,但时效性不如同步通讯。
微服务之间基于Feign的调用就属于同步方式,存在一些的问题。
(2)总结
同步调用的优点:
- 时效性较强,可以立即得到结果
同步调用的问题:
- 耦合度高
- 性能和吞吐能力下降
- 有额外的资源消耗
- 有级联失败问题
(3)异步调用
异步调用常见的实现就是事件驱动模式。
2、什么是MQ?
MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。
3、RabbitMQ概述
RabbitMQ是基于Erlang语言开发的开源消息通信中间件。
RabbitMQ安装
下载镜像:
方式一:在线拉取
docker pull rabbitmq:3-management
方式二:从本地加载
docker load -i mq.tar
执行下面的命令来运行MQ容器:
docker run \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123321 \
--name mq \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3-management
运行成功以后访问192.168.120.132:15672
,即可看到RabbitMQ的页面。
但是我们尝试使用itcast账号登录的时候发现控制台报错401,说明我们是没有权限的,所以我们要去docker容器中添加权限。
docker exec -it mq bash
执行rabbitmqctl add_user root 123
添加用户,用户名为root,密码为123
执行abbitmqctl set_permissions -p / root ".*" ".*" ".*"
赋予root用户所有权限
执行rabbitmqctl set_user_tags root administrator
赋予root用户administrator角色
添加成功之后我们使用新添加的用户进行登录。