RabbitMQ集群搭建和测试总结_亲测

mq 专栏收录该内容
6 篇文章 0 订阅

RabbiMQ简介

RabbitMQ是用Erlang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。

RabbitMQ模式

RabbitMQ模式大概分为以下三种:
(1)单一模式。
(2)普通模式(默认的集群模式)。
(3)镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案,在对业务可靠性要求较高的场合中比较适用)。
要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。

RabbitMQ特点

RabbitMQ的集群节点包括:内存节点、磁盘节点。RabbitMQ支持消息的持久化
也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。

节点环境

192.168.1.17 rabbitmq3 内存节点
192.168.1.18 rabbitmq2 内存节点
192.168.1.19 rabbitmq1 磁盘节点

注意: RabbitMQ集群节点必须在同一网段里,如果是跨广域网,效果会变差。

RabbitMQ普通集群配置

配置hosts文件

更改三台MQ节点的计算机名分别为rabbitmq1、rabbitmq2 和rabbitmq3,然后修改hosts配置文件

#查看主机名
hostname

#修改主机名
hostnamectl set-hostname rabbitmq1

#或者
vim /etc/hostname    //其他两台相同
rabbitmq1

vim /etc/hosts
192.168.1.17 rabbitmq3
192.168.1.18 rabbitmq2
192.168.1.19 rabbitmq1

#如果先安装了rabbitMQ后改的主机名,启动可能会有问题
#分别在三台机器上 创建文件 
vim /etc/rabbitmq/rabbitmq-env.conf
NODENAME=rabbit@rabbitmq1 #注意这里的主机名修改对应的节点主机名
rabbitmq软件安装

分别安装三台的rabbitMQ

Centos离线安装RabbitMQ并开启MQTT

arm架构安装RabbitMQ并升级erlang解决Requires: erlang >= 23.2

#删除rabbitmq之前启动过生成的文件
cd /var/lib/rabbitmq/
rm -rf *

#重启
sudo systemctl restart rabbitmq-server.service

#停止
sudo systemctl stop rabbitmq-server.service 

#查看服务启动状态
sudo systemctl status rabbitmq-server.service 

#查看开机自启动状态
sudo systemctl is-enabled rabbitmq-server.service

#查看状态
rabbitmqctl status

#创建用户admin和密码beyond_2021
rabbitmqctl add_user admin beyond_2021

#设置admin角色
rabbitmqctl set_user_tags admin administrator

#分配权限
rabbitmqctl  set_permissions -p "/" admin '.*' '.*' '.*'  

#RabbitMQ提供了一个非常友好的图形化监控页面插件(rabbitmq_management),让我们可以一目了然看见Rabbit的状态或集群状态。
#查看插件安装情况
rabbitmq-plugins list

#开启图形化监控页面插件
rabbitmq-plugins enable rabbitmq_management  //管理控制台的默认端口是15672

#开启mqtt插件
rabbitmq-plugins enable rabbitmq_mqtt      //默认端口mqtt是1883 mqtt://192.168.1.17:1883

#开启Mqtt的websocket插件
rabbitmq-plugins enable rabbitmq_web_mqtt    //默认端口websocket是15675 ws://192.168.1.17:15675/ws path是/ws  

#查看监听端口(插件监控的端口是15672)
netstat -ntap |grep 5672
拷贝erlang.cookie

Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。所以必须保证各节点cookie一致,不然节点之间就无法通信。

#查看rabbitmq1的节点的cookie文件
cat /var/lib/rabbitmq/.erlang.cookie
HKHIEHFDVNFFGGPQ

#用scp的方式将rabbitmq1节点的.erlang.cookie的值复制到其他两个节点中。
#rabbitmq1复制到其他两个节点中
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.17:/var/lib/rabbitmq/.erlang.cookie

#重启服务
sudo systemctl restart rabbitmq-server.service 

scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.18:/var/lib/rabbitmq/.erlang.cookie

sudo systemctl restart rabbitmq-server.service 

#如果报错: 参考链接: https://blog.csdn.net/u014209205/article/details/106647229
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq
mkdir -pv /var/log/rabbitmq

#报错:
 failed to open log file at '/var/log/rabbitmq/rabbit@rabbitmq3.log', reason: no such file or directory
 #创建文件
 vim /var/log/rabbitmq/rabbit@rabbitmq3.log

failed to open log file at '/var/log/rabbitmq/rabbit@rabbitmq3_upgrade.log', reason: no such file or directory
#创建文件
 vim /var/log/rabbitmq/rabbit@rabbitmq3_upgrade.log
将rabbitmq2、rabbitmq3作为内存节点加入rabbitmq1节点集群中

在rabbitmq2 rabbitmq3下执行

rabbitmqctl stop_app //停掉rabbit应用

rabbitmqctl join_cluster --ram rabbit@rabbitmq1 //加入到内存节点

#也可以加入到磁盘节点
#rabbitmqctl join_cluster rabbit@rabbitmq1 //加入到磁盘节点

rabbitmqctl start_app  //启动rabbit应用

#如果加入集群报错
Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1
Error:
incompatible_feature_flags
表示: Rabbitmq各节点版本不一致导致的

(1)默认rabbitmq启动后是磁盘节点,在这个cluster命令下,rabbitmq2和rabbitmq3是内存节点,rabbitmq1是磁盘节点。
(2)如果要使rabbitmq2、rabbitmq3都是磁盘节点,去掉–ram参数即可。
(3)如果想要更改节点类型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应用

在RabbitMQ集群中,必须至少有一个磁盘节点,否则队列元数据无法写入到集群中,当磁盘节点宕掉时,集群将无法写入新的队列元数据信息。

保持版本一致,rabbitmq卸载与升级

我这里有rabbitmq3.8.2和3.8.18版本的rpm包,有需要可以给我留言或评论

#查看版本
rabbitmqctl version

erl

erl -version

#查询rpm安装包
rpm -qa rabbitmq
rpm -qa epel-release
rpm -qa erlang

#rpm卸载老版本
sudo rpm -e rabbitmq-server-3.8.2-1.el7.noarch.rpm 
sudo rpm -e erlang-22.2.8-1.el7.x86_64.rpm 
sudo rpm -e epel-release-7-11.noarch.rpm

#yum查询安装包与卸载
yum list | grep rabbitmq
yum -y remove rabbitmq-server.noarch
yum list | grep erlang
yum remove erlang.x86_64
yum remove socat

#安装最新的,相同的版本
sudo rpm -ivh epel-release-7-13.noarch.rpm
sudo rpm -ivh erlang-23.3.4.4-1.el7.x86_64.rpm
sudo rpm -ivh rabbitmq-server-3.8.18-1.el7.noarch.rpm

#然后重新加入到集群
rabbitmqctl join_cluster --ram rabbit@rabbitmq1 
查看集群状态
#查看集群状态
rabbitmqctl cluster_status
#显示如下:
Cluster status of node rabbit@rabbitmq1 ...
Basics

Cluster name: rabbit@rabbitmq1

Disk Nodes

rabbit@rabbitmq2
rabbit@rabbitmq3
rabbit@rabbitmq1

Running Nodes

rabbit@rabbitmq2
rabbit@rabbitmq3
rabbit@rabbitmq1

Versions

rabbit@rabbitmq2: RabbitMQ 3.8.18 on Erlang 23.3.4.4
rabbit@rabbitmq3: RabbitMQ 3.8.18 on Erlang 23.3.4.4
rabbit@rabbitmq1: RabbitMQ 3.8.18 on Erlang 23.3.4.4

Maintenance status

Node: rabbit@rabbitmq2, status: not under maintenance
Node: rabbit@rabbitmq3, status: not under maintenance
Node: rabbit@rabbitmq1, status: not under maintenance

Alarms

(none)

Network Partitions

(none)

Listeners

Node: rabbit@rabbitmq2, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@rabbitmq2, interface: [::], port: 1883, protocol: mqtt, purpose: MQTT
Node: rabbit@rabbitmq2, interface: [::], port: 15675, protocol: http/web-mqtt, purpose: MQTT over WebSockets
Node: rabbit@rabbitmq2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbitmq3, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@rabbitmq3, interface: [::], port: 1883, protocol: mqtt, purpose: MQTT
Node: rabbit@rabbitmq3, interface: [::], port: 15675, protocol: http/web-mqtt, purpose: MQTT over WebSockets
Node: rabbit@rabbitmq3, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq3, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbitmq4, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq1, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbitmq1, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@rabbitmq1, interface: [::], port: 1883, protocol: mqtt, purpose: MQTT
Node: rabbit@rabbitmq1, interface: [::], port: 15675, protocol: http/web-mqtt, purpose: MQTT over WebSockets

Feature flags

Flag: drop_unroutable_metric, state: enabled
Flag: empty_basic_get_metric, state: enabled
Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled

rabbitmq集群节点的移除

#停止rabbitmq2 rabbitmq3服务或者rabbitmqctl stop_app停止应用后
#在rabbitmq1上 从集群中 移除节点
rabbitmqctl forget_cluster_node rabbit@rabbitmq2
rabbitmqctl forget_cluster_node rabbit@rabbitmq3

#重置数据, 用户名密码都会要重新设置
rabbitmqctl stop_app
rabbitmqctl reset   

#修改成磁盘节点
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc(ram)
rabbitmqctl start_app
登录rabbitmq web管理控制台,创建新的队列

打开浏览器输入任意一个节点的: 比如17节点, http://192.168.1.17:15672, 输入之前创建的用户Username:admin,输入Password:beyond_2021 ,登录后出现如图所示的界面。

在这里插入图片描述

根据界面提示创建一条队列

在这里插入图片描述

队列创建成功

在这里插入图片描述

在RabbitMQ集群中,必须至少有一个磁盘节点,否则队列元数据无法写入到集群中,当磁盘节点宕掉时,集群将无法写入新的队列元数据信息。

RabbitMQ镜像集群配置

上面已经完成RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制。虽然该模式解决一项目组节点压力,但队列节点宕机直接导致该队列无法应用,只能等待重启,所以要想在队列节点宕机或故障也能正常应用,就要复制队列内容到集群里的每个节点,必须要创建镜像队列。

镜像队列是基于普通的集群模式的,然后再添加一些策略,所以你还是得先配置普通集群,然后才能设置镜像队列,我们就以上面的集群接着做。

设置的镜像队列可以通过开启的网页的管理端,也可以通过命令,这里说的是其中的网页设置方式。

创建rabbitmq策略

在任一节点控制台上创建策略
比如:在rabbitmq1节点的控制台上创建策略:http://192.168.1.17:15672

(1)Web网页配置 点击Admin菜单–->右侧的Policies选项–->左侧最下下边的Add/update a policy。

(2)按照图中的内容根据自己的需求填写。

在这里插入图片描述

  • Name: my_liang

  • Pattern: ^

  • Definition: ha-mode=all

  • Apply to Queues

  • Name:策略名称

  • Pattern:匹配的规则,(^ a)表示匹配a开头的队列,如果是匹配所有的队列,那就是^.

  • Definition:使用ha-mode模式中的all,也就是同步所有匹配的队列。问号链接帮助文档。

(3)点击Add policy添加策略

在这里插入图片描述

此时分别登陆rabbitmq2、rabbitmq3两个节点的控制台,可以看到上面添加的这个策略

添加队列

添加队列: 可以在控制台添加,也可以用代码或工具订阅会自己创建队列

控制台创建

在rabbitmq1节点的控制台上添加队列
(1)点击Queues菜单–>左侧下边的Add a new queue
(2)输入Name和Arguments参数的值,别的值默认即可

在这里插入图片描述

  • Name:队列名称
  • Durability:队列是否持久化
  • Node:消息队列的节点
  • Auto delete:自动删除
  • Arguments:使用的策略类型

(3)点击Add queue

在这里插入图片描述

将鼠标指向+2可以显示出另外两台消息节点。

往队列里发送消息

(1)点击ab队列按钮
(2)拖动滚动条,点击publish message
(3)填写相关内容

在这里插入图片描述

  • Persistent:表示持久化
  • Headers:随便填写即可
  • Properties:点击问号,选择一个消息ID号
  • Payload:消息内容

(4)点击Publish message按钮 发送消息

关闭消息发送提示窗口

点击queue按钮,发现ab队列的Ready和Total中多了一条消息记录。

在这里插入图片描述

做破坏性测试

(1)将rabbitmq1节点的服务关闭,再通过rabbitmq2和rabbitmq3查看消息记录是否还存在。

rabbitmqctl stop_app //停掉rabbitmq1的rabbit应用

查看rabbitmq2或rabbitmq3节点的控制台

在这里插入图片描述

从中可以看到ab队列已经从之前的+2显示成+1了,而且消息记录是存在的。

(2)再将rabbitmq2节点的服务关闭,通过rabbitmq3查看消息记录是否还存在。

rabbitmqctl stop_app //停掉rabbitmq2的rabbit应用

从rabbitmq3控制台中可以看到ab队列和消息记录还是存在的,只是变成了一个节点了。

(3)将rabbitmq1和rabbitmq2的服务再启动起来

rabbitmqctl start_app //启动rabbitmq1、rabbitmq2的rabbit应用

在这里插入图片描述

从中可以看到ab队列后面+2变成了粉色,鼠标指上去显示镜像无法同步。如果这时候停掉rabbitmq3节点的服务,那么队列里面的消息将会丢失。

采取的解决办法是选择在rabbitmq1或rabbitmq2节点上执行同步命令。

rabbitmqctl sync_queue ab //同步ab队列

同步完成后,+2又变成了蓝色。

这样,我们就测试了rabbitmq集群的破坏性测试,说明集群配置成功。

参考链接:
https://blog.51cto.com/11134648/2155934

  • 3
    点赞
  • 4
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p style="font-size:14px;color:#333333;"> <span style="color:#000000;">RocketMQ </span><span style="color:#000000;">是阿里巴巴在</span><span style="color:#000000;">2012</span><span style="color:#000000;">年开源的分布式消息中间件,目前已经捐赠给</span><span style="color:#000000;"> Apache </span><span style="color:#000000;">软件基金会,并于</span><span style="color:#000000;">2017</span><span style="color:#000000;">年</span><span style="color:#000000;">9</span><span style="color:#000000;">月</span><span style="color:#000000;">25</span><span style="color:#000000;">日成为</span><span style="color:#000000;">Apache </span><span style="color:#000000;">的顶级项目。作为经历过多次阿里巴巴双十一这种</span><span style="color:#000000;">“</span><span style="color:#000000;">超级工程</span><span style="color:#000000;">”</span><span style="color:#000000;">的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时高可靠等特性近年来已经也被越来越多的国内企业使用。其主要功能有</span><span style="color:#000000;">1.</span><span style="color:#000000;">灵活可扩展性、</span><span style="color:#000000;">2.</span><span style="color:#000000;">海量消息堆积能力、</span><span style="color:#000000;">3.</span><span style="color:#000000;">支持顺序消息、</span><span style="color:#000000;">4.</span><span style="color:#000000;">多种消息过滤方式、</span><span style="color:#000000;">5.</span><span style="color:#000000;">支持事务消息、</span><span style="color:#000000;">6.</span><span style="color:#000000;">回溯消费等常用功能。</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">RocketMQ <span>核心的四大组件:</span>Name Server<span>、</span>Broker<span>、</span>Producer<span>、</span>Consumer <span>,每个组件都可以部署成集群进行水平扩展。</span></span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="color:#000000;">2、适应人群</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">有一定的Java基础,并且有分布式项目开发经验。</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="color:#000000;">3、课程价值</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">可以让初学者对分布式系统解耦有一定认识,并且能够通过快速使用RocketMQ实现分布式服务的异步通信,同时本课程还会通过项目案例实战让学员对RocketMQ的应用场景有所体会,最后再通过源码角度让学员对RocketMQ的原理有所理解,不仅做到“知其然”,亦“知其所以然”。</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="color:#000000;">4、课程收获</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">1. <span style="font-size:14px;">理解消息中间件MQ的优势应用场景</span></span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">2. 掌握RocketMQ的核心功能,以及各种消息发送案例</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">3. 通过电商项目深刻理解RocketMQ在使用项目中的落地应用</span> </p> <p style="font-size:14px;color:#333333;"> <span style="color:#000000;">4. 通过RocketMQ高级功能源码学习,对RocketMQ的技术细节原理有更加透彻的理解</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span>5、课程亮点</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span>l<span style="font-size:9px;">  </span></span><span style="font-size:17px;">核心功能</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>MQ介绍</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>环境准备</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>RocketMQ高可用集群搭建</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>各种消息发送样例</span> </p> <p style="font-size:14px;color:#333333;"> <span>l<span style="font-size:9px;">  </span></span><span>综合练习</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>项目背景介绍</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>功能分析</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>项目环境搭建</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>下单功能,保证各服务的数据一致性</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>确认订单功能,通过消息进行数据分发</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>整体联调</span> </p> <p style="font-size:14px;color:#333333;"> <span>l<span style="font-size:9px;">  </span></span><span>高级功能</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>消息的存储发送</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>消息存储结构</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>刷盘机制</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>消息的同步复制异步复制</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>负载均衡</span> </p> <p style="font-size:14px;color:#333333;"> <span>l<span style="font-size:9px;">  </span></span><span>源码分析</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>路由中心NameServer</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>消息生产者Producer</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>消息存储</span> </p> <p style="font-size:14px;color:#333333;"> <span>n<span style="font-size:9px;">  </span></span><span>消息消费Consumer</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span>6、主讲内容</span></strong> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="font-size:19px;">章节一:核心功能</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span>1.<span style="font-size:9px;">     </span>快速入门</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>MQ介绍</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>作用</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>注意事项</span> </p> <p style="font-size:14px;color:#333333;"> <span>d)<span style="font-size:9px;">     </span>各MQ产品比较</span> </p> <p style="font-size:14px;color:#333333;"> <span>2.<span style="font-size:9px;">     </span>RocketMQ环境搭建</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>环境准备</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>安装RocketMQ</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>启动RocketMQ</span> </p> <p style="font-size:14px;color:#333333;"> <span>d)<span style="font-size:9px;">     </span>测试RocketMQ</span> </p> <p style="font-size:14px;color:#333333;"> <span>e)<span style="font-size:9px;">     </span>关闭RocketMQ</span> </p> <p style="font-size:14px;color:#333333;"> <span>3.<span style="font-size:9px;">     </span>RocketMQ高可用集群搭建</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>集群各角色介绍</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>集群搭建方式</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>双主双从集群搭建</span> </p> <p style="font-size:14px;color:#333333;"> <span>d)<span style="font-size:9px;">     </span>集群监控平台</span> </p> <p style="font-size:14px;color:#333333;"> <span>4.<span style="font-size:9px;">     </span>各种消息发送样例</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>同步消息</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>异步消息</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>单向消息</span> </p> <p style="font-size:14px;color:#333333;"> <span>d)<span style="font-size:9px;">     </span>顺序消息</span> </p> <p style="font-size:14px;color:#333333;"> <span>e)<span style="font-size:9px;">     </span>批量消息</span> </p> <p style="font-size:14px;color:#333333;"> <span>f)<span style="font-size:9px;">      </span>过滤消息</span> </p> <p style="font-size:14px;color:#333333;"> <span>g)<span style="font-size:9px;">     </span>事务消息</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="font-size:19px;">章节二:项目实战</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span>1.<span style="font-size:9px;">    </span>项目背景介绍</span> </p> <p style="font-size:14px;color:#333333;"> <span>(1)<span style="font-size:9px;">    </span>电商高可用MQ实战</span> </p> <p style="font-size:14px;color:#333333;"> <span>2.<span style="font-size:9px;">    </span>功能分析</span> </p> <p style="font-size:14px;color:#333333;"> <span>(1)<span style="font-size:9px;">    </span>下单功能</span> </p> <p style="font-size:14px;color:#333333;"> <span>(2)<span style="font-size:9px;">    </span>支付功能</span> </p> <p style="font-size:14px;color:#333333;"> <span>3.<span style="font-size:9px;">    </span>项目环境搭建</span> </p> <p style="font-size:14px;color:#333333;"> <span>(1)<span style="font-size:9px;">    </span>SpringBoot</span> </p> <p style="font-size:14px;color:#333333;"> <span>(2)<span style="font-size:9px;">    </span>Dubbo</span> </p> <p style="font-size:14px;color:#333333;"> <span>(3)<span style="font-size:9px;">    </span>Zookeeper</span> </p> <p style="font-size:14px;color:#333333;"> <span>(4)<span style="font-size:9px;">    </span>RocketMQ</span> </p> <p style="font-size:14px;color:#333333;"> <span>(5)<span style="font-size:9px;">    </span>Mysql</span> </p> <p style="font-size:14px;color:#333333;"> <span>4.下单功能,保证各服务的数据一致性</span> </p> <p style="font-size:14px;color:#333333;"> <span>5.确认订单功能,通过消息进行数据分发</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="font-size:19px;">章节三:高级功能</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span>1. 消息的存储发送</span> </p> <p style="font-size:14px;color:#333333;"> <span>2. 消息存储结构</span> </p> <p style="font-size:14px;color:#333333;"> <span>3. 刷盘机制</span> </p> <p style="font-size:14px;color:#333333;"> <span>(1)<span style="font-size:9px;">    </span>同步刷盘</span> </p> <p style="font-size:14px;color:#333333;"> <span>(2)<span style="font-size:9px;">    </span>异步刷盘</span> </p> <p style="font-size:14px;color:#333333;"> <span>4. 消息的同步复制异步复制</span> </p> <p style="font-size:14px;color:#333333;"> <span>5. 负载均衡</span> </p> <p style="font-size:14px;color:#333333;"> <span>(1)<span style="font-size:9px;">    </span>Producer负载均衡</span> </p> <p style="font-size:14px;color:#333333;"> <span>(2)<span style="font-size:9px;">    </span>Consumer负载均衡</span> </p> <p style="font-size:14px;color:#333333;"> <strong><span style="font-size:19px;">章节四:源码分析</span></strong> </p> <p style="font-size:14px;color:#333333;"> <span>1.<span style="font-size:9px;">     </span>路由中心NameServer</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>NameServer架构设计</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>NameServer启动流程</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>NameServer路由注册故障剔除</span> </p> <p style="font-size:14px;color:#333333;"> <span>2.<span style="font-size:9px;">     </span>消息生产者Producer</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>生产者启动流程</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>生产者发送消息流程</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>批量发送</span> </p> <p style="font-size:14px;color:#333333;"> <span>3.<span style="font-size:9px;">     </span>消息存储</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>消息存储流程</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>存储文件与内存映射</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>存储文件</span> </p> <p style="font-size:14px;color:#333333;"> <span>d)<span style="font-size:9px;">     </span>实时更新消息消费队列存储文件</span> </p> <p style="font-size:14px;color:#333333;"> <span>e)<span style="font-size:9px;">     </span>消息队列与索引文件恢复</span> </p> <p style="font-size:14px;color:#333333;"> <span>f)<span style="font-size:9px;">      </span>刷盘机制</span> </p> <p style="font-size:14px;color:#333333;"> <span>4.<span style="font-size:9px;">     </span></span><span>过期文件删除机制</span> </p> <p style="font-size:14px;color:#333333;"> <span>a)<span style="font-size:9px;">     </span>消息消费Consumer</span> </p> <p style="font-size:14px;color:#333333;"> <span>b)<span style="font-size:9px;">     </span>消费者启动流程</span> </p> <p style="font-size:14px;color:#333333;"> <span>c)<span style="font-size:9px;">      </span>消息拉取</span> </p> <p style="font-size:14px;color:#333333;"> <span>d)<span style="font-size:9px;">     </span>消息队列负载均衡重新分布机制</span> </p> <p style="font-size:14px;color:#333333;"> <span>e)<span style="font-size:9px;">     </span>消息消费过程</span> </p> <p style="font-size:14px;color:#333333;"> <span>f)<span style="font-size:9px;">      </span>定时消息机制</span> </p> <p style="font-size:14px;color:#333333;"> <span>g)<span style="font-size:9px;">     </span>顺序消息</span> </p>
©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值