ActiveMQ消息队列主从集群

news2024/12/28 5:09:17

文章目录

    • 1.ActiveMQ消息队列主从集群模式
      • 1.1.主从集群架构
      • 1.2.环境规划
    • 2.部署ActiveMQ主从高可用集群
      • 2.1.部署Zookeeper集群
        • 2.1.1.搭建Zookeeper三节点
        • 2.1.2.配置Zookeeper三节点
        • 2.1.3.配置Zookeeper各个节点的myid
        • 2.1.4.启动Zookeeper集群
      • 2.2.部署ActiveMQ主从集群
        • 2.2.1.部署ActiveMQ三节点
        • 2.2.2.配置ActiveMQ各个节点的TCP协议通信端口以及消息持久化类型
        • 2.2.3.配置ActiveMQ各节点WEB后台管理系统的端口号
        • 2.2.4.启动ActiveMQ集群
    • 3.在Zookeeper上查询ActiveMQ主节点
    • 4.访问ActiveMQ集群
    • 5.程序连接ActiveMQ集群的方式
    • 6.模拟ActiveMQ主节点宕机验证是否会故障切换

1.ActiveMQ消息队列主从集群模式

1.1.主从集群架构

ActiveMQ集群模式官方文档:https://activemq.apache.org/clustering

ActiveMQ的主从集群是主从+高可用集群,主节点提供服务,备用节点同步主节点数据,当主节点挂掉后,备用节点接替主节点完成消息的传递。

ActiveMQ消息队列想要实现消息的复制,官方给出的解决方案是使用RAID磁盘、SAN、共享存储、主从集群、JDBC数据库等等。

ActiveMQ主从高可用集群,需要使用Zookeeper集群注册所有的ActiveMQ节点,由Zookeeper实现主备切换时的选举,在主从高可用集群中,只有一个ActiveMQ节点处于工作状态,被视为Master节点,其他的ActiveMQ节点处于待机状态,当主节点挂掉后,Zookeeper会通过选举机制将集群中的某个ActiveMQ节点提升为Master,继续提供服务。

在ActiveMQ集群中,客户端只能连接Master不能连接Slave,Slave会连接Master并同步存储状态,也就是同步消息数据,Slave不接收客户端的连接,所有的存储操作都会被复制到连接Master的Slave节点上,每个Slave都会同步Master上的数据。

在ActiveMQ集群中,当Master点击后,最新同步更新的Slave会被提升为Master节点,故障的原Master节点在恢复后重新加入到集群时,会连接现有Master节点并进入Slave模式,不会直接顶替现有Master工作。

由于ActiveMQ集群引入了Zookeeper集群,因此集群中的节点数至少为3台,Zookeeper选举过程当选Master的票数一定要大于其他节点才可以选举成功,如果集群中只有1个Slave,那么将无法选举,当Master挂掉后,还剩下2台Slave,由Zookeeper选举其中一台为Master。

img

1.2.环境规划

Zookeeper集群地址ActiveMQ集群Web端口ActiveMQ集群协议端口
192.168.81.210:2181192.168.81.210:8161192.168.81.210:61616
192.168.81.210:2182192.168.81.210:8162192.168.81.210:61617
192.168.81.210:2183192.168.81.210:8163192.168.81.210:61618

2.部署ActiveMQ主从高可用集群

2.1.部署Zookeeper集群

Zookeeper集群主要负责ActiveMQ节点的选举,Zookeeper集群会选举出一个主节点leader,然后随机选举出ActiveMQ其中一个节点作为ActiveMQ的Master,提供消息服务,其余Slave节点处于待机状态。

2.1.1.搭建Zookeeper三节点

1.解压zookeeper二进制文件
[root@activemq ~]# tar xf zookeeper-3.4.6.tar.gz 

2.规划zookeeper安装目录
[root@activemq ~]# mkdir /data/zookeeper_cluster/{zookeeper_2181,zookeeper_2182,zookeeper_2183}/{data,datalogs} -p
[root@activemq ~]# tree /data/zookeeper_cluster/
/data/zookeeper_cluster/
├── zookeeper_2181
│   ├── data
│   └── datalogs
├── zookeeper_2182
│   ├── data
│   └── datalogs
└── zookeeper_2183
    ├── data
    └── datalogs

3.部署zookeeper三节点
[root@activemq ~]# cp -rp  zookeeper-3.4.6/* /data/zookeeper_cluster/zookeeper_2181/
[root@activemq ~]# cp -rp  zookeeper-3.4.6/* /data/zookeeper_cluster/zookeeper_2182/
[root@activemq ~]# cp -rp  zookeeper-3.4.6/* /data/zookeeper_cluster/zookeeper_2183/

image-20220307223525550

2.1.2.配置Zookeeper三节点

1.zookeeper-2181节点
[root@activemq ~]# cd /data/zookeeper_cluster/zookeeper_2181/conf
[root@activemq conf]# cp zoo_sample.cfg zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181			#zookeeper端口号	
dataDir=/data/zookeeper_cluster/zookeeper_2181/data				#数据目录
dataLogDir=/data/zookeeper_cluster/zookeeper_2181/datalogs			#日志目录
server.1=192.168.81.210:2881:3881							#集群通信地址
server.2=192.168.81.210:2882:3882
server.3=192.168.81.210:2883:3883

2.zookeeper-2182节点
[root@activemq ~]# cp /data/zookeeper_cluster/zookeeper_2181/conf/zoo.cfg /data/zookeeper_cluster/zookeeper_2182/conf/
[root@activemq ~]# vim /data/zookeeper_cluster/zookeeper_2182/conf/zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2182
dataDir=/data/zookeeper_cluster/zookeeper_2182/data
dataLogDir=/data/zookeeper_cluster/zookeeper_2182/datalogs
server.1=192.168.81.210:2881:3881
server.2=192.168.81.210:2882:3882
server.3=192.168.81.210:2883:3883

3.zookeep-2183节点
[root@activemq ~]# cp /data/zookeeper_cluster/zookeeper_2181/conf/zoo.cfg /data/zookeeper_cluster/zookeeper_2183/conf/
[root@activemq ~]# vim /data/zookeeper_cluster/zookeeper_2183/conf/zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2183
dataDir=/data/zookeeper_cluster/zookeeper_2183/data
dataLogDir=/data/zookeeper_cluster/zookeeper_2183/datalogs
server.1=192.168.81.210:2881:3881
server.2=192.168.81.210:2882:3882
server.3=192.168.81.210:2883:3883

2.1.3.配置Zookeeper各个节点的myid

[root@activemq ~]# echo 1 > /data/zookeeper_cluster/zookeeper_2181/data/myid
[root@activemq ~]# echo 2 > /data/zookeeper_cluster/zookeeper_2182/data/myid
[root@activemq ~]# echo 3 > /data/zookeeper_cluster/zookeeper_2183/data/myid

2.1.4.启动Zookeeper集群

1.启动各个zookeeper节点
[root@activemq ~]# /data/zookeeper_cluster/zookeeper_2181/bin/zkServer.sh start
JMX enabled by default
Using config: /data/zookeeper_cluster/zookeeper_2181/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@activemq ~]# /data/zookeeper_cluster/zookeeper_2182/bin/zkServer.sh start
JMX enabled by default
Using config: /data/zookeeper_cluster/zookeeper_2182/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@activemq ~]# /data/zookeeper_cluster/zookeeper_2183/bin/zkServer.sh start
JMX enabled by default
Using config: /data/zookeeper_cluster/zookeeper_2183/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

2.查看各个节点的状态
[root@activemq ~]# /data/zookeeper_cluster/zookeeper_2181/bin/zkServer.sh status
JMX enabled by default
Using config: /data/zookeeper_cluster/zookeeper_2181/bin/../conf/zoo.cfg
Mode: follower
[root@activemq ~]# /data/zookeeper_cluster/zookeeper_2182/bin/zkServer.sh status
JMX enabled by default
Using config: /data/zookeeper_cluster/zookeeper_2182/bin/../conf/zoo.cfg
Mode: leader					#leader为主节点
[root@activemq ~]# /data/zookeeper_cluster/zookeeper_2183/bin/zkServer.sh status
JMX enabled by default
Using config: /data/zookeeper_cluster/zookeeper_2183/bin/../conf/zoo.cfg
Mode: followe

image-20220307224123783

2.2.部署ActiveMQ主从集群

2.2.1.部署ActiveMQ三节点

1.解压activemq二进制文件
[root@activemq ~]# tar xf apache-activemq-5.16.4-bin.tar.gz 

2.规划zookeeper安装目录
[root@activemq ~]# mkdir /data/activemq_cluster/{activemq_8161,activemq_8162,activemq_8163} -p

3.部署activemq三节点
[root@activemq ~]# cp -rp apache-activemq-5.16.4/* /data/activemq_cluster/activemq_8161/
[root@activemq ~]# cp -rp apache-activemq-5.16.4/* /data/activemq_cluster/activemq_8162/
[root@activemq ~]# cp -rp apache-activemq-5.16.4/* /data/activemq_cluster/activemq_8163/

image-20220307232218722

2.2.2.配置ActiveMQ各个节点的TCP协议通信端口以及消息持久化类型

每个节点都有单独的通信地址,故障切换后可以直接切换。

1.ActiveMQ-8161节点
[root@activemq ~]# vim /data/activemq_cluster/activemq_8161/conf/activemq.xml 
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="prod-activemq-cluster" dataDirectory="${activemq.data}">		#40行修改,同一个集群中的brkername要保持一致

        <persistenceAdapter>						#86行添加,注释掉默认的kahadb持久化
                <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3" 
                bind="tcp://0.0.0.0:61616"
                zkAddress="192.168.81.210:2181,192.168.81.210:2182,192.168.81.210:2183"
                hostname="192.168.81.210"
                zkPath="/activemq/leveldb-stores"/>
        </persistenceAdapter>

2.ActiveMQ-8162节点
[root@activemq ~]# cp /data/activemq_cluster/activemq_8161/conf/activemq.xml /data/activemq_cluster/activemq_8162/conf/activemq.xml
[root@activemq ~]# vim /data/activemq_cluster/activemq_8162/conf/activemq.xml
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="prod-activemq-cluster" dataDirectory="${activemq.data}">		

        <persistenceAdapter>						
                <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3" 
                bind="tcp://0.0.0.0:61617"
                zkAddress="192.168.81.210:2181,192.168.81.210:2182,192.168.81.210:2183"
                hostname="192.168.81.210"
                zkPath="/activemq/leveldb-stores"/>
        </persistenceAdapter>
        
3.ActiveMQ-8163节点
[root@activemq ~]# cp /data/activemq_cluster/activemq_8161/conf/activemq.xml /data/activemq_cluster/activemq_8163/conf/activemq.xml
[root@activemq ~]# vim /data/activemq_cluster/activemq_8163/conf/activemq.xml
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="prod-activemq-cluster" dataDirectory="${activemq.data}">		

        <persistenceAdapter>						
                <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3" 
                bind="tcp://0.0.0.0:61618"
                zkAddress="192.168.81.210:2181,192.168.81.210:2182,192.168.81.210:2183"
                hostname="192.168.81.210"
                zkPath="/activemq/leveldb-stores"/>
        </persistenceAdapter>

image-20220307233331538

2.2.3.配置ActiveMQ各节点WEB后台管理系统的端口号

每个节点都有独立的后台管理系统页面,从节点不提供服务,只同步数据。

1.ActiveMQ-8161节点
[root@activemq ~]# vim /data/activemq_cluster/activemq_8161/conf/jetty.xml 
    <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="host" value="0.0.0.0"/>
        <property name="port" value="8161"/>
    </bean>

2.ActiveMQ-8162节点
[root@activemq ~]# vim /data/activemq_cluster/activemq_8162/conf/jetty.xml 
    <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="host" value="0.0.0.0"/>
        <property name="port" value="8162"/>
    </bean>
    
3.ActiveMQ-8163节点
[root@activemq ~]# vim /data/activemq_cluster/activemq_8163/conf/jetty.xml 
    <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="host" value="0.0.0.0"/>
        <property name="port" value="8163"/>
    </bean>

2.2.4.启动ActiveMQ集群

[root@activemq ~]# /data/activemq_cluster/activemq_8161/bin/activemq start
INFO: Loading '/data/activemq_cluster/activemq_8161//bin/env'
INFO: Using java '/usr/local/jdk1.8.0_131/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/data/activemq_cluster/activemq_8161//data/activemq.pid' (pid '21002')

[root@activemq ~]# /data/activemq_cluster/activemq_8162/bin/activemq start
INFO: Loading '/data/activemq_cluster/activemq_8162//bin/env'
INFO: Using java '/usr/local/jdk1.8.0_131/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/data/activemq_cluster/activemq_8162//data/activemq.pid' (pid '21085')

[root@activemq ~]# /data/activemq_cluster/activemq_8163/bin/activemq start
INFO: Loading '/data/activemq_cluster/activemq_8163//bin/env'
INFO: Using java '/usr/local/jdk1.8.0_131/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/data/activemq_cluster/activemq_8163//data/activemq.pid' (pid '21176')

image-20220307233959673

集群搭建完毕后会在ActiveMQ安装目录的data目录中增加一个leveldb的目录,存放持久化数据。

image-20220307234143535

3.在Zookeeper上查询ActiveMQ主节点

ActiveMQ集群部署完毕后,会在Zookeeper中注册各个节点的信息,并且会显示谁是主节点,一般来说,集群中第一个启动的ActiveMQ节点就是Master节点。

1.进入zookeeper控制台
[root@activemq ~]# /data/zookeeper_cluster/zookeeper_2181/bin/zkCli.sh -server 192.168.81.210:2182

2.查看activemq生成的key
[zk: 192.168.81.210:2182(CONNECTED) 0] ls /activemq/leveldb-stores
[00000000006, 00000000004, 00000000005]			
#生成了三个可以,每一个节点对应一个key

3.查看key的内容,key中address字段有值,就表示该节点是activemq集群中的主节点,程序中需要配置这个节点进行消息的传递
[zk: 192.168.81.210:2182(CONNECTED) 1] get /activemq/leveldb-stores/00000000006
{"id":"prod-activemq-cluster","container":null,"address":null,"position":-1,"weight":1,"elected":null}
cZxid = 0x200000033
ctime = Mon Mar 07 23:45:34 CST 2022
mZxid = 0x200000033
mtime = Mon Mar 07 23:45:34 CST 2022
pZxid = 0x200000033
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x37f64d22b200001
dataLength = 102
numChildren = 0

[zk: 192.168.81.210:2182(CONNECTED) 2] get /activemq/leveldb-stores/00000000004
{"id":"prod-activemq-cluster","container":null,"address":"tcp://192.168.81.210:61617","position":-1,"weight":1,"elected":"0000000004"}
cZxid = 0x200000020
ctime = Mon Mar 07 23:39:39 CST 2022
mZxid = 0x20000002f
mtime = Mon Mar 07 23:39:48 CST 2022
pZxid = 0x200000020
cversion = 0
dataVersion = 6
aclVersion = 0
ephemeralOwner = 0x27f64d221800000
dataLength = 134
numChildren = 0

[zk: 192.168.81.210:2182(CONNECTED) 3] get /activemq/leveldb-stores/00000000005
{"id":"prod-activemq-cluster","container":null,"address":null,"position":-1,"weight":1,"elected":null}
cZxid = 0x20000002a
ctime = Mon Mar 07 23:39:47 CST 2022
mZxid = 0x20000002d
mtime = Mon Mar 07 23:39:47 CST 2022
pZxid = 0x20000002a
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x27f64d221800001
dataLength = 102
numChildren = 0

image-20220307235310412

4.访问ActiveMQ集群

在Zookeeper集群中查询到ActiveMQ的主节点是61617端口,61617端口就是第二个MQ节点,对应的WEB后台管理系统的端口号为8162。

image-20220308000108768

5.程序连接ActiveMQ集群的方式

server:
  port: 9001
spring:
  activemq:
    broker-url: failover:(tcp://192.168.81.210:61616,tcp://192.168.81.210:61617,tcp://192.168.81.210:61618)

6.模拟ActiveMQ主节点宕机验证是否会故障切换

模拟ActiveMQ主节点宕机,观察是否会由集群中另外的从节点,升级为主节点。

1)停止8162主ActiveMQ节点

[root@activemq ~]# /data/activemq_cluster/activemq_8162/bin/activemq stop

2)观察是否会故障迁移

已经由8161端口的节点成为了主节点。

image-20220308210028293

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

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

相关文章

解决90%面试问题!GitHub顶级“Java面试手册“了解下八股文天花板

前言 身为java开发工程师的你找到自己满意的工作了吗?又或者还在面试的路上经历一次又一次的失败。迟迟找不到正确的开门砖&#xff0c;也许你的技术能力可能并不差但就是在面试上得不到充分的证明。 而那些成功拿下自己满意的开发工作的人又是怎样做到的呢?我这一路走来也有…

2023下半年杭州/广州/深圳软考(中/高级)认证,进入备考

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

Svg基本使用

1.说明 双闭合标签&#xff0c;默认宽度和高度300*150 svg绘制图形务必在svg标签内使用 ,可以通过样式设置宽高 svg与canvas区别就是它并不是图片 2.绘制直线 2.1代码展示 <linex1"100"y1"100"x2"500"y2"100"stroke"pink…

网络安全行业,面对供大于求的现状是怎么样的呢?

一、网络安全行业市场发展情况 网络时代生活越来越离不开网络&#xff0c;与此同时发生的网络安全攻击事件、非法入侵等等一系列事件都威胁着普通人的生活。没有网络安全保障&#xff0c;个人和企业等重要领域都暴露在风险之中。 二、网络安全行业人才发展需求 网络安全行业至…

【算法题】剪绳子、计算二进制中1的个数、数值的整数次方

剪绳子、计算二进制中1的个数、数值的整数次方 一、剪绳子1.1、题目描述1.2、思路1.3、代码实现&#xff1a;1.4、华丽的快速幂取余1.5、小结 二、数值的整数次方2.1、题目描述2.2、思路2.3、代码实现2.4、小结 三、计算二进制中1的个数3.1、题目描述3.2、思路3.3、代码实现3.4…

Kafka最基础使用

一、概念 2、应用场景 异步处理系统解耦流量削峰日志处理 3、消息队列的两种模式 点对点模式 消息发送者生产消息发送到消息队列中&#xff0c;然后消息接收者从消息队列中取出并且消费消息。消息被消费以后&#xff0c;消息队列中不再有存储&#xff0c;所以消息接收者不可…

(一)CSharp-网络编程

一、OSI 参考模型 &#xff08;1&#xff09;物理层 作为原始的位流或电气处理。 &#xff08;2&#xff09;数据链路层 负责建立、维持和释放数据链路的连接。 &#xff08;3&#xff09;网络层 选择合适的网间路由和交换结点&#xff0c;以确保数据及时传送。网络层将数据…

Flutter性能优化的一些路径思考

不可否认 Flutter 是一个非常强大的移动应用开发框架&#xff0c;我们在技术架构选型时就是选用的 Flutter&#xff0c;特别是跨端能力属实很优秀&#xff0c;but 也逐渐发现在复杂的应用程序实现中&#xff0c;App 的性能会受到一些影响。 其实这个问题&#xff0c;我们内部…

如何用Dialog DA1468X DK PRO测试其他板子的电流

2021.09.27 Jim 目录 工具准备... 1 PC上位机安装... 1 打开PC上位机... 1 消除DA1468X开发板本身底电流... 2 测试待测板子的功耗... 3 电压调节... 4 跳线帽... 6 工具准备 DA1468X DK PRO开发板一套&#xff0c;不需要装顶板的小板子&#xff0c;只需要母板&#…

「缤纷色彩的饼状图」:通过使用matplotlib库绘制饼状图,让读者期待在这个色彩缤纷的图表中探索数据的美丽。

嘿&#xff0c;大家好&#xff01;今天我要带你们探索一个有趣的话题&#xff1a;使用matplotlib库绘制饼状图。虽然这听起来可能有些复杂&#xff0c;但我会用轻松幽默的语言给大家讲解&#xff01;准备好了吗&#xff1f;让我们开始吧&#xff01; 首先&#xff0c;我们需要导…

人工智能的奥秘:机器学习的各大门派

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。 文章分类在学习摘录和笔记专…

2023网络安全 -- 正向连接与反向连接

一、正向连接&#xff0c;Linux服务器主动控制windows服务器 1、上传nc到windows服务器上运行 2、以管理员身份运行cmd 3、执行下面命令&#xff0c;监听任意来自8899端口的数据&#xff0c;等待服务器来连接 nc -e cmd -lvvp 8899 4、Linux服务器执行如下命令&#xff0c;i…

解决USB设备PC不识别问题思路(亲测方案)

前言&#xff1a; 因环境是集控封锁USB端口的&#xff0c;所以刚碰到用户出现此问题&#xff0c;一般都认为是策略封堵拒绝了&#xff0c;但经过后面测试及权限查看是没问题的&#xff0c;所以深究一看&#xff0c;完全是USB设备都没有被PC主机识别的问题。按常规我们一般碰到这…

渗透怎么学?渗透测试中超全的提权思路来了!

提权Webshell&#xff1a;尽量能够获取webshell&#xff0c;如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本&#xff1b;或者利用漏洞&#xff08;系统漏洞&#xff0c;服务器漏洞&#xff0c;第三方软件漏洞&#xff0c;数据库漏洞&#xff09;来获取shell。 …

webpack3 打包vue项目导致app体积过大

问题说明&#xff1a;打包导致 js 很大&#xff0c;然后访问特别慢。 Q&#xff1a;如果你的 js 达到了好几M&#xff0c;&#xff08;除了个别情况&#xff0c;比如的代码量真的超级大到不行&#xff0c;其实这个本身就不成立&#xff09;。我最开始就是&#xff0c;打包了我…

CSDN个性化推荐系统-负反馈测试

文章目录 前言一、uc不感兴趣标签过滤测试1.uc不感兴趣标签获取(uc_unlike_tag_list)1.1个人中心界面1.2从标签中可以发现什么&#xff1f;1.3与研发确认点1.4设计开发1.5接口获取结果 2.推荐流文章标签获取(tag_list)2.1部分代码2.2基本标签校验2.3基本标签校验结果 3.推荐流u…

Linux——DNS域名解析服务

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。 个人主页&#xff1a;小李会科技的…

【③MySQL 数据查询】:提高查询的效率

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL数据查询的讲解&#xff08;基本、分组、排序、聚合、分页、条件查询&#xff09; 目录 前言一、基本查询二、条件查询三、聚合函数(统计函数)四、分组查询五、排序查询五、分页查询六、总结 一、基本查询 MySQ…

海格里斯HEGERLS仓储设备高端定制|四向穿梭车立体库仓储的重要设备换层提升机

随着科技的快速发展&#xff0c;仓储物流行业已慢慢的朝着无人化、自动化和智能化方向快速发展&#xff0c;用户的需求量也随之日益提升。自动化立体库早已成为很多企业智能仓的标配&#xff0c;可以实现仓库高层合理化、存取自动化、操作简便化。在立体仓库内&#xff0c;高位…

基于SQL Server数据库的安全性对策探究

数据库进阶课程论文 题 目&#xff1a;基于SQL Server数据库的安全性对策探究 作者姓名&#xff1a; 作者学号&#xff1a; 专业班级&#xff1a; 提交时间&#xff1a; 2023/6/4 目 录 1概述 1 2 SQL Server数据库的安全问题 1 2&#xff0e;1以使用者身份进入数据库 1 2&a…