RocketMQ双主双从同步集群部署

🎈 作者:互联网-小啊宇

🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护等领域。
🎈 博客首页:CSDN【互联网-小阿宇】 、阿里云【互联网-小阿宇】
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬

在这里插入图片描述

RocketMQ双主双从同步集群部署

  • 服务器环境:
  • 双主双从同步集群部署:
  • 一、安装JDK环境
    • 1.1 上传安装包
    • 1.2 解压安装包
    • 1.3 编写环境变量文件
    • 1.4 验证JDK版本
  • 二、安装RocketMQ
    • 1.1 解压安装包
    • 1.2 【192.168.8.16】修改配置文件
    • 1.3 【192.168.8.18】修改配置文件
    • 1.4 关键配置详解:
    • 1.5 启动两台服务器的nameServer
    • 1.6 分别启动两台服务器的broker的节点
      • 1.6.1 【192.168.8.16】启动a主节点、b从节点
      • 1.6.2 【192.168.8.18】启动b主节点、a从节点
    • 1.7 启动效果
    • 1.8 常用启停命令:
  • 三、rocketmq-dashboard 控制台部署
    • 1.1 下载安装包到电脑主机编写application.yml配置文件
    • 1.2 将rocketmq-dashboard-master打包
      • 1.2.1 如果主机有java环境、maven环境的直接进行打包就行
      • 1.2.2 linux安装maven进行打包
    • 1.3 启动rocketmq-dashboard 控制台
    • 1.4 开启鉴权登录

服务器环境:

服务器IP操作系统备注
192.168.8.16Centos7.5JDK(1.8+)、RocketMQ(5.1.2)
192.168.8.18Centos7.5JDK(1.8+)、RocketMQ(5.1.2)

RocketMQ下载地址:https://rocketmq.apache.org/download/

双主双从同步集群部署:

服务器IPbroker名称备注
192.168.8.16broker-aa主节点
192.168.8.16broker-b-sb从节点
192.168.8.18broker-bb主节点
192.168.8.18broker-a-sa从节点

创建安装目录并存放安装包目录

mkdir /domain

关闭防火墙、沙盒

systemctl stop firewalld  && systemctl disable firewalldvim /etc/selinux/config
#修改
ELINUX=disabled#重启
reboot

一、安装JDK环境


1.1 上传安装包

在这里插入图片描述

1.2 解压安装包

[root@localhost ~]# tar -zxf  /domain/jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/jdk1.8.0_171  /usr/local/java

1.3 编写环境变量文件

[root@localhost ~]# vim /etc/profile
#尾部添加
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
[root@localhost ~]# source /etc/profile

1.4 验证JDK版本

[root@localhost ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

二、安装RocketMQ


1.1 解压安装包

 unzip /domain/rocketmq-all-5.1.2-bin-release.zip -d /domain/

1.2 【192.168.8.16】修改配置文件

  • 修改运行内存可编辑runserver.sh与runbroker.sh(需要的修改,不需要跳过
1、bin/runserver.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1g -Xmn128m -XX:metaspaceSize=120m -XX:MaxMetaspaceSize=320m"
2、bin/runnbroker.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1G -Xmn128m"
  • 创建rocketMQ存储目录
mkdir /domain/rocketMQ
  • 修改conf目录中2m-2s-sync目录中的配置文件
vim /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-a
# 0 表示Master, > 0 表示slave
brokerId=0
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10933
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128
  • slave配置
cat /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b-s.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-b-s
# 0 表示Master, > 0 表示slave
brokerId=1
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10900
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/slave/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/slave/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/slave/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/slave/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/slave/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/slave/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SLAVE
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128

1.3 【192.168.8.18】修改配置文件

与192.168.8.16的区别在于修改的文件名不同,我把详细配置一样放在下面

  • 修改运行内存可编辑runserver.sh与runbroker.sh(需要的修改,不需要跳过
1、bin/runserver.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1g -Xmn128m -XX:metaspaceSize=120m -XX:MaxMetaspaceSize=320m"
2、bin/runnbroker.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1G -Xmn128m"
  • 创建rocketMQ存储目录
mkdir /domain/rocketMQ
  • 修改conf目录中2m-2s-sync目录中的配置文件
vim /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-b
# 0 表示Master, > 0 表示slave
brokerId=0
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10933
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128
  • slave配置
cat /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a-s.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-a-s
# 0 表示Master, > 0 表示slave
brokerId=1
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10900
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/slave/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/slave/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/slave/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/slave/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/slave/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/slave/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SLAVE
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128

1.4 关键配置详解:

brokerClusterName:只要是同一个集群里面的节点,都必须是这一个名称,可以自定义
brokerName:broker的名称,同一个broker的主从节点名称保持一致。
brokerId:broker的id标识。0:主节点,大于0都是从节点
namesrvAddr:nameSrv的注册中心地址,可以是集群模式,多个ip之间使用英文的;分隔
listenPort:监听端口,同一个ip地址下,端口不能保持一致,需修改
brokerRole:broker的角色,ASYNC_MASTER 异步复制Master,SYNC_MASTER 同步双写Master,SLAVE从节点专用。
flushDiskType:数据刷盘方式。ASYNC_FLUSH 异步刷盘,SYNC_FLUSH 同步刷盘
storePathRootDir=/usr/local/rocketMQ/store 存储路径
storePathCommitLog=/usr/local/rocketMQ/commitlog commitLog存储路径
storePathConsumeQueue=/usr/local/rocketMQ/consumequeue 消费队列存储路径
storePathIndex=/usr/local/rocketMQ/index消息索引存储路径
storeCheckpoint=/usr/local/rocketMQ/checkpoint checkpoint 文件存储路径
abortFile=/usr/local/rocketMQ/abort abort 文件存储路径

1.5 启动两台服务器的nameServer

cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqnamesrv -> namesrc.log  2>&1 &

1.6 分别启动两台服务器的broker的节点

1.6.1 【192.168.8.16】启动a主节点、b从节点

#a主节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a.properties -> broker-a.log  2>&1 &
#b从节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b-s.properties -> broker-b-s.log  2>&1 &

1.6.2 【192.168.8.18】启动b主节点、a从节点

#b主节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b.properties -> broker-b.log  2>&1 &
#a从节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a-s.properties -> broker-a-s.log  2>&1 &

1.7 启动效果

两台都一样
在这里插入图片描述

1.8 常用启停命令:

sh mqshutdown broker  停止brokersh mqshutdown namesrv 停止namesrv

三、rocketmq-dashboard 控制台部署


在这里插入图片描述

下载地址:
https://github.com/apache/rocketmq-dashboard

1.1 下载安装包到电脑主机编写application.yml配置文件

文件位置:rocketmq-dashboard-master\src\main\resources\application.yml

右键使用记事本打开
在这里插入图片描述
修改以下内容为节点IP

    namesrvAddrs:- 192.168.8.16:9876- 192.168.8.18:9876

在这里插入图片描述
编辑完成后保存退出!

1.2 将rocketmq-dashboard-master打包

1.2.1 如果主机有java环境、maven环境的直接进行打包就行

在pom.xml同级目录操作命令

mvn clean package -Dmaven.test.skip=true

如果报错,根据报错原因进行解决:

  • 有可能是maven的版本过低,进行升级即可
  • 有可能用的自己的maven配置,部分依赖无法下载,通过指定项目本身pom.xml
mvn clean package -Dmaven.test.skip=true -f C:\Desktop\rocketmq-dashboard-master\rocketmq-dashboard-master\pom.xml

打包成功后将jar包上传到服务器

1.2.2 linux安装maven进行打包

Maven工具安装:http://t.csdn.cn/IIZVH
将修改过application.yml配置的目录上传到服务器

[root@localhost rocketmq-dashboard-master]# pwd
/root/rocketmq-dashboard-master/rocketmq-dashboard-master
[root@localhost rocketmq-dashboard-master]# ls
docs  frontend  LICENSE  NOTICE  package-lock.json  pom.xml  README.md  src  style  target

maven打包

mvn clean package -Dmaven.test.skip=true -f pom.xml

成功界面:
在这里插入图片描述
如果有报错可能是因为maven版本太低,通过yum -y install maven安装版本为Apache Maven 3.0.5,版本太低导致报错,进行升级即可

1.3 启动rocketmq-dashboard 控制台

cd /root/rocketmq-dashboard-master/rocketmq-dashboard-master/target
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar -> dashboard.log  2>&1 &

查看日志成功启动:
在这里插入图片描述
关闭防火墙

方式一:建议测试环境
1、关闭防火墙。
systemctl stop firewalld
方式二:生产环境使用
1、开放指定的端口号:firewall-cmd --zone=public --add-port=8080/tcp --permanent
2、重启防火墙:firewall-cmd --reload
注意:使用方式二,就需要将nameServer 与 broker 的端口也需要开放出来。使用了那个端口就必须开放出来,否则会被防火墙给阻挡。

访问rocketmq-dashboard 控制台
访问http://ip:8080
在这里插入图片描述
在这里插入图片描述

1.4 开启鉴权登录

对resource下的application.yml文件进行编辑
在这里插入图片描述
对resource下的user.properties修改

用户名=密码,角色:1、管理员 2、普通用户
在这里插入图片描述

重新打包

cd <pom.xml同级目录>
mvn clean package -Dmaven.test.skip=true -f pom.xml

在这里插入图片描述
运行rocketmq-dashboard 控制台

cd /root/rocketmq-dashboard-master/rocketmq-dashboard-master/target

访问rocketmq-dashboard 控制台
访问http://ip:8080
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记十九:Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的pod状态第一阶段&#xff1a;第二阶段&#xff1a;扩展&#xff1a; pod重启策略测试Always重启策略正常停止容器内的tomcat服务非正常停止容器里的tomcat服务 测试never重启策略正常停止容器里的tomcat服务非正常停止容器里的tomcat服务 测试On…

Mac安装opencv后无法导入cv2的解决方法

前提条件&#xff1a;以下两个插件安装成功 pip install opencv-python pip install --user opencv-contrib-python 注&#xff1a;直接用pip install opencv-contrib-python如果报错&#xff0c;就加上“–user" 第一步&#xff1a; 设置–添加python解释器 第二步&am…

go语言恶意代码检测系统--对接前端可视化与算法检测部分

Malware Detect System 1 产品介绍 恶意代码检测系统。 2 产品描述 2.1 产品功能 功能点详细描述注册账号未注册用户注册成为产品用户&#xff0c;从而具备享有产品各项服务的资格登录账号用户登录产品&#xff0c;获得产品提供的各项服务上传恶意样本用户可以将上传自己的…

uniapp微信小程序消息订阅快速上手

一、微信公众平台小程序开通消息订阅并设置模板 这边的模板id和详细内容后续前后端需要使用 二、uniapp前端 需要是一个button触发 js&#xff1a; wx.getSetting({success(res){console.log(res)if(res.authSetting[scope.subscribeMessage]){// 业务逻辑}else{uni.request…

智安网络|深入比较:Sass系统与源码系统的差异及选择指南

随着前端开发的快速发展&#xff0c;开发人员需要使用更高效和灵活的工具来处理样式表。在这个领域&#xff0c;Sass系统和源码系统是两个备受关注的选项。 Sass系统 Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CS…

@Param详解

文章目录 背景什么是ParamParam的使用方法使用方法&#xff1a;遇到的问题及因Param解决了什么问题使用与不使用对比 Param是如何进行映射的总结 背景 最近在开发过程中&#xff0c;在写mapper接口是在参数前加了Param注解&#xff0c;但是在运行的时候就会报错&#xff0c;说…

更多openEuler镜像加入AWS Marketplace!

自2023年7月openEuler 22.03 LTS SP1正式登陆AWS Marketplace后&#xff0c;openEuler社区一直持续于在AWS上提供更多版本。 目前&#xff0c;openEuler22.03 LTS SP1 ,SP2两个版本及 x86 arm64两种架构的四个镜像均可通过AWS对外提供&#xff0c;且在亚太及欧洲15个Region开放…

wkhtmltopdf 与 .Net Core

wkhtmltopdf 是使用webkit引擎转化为pdf的开源小插件. 其有.NET CORE版本的组件,DinkToPdf,但该控件对跨平台支持有限。 故打算在Linux上安装相关插件直接调用. 准备工作 虚拟机&#xff1a;Linux version 3.10.0-1160.el7.x86_64 wkhtmltox开发包&#xff1a;wkhtmltox_0.12…

大数据Flink(六十):Flink 数据流和分层 API介绍

文章目录 Flink 数据流和分层 API介绍 一、​​​​​​​​​​​​​​Flink 数据流

ZooKeeper的应用场景(命名服务、分布式协调通知)

3 命名服务 命名服务(NameService)也是分布式系统中比较常见的一类场景&#xff0c;在《Java网络高级编程》一书中提到&#xff0c;命名服务是分布式系统最基本的公共服务之一。在分布式系统中&#xff0c;被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等一这…

iOS申请证书(.p12)和描述文件(.mobileprovision)

打包app时&#xff0c;经常会用到ios证书&#xff0c;但很多人都苦于没有苹果电脑&#xff0c;即使有苹果电脑的&#xff0c;也会觉得苹果电脑操作也很麻烦&#xff0c;这里记录一下&#xff0c;用香蕉云编&#xff0c;申请证书及描述文件的过程。 香蕉云编的地址&#xff1a;…

【C语言】每日一题(多数元素)

多数元素&#xff0c;链接奉上 方法 1.摩尔投票2.合理但错误的方法2.1暴力循环2.2排序求出中间元素中间元素 1.摩尔投票 先来简单的介绍摩尔投票&#xff1a; 摩尔投票是一种用来解决绝对众数问题的算法。 什么是绝对众数呢&#xff1f; 在一个集合中&#xff0c;如果一个元素…

每天一练:SpringBoot连接mq

目录 每天一练:Springboot连接rabbitmq 每天一练:Springboot连接rabbitmq 目录一、部署Rabbitmq&#xff1f;二、增加maven依赖三、连接RabbitMq四、发布和订阅消息总结 一、部署Rabbitmq&#xff1f; 这里rabbitmq采用docker安装部署。 拉取docker镜像 [root192 ~]# docker…

【ChatGLM】ChatGLM-6B模型Win+4GB显卡本地部署笔记

ChatGLM-6B是清华大学知识工程和数据挖掘小组发布的一个类似ChatGPT的开源对话机器人&#xff0c;由于该模型是经过约1T标识符的中英文训练&#xff0c;且大部分都是中文&#xff0c;因此十分适合国内使用。 预期环境 本机电脑备注&#xff1a; Win10专业版 32G内存256固态系统…

SAP动态安全库存简介

动态安全库存:跑需求计划时,ERP系统按设置的库存方式自动计算出满足一定时间内可保障生产的库存数量 SAP动态安全库存的计算公式:动态安全库存=平均日需求*覆盖范围。 平均日需求=特定时期内的总需求/特定时期内的工作天数 覆盖范围指在没又货物供应的情况下,库存可以维…

稀疏感知图像和体数据恢复的系统对象研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

STM32 F103C8T6学习笔记6:IIC通信__驱动MPU6050 6轴运动处理组件—一阶互补滤波

今日主要学习一款倾角传感器——MPU6050,往后对单片机原理基础讲的会比较少&#xff0c;更倾向于简单粗暴地贴代码&#xff0c;因为经过前些日子对MSP432的学习&#xff0c;对原理方面也有些熟络了&#xff0c;除了在新接触它时会对其引脚、时钟、总线等进行仔细一些的研究之外…

ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) 二、CVE-2017-15031 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) Title 未初始化或保存/恢复PMCR_EL0可能会泄露安全世界的时间信息 CVE ID CVE-2017-1503…

spark的standalone 分布式搭建

一、环境准备 集群环境hadoop11&#xff0c;hadoop12 &#xff0c;hadoop13 安装 zookeeper 和 HDFS 1、启动zookeeper -- 启动zookeeper(11,12,13都需要启动) xcall.sh zkServer.sh start -- 或者 zk.sh start -- xcall.sh 和zk.sh都是自己写的脚本-- 查看进程 jps -- 有…

星星之火:国产讯飞星火大模型的实际使用体验(与GPT对比)

#AIGC技术内容创作征文&#xff5c;全网寻找AI创作者&#xff0c;快来释放你的创作潜能吧&#xff01;# 文章目录 1 前言2 测试详情2.1 文案写作2.2 知识写作2.3 阅读理解2.4 语意测试&#xff08;重点关注&#xff09;2.5 常识性测试&#xff08;重点关注&#xff09;2.6 代码…