更新 消息队列集群-rabbitMQ.md
This commit is contained in:
parent
d5b7c99448
commit
6199e60b79
@ -33,11 +33,11 @@
|
||||
|
||||
传统做法(传统模式的缺点:假如库存系统无法访问,则订单减库存将失败,从而导致订单失败,订单系统与库存系统耦合)
|
||||
|
||||

|
||||

|
||||
|
||||
使用消息队列
|
||||
|
||||

|
||||

|
||||
|
||||
订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
|
||||
|
||||
@ -51,21 +51,21 @@
|
||||
|
||||
1)串行方式:新注册信息生成后,先发送注册邮件,再发送验证短信
|
||||
|
||||

|
||||

|
||||
|
||||
2)并行处理:新注册信息写入后,由发短信和发邮件并行处理
|
||||
|
||||

|
||||

|
||||
|
||||
3)若使用消息队列:在写入消息队列后立即返回成功给客户端,则总的响应时间依赖于写入消息队列的时间,而写入消息队列的时间本身是可以很快的,基本可以忽略不计,因此总的处理时间相比串行提高了2倍,相比并行提高了一倍
|
||||
|
||||

|
||||

|
||||
|
||||
**限流削峰:**广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况
|
||||
|
||||
具体场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列
|
||||
|
||||

|
||||

|
||||
|
||||
1)作用:
|
||||
|
||||
@ -78,7 +78,7 @@
|
||||
|
||||
日志处理:日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题
|
||||
|
||||

|
||||

|
||||
|
||||
1)日志采集客户端,负责日志数据采集,定时写受写入Kafka队列
|
||||
|
||||
@ -90,11 +90,11 @@
|
||||
|
||||
1)点对点通讯(客户端A和客户端B使用同一队列,进行消息通讯)
|
||||
|
||||

|
||||

|
||||
|
||||
2)聊天时通讯(客户端A,客户端B,客户端N订阅同一主题,进行消息发布和接收。实现类似聊天室效果)
|
||||
|
||||

|
||||

|
||||
|
||||
### 3. 消息队列模式
|
||||
|
||||
@ -211,7 +211,7 @@ AMQP协议解决了以上的问题,而RabbitMQ实现了AMQP。
|
||||
|
||||
RabbitMQ从整体上来看是一个典型的生产者消费者模型,主要负责接收、存储和转发消息
|
||||
|
||||

|
||||

|
||||
|
||||
AMQP模型中,消息在producer中产生,发送到MQ的exchange上,exchange根据配置的路由方式发到相应的Queue上,Queue又将消息发送给consumer,消息从queue到consumer有push和pull两种方式。
|
||||
|
||||
@ -276,7 +276,7 @@ rabbitMQ常用命令
|
||||
[root@rebbitmq ~]# vim /etc/rabbitmq/rabbitmq.config
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
去掉后面的逗号
|
||||
|
||||
@ -291,11 +291,11 @@ rabbitMQ常用命令
|
||||
|
||||
默认用户名和密码:guest guest
|
||||
|
||||

|
||||

|
||||
|
||||
### 6. 用户管理
|
||||
|
||||

|
||||

|
||||
|
||||
**角色**
|
||||
|
||||
@ -321,7 +321,7 @@ rabbitMQ常用命令
|
||||
|
||||
总之就是TCP消耗资源
|
||||
|
||||

|
||||

|
||||
|
||||
使用rabbitmq时不管是消费还是生产都需要创建信道(channel) 和connection(连接);连接是连接到RabbitMQ的服务器
|
||||
|
||||
@ -343,13 +343,13 @@ rabbitMQ常用命令
|
||||
|
||||
binding 其实是 exchange 和 queue 之间的桥梁,它告诉我们 exchange 和那个队列进行了绑定关系( X 与 Q1 和 Q2 进行了绑定)
|
||||
|
||||

|
||||

|
||||
|
||||
扇出(fanout):
|
||||
|
||||
它是将接收到的所有消息广播到它知道的所有队列中
|
||||
|
||||

|
||||

|
||||
|
||||
直接(direct):
|
||||
|
||||
@ -373,7 +373,7 @@ channel.BasicPublish(exchange: "pdf_events",
|
||||
|
||||
在direct类型的exchange中,只有这两个routingkey完全相同,exchange才会选择对应的binging进行消息路由
|
||||
|
||||

|
||||

|
||||
|
||||
主题(topic):
|
||||
|
||||
@ -381,7 +381,7 @@ channel.BasicPublish(exchange: "pdf_events",
|
||||
|
||||
其中’'表示匹配一个单词, '#'则表示匹配没有或者多个单词
|
||||
|
||||

|
||||

|
||||
|
||||
第一个binding
|
||||
|
||||
@ -420,7 +420,7 @@ binding routingkey: agreements.eu.*.headstore
|
||||
|
||||
### 9. Queues 队列
|
||||
|
||||

|
||||

|
||||
|
||||
- name: 队列名称
|
||||
|
||||
@ -551,7 +551,7 @@ Cluster status of node rabbit@rabbitmq1 ...
|
||||
|
||||
登录rabbitmq web管理控制台
|
||||
|
||||

|
||||

|
||||
|
||||
### 3. 搭建 rabbitmq 的镜像高可用模式集群
|
||||
|
||||
@ -578,7 +578,7 @@ ha-mode:为匹配类型,他分为3种模式:
|
||||
- exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器)
|
||||
- nodes-指定(需配置ha-params参数,此参数为数组类型比如["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。)。
|
||||
|
||||

|
||||

|
||||
|
||||
### 4. 权限设置(补充)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user