Docker容器:docker consul的注册与发现及consul-template守护进程
文章目录
- 一.docker consul的注册与发现介绍
- 1.什么是服务注册与发现
- 2.什么是consul
- 3.docker consul的应用场景
- 4.consul提供的一些关键特性
- 5.数据流向
- 二.consul部署
- 1.consul服务器(192.168.198.12)
- (1)建立 Consul 服务
- 启动consul后默认会监听5个端口
- (2)查看集群信息
- (3)通过 http api 获取集群信息
- 2.registrator服务器(192.168.198.11)
- (1)安装 Gliderlabs/Registrator
- (2)测试服务发现功能是否正常
- (3)验证 http 和 nginx 服务是否注册到 consul
- 三.consul-template守护进程
- 1.consul-template介绍
- 2.Consul-Template作用
- 四.consul-template配置
- 1.准备 template nginx 模板文件
- 2.编译安装nginx
- 3.配置 nginx
- 4.配置并启动 template
- 5.访问 template-nginx
- 6.增加一个 nginx 容器节点
- (1)增加一个 nginx 容器节点,测试服务发现及配置更新功能。
- (2)查看/usr/local/nginx/conf/vhost/kgc.conf 文件内容
- (3)查看三台 nginx 容器日志,请求正常轮询到各个容器节点上
- 五.consul 多节点
一.docker consul的注册与发现介绍
1.什么是服务注册与发现
(1)服务注册与发现是微服务架构中不可或缺的重要组件。
(2)为解决服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问的问题
2.什么是consul
(1)consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。
(2)采用Raft算法,用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。
(3)服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server 和 client。 每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。
(4)在client模式下,所有注册到当前节点的服务会被转发到server节点,本身是不持久化这些信息。
(5)在server模式下,功能和client模式相似,唯一不同的是,它会把所有的信息持久化到本地,这样遇到故障,信息是可以被保留的。
server-leader是所有server节点的老大,它和其它server节点不同的是,它需要负责同步注册的信息给其它的server节点,同时也要负责各个节点的健康监测。
3.docker consul的应用场景
(1)服务发现:Consul可以帮助容器化的应用程序找到和连接到其他服务实例。当新的服务实例启动或停止时,Consul会自动更新服务目录,使得其他应用可以动态地发现和使用这些服务。
(2)配置管理:Consul允许将配置信息存储在集中的键值存储中,应用程序可以通过API从该存储库中读取配置。这样做可以使得配置信息与应用程序代码分离,方便进行配置的版本控制和管理。
(3)健康检查:Consul可以定期对服务进行健康检查,如果某个服务实例发生故障或不可用,Consul会自动将其从服务目录中移除,避免请求被发送到不可用的实例。
(4)一致性协议:Consul通过提供一致性协议来保证数据的强一致性。这使得多个节点之间可以同步数据,并在网络分区情况下提供正确的读写操作。
总:在大型网站、微服务中应用,Docker Consul可以用于构建高可用、灵活、可扩展的分布式系统,降低服务之间的依赖关系,提高系统的健壮性和可维护性。
4.consul提供的一些关键特性
(1)服务注册与发现:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。
(2)健康检查:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。
(3)Key/Value存储:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。
(4)多数据中心:无需复杂的配置,即可支持任意数量的区域。
安装consul是用于服务注册,也就是容器本身的一些信息注册到consul里面,其他程序可以通过consul获取注册的相关服务信息,这就是服务注册与发现。
总:服务的端口+IP放入到sock中,通过自动发现添加自动模块(包括自动发现新的机器、自动更新状态,为容器提供服务出添加、删除)
5.数据流向
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HtAInoxr-1692840104710)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230824092029846.png)]](https://img-blog.csdnimg.cn/04efe59e0bda41a78aca3c6bf56cd641.png)
nginx服务会把信息(IP+端口号)写入到sock,regitrator自动发现监听sock(docker sock是docker节点服务里的)中的数据是否有新的数据,一旦sock中有新的数据会将数据写入到consul服务器中,consul会注册信息(名称、IP、端口)
二.consul部署
| 服务器 | 地址 | 搭建服务 |
|---|---|---|
| consul服务器 | 192.168.198.12 | 运行consul服务、nginx服务、consul-template守护进程 |
| registrator服务器 | 192.168.198.11 | 运行registrator容器、运行nginx容器 |
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X9pRZOt3-1692702596113)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822190044336.png)]](https://img-blog.csdnimg.cn/db3e886c1ecd4ac3a2d052335bd9e134.png)
#两台机器关闭防火墙
systemctl stop firewalld.service
setenforce 0
1.consul服务器(192.168.198.12)
本台可不需要安装docker
hostnamectl set-hostname consul-server
su
(1)建立 Consul 服务
#创建consul服务目录
mkdir /opt/consul
cd /opt/consul
#将consul_0.9.2_linux_amd64.zip安装包导入创建的目录下
#解压压缩包
unzip consul_0.9.2_linux_amd64.zip
#将解压的文件移动到后台
mv consul /usr/local/bin/
#设置代理,在后台启动 consul 服务端
consul agent \
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.198.12 \
> -client=0.0.0.0 \
> -node=consul-server01 &> /var/log/consul.log &
注释:
-server: 以server身份启动。默认是client。
-bootstrap :用来控制一个server是否在bootstrap模式,在一个数据中心中只能有一个server处于bootstrap模式,当一个server处于 bootstrap模式时,可以自己选举为 server-leader。
-bootstrap-expect=2 :集群要求的最少server数量,当低于这个数量,集群即失效。
-ui :指定开启 UI 界面,这样可以通过 http://localhost:8500/ui 这样的地址访问 consul 自带的 web UI 界面。
-data-dir :指定数据存储目录。
-bind :指定用来在集群内部的通讯地址,集群内的所有节点到此地址都必须是可达的,默认是0.0.0.0。
-client :指定 consul 绑定在哪个 client 地址上,这个地址提供 HTTP、DNS、RPC 等服务,默认是 127.0.0.1。
-node :节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名。
-datacenter :指定数据中心名称,默认是dc1。
#查看启动的服务端口
netstat -antp|grep consul
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gPo3z43K-1692702596114)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822102552838.png)]](https://img-blog.csdnimg.cn/0de9dddeef9848d7a1e850331222e82c.png)
启动consul后默认会监听5个端口
注释:
启动consul后默认会监听5个端口:
8300:replication(代表副本同步)、leader (领导者)farwarding(转发的端口)——对内开放
8301:lan cossip的端口——内部同一数据中心端口通信
8302:wan gossip的端口——不通数据中心端口通信
8500:web ui界面的端口——对外开放的web端口,用户http接口和web
8600:使用dns协议查看节点信息的端口,用于已注册的服务发现
(2)查看集群信息
#查看members状态
consul members
Node Address Status Type Build Protocol DC
consul-server01 192.168.198.12:8301 alive server 0.9.2 2 dc1
#查看集群状态
consul operator raft list-peers
Node ID Address State Voter RaftProtocol
consul-server01 192.168.198.12:8300 192.168.198.12:8300 leader true 2consul info | grep leaderleader = trueleader_addr = 192.168.198.12:8300
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QimKu6yT-1692702596114)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822160934260.png)]](https://img-blog.csdnimg.cn/a7a475c9ce1c48e0b27b726e04b05784.png)
(3)通过 http api 获取集群信息
#查看集群server成员
curl 127.0.0.1:8500/v1/status/peers
#集群 server-leader
curl 127.0.0.1:8500/v1/status/leader
#注册的所有服务
curl 127.0.0.1:8500/v1/catalog/services
#查看 nginx 服务信息
curl 127.0.0.1:8500/v1/catalog/nginx
#集群节点详细信息
curl 127.0.0.1:8500/v1/catalog/nodes
2.registrator服务器(192.168.198.11)
需提前安装docker容器并下载好镜像
docker pull centos:7
hostnamectl set-hostname registrator
su
容器服务自动加入 Nginx 集群
(1)安装 Gliderlabs/Registrator
Gliderlabs/Registrator 可检查容器运行状态自动注册,还可注销 docker 容器的服务到服务配置中心。目前支持 Consul、Etcd 和 SkyDNS2。
docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
--ip=192.168.198.11 \
consul://192.168.198.12:8500
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F28B0yC3-1692702596115)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822162134694.png)]](https://img-blog.csdnimg.cn/121dcdb1f1d94d9bb9c95315cc0db522.png)
注释:
–net=host :把运行的docker容器设定为host网络模式。
-v /var/run/docker.sock:/tmp/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中。
–restart=always :设置在容器退出时总是重启容器。
–ip :刚才把network指定了host模式,所以我们指定ip为宿主机的ip。consul :指定consul服务器的IP和端口。
(2)测试服务发现功能是否正常
#-h:设置容器主机名
docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
docker run -itd -p:88:80 --name test-03 -h test03 httpd
docker run -itd -p:89:80 --name test-04 -h test04 httpd
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJPy7aah-1692702596116)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822163122770.png)]](https://img-blog.csdnimg.cn/9ff7e62152254812a26f2320c4cb17c0.png)
(3)验证 http 和 nginx 服务是否注册到 consul
浏览器中,输入http://192.168.198.12:8500,在 Web 页面中“单击 NODES”,然后单击“consurl-server01”,会出现 5 个服务。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLEagREg-1692702596116)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822163322030.png)]](https://img-blog.csdnimg.cn/6f12d509afb54e01874196ea2b793bdf.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-49ZqW08F-1692702596117)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822163521755.png)]](https://img-blog.csdnimg.cn/8b7d8eecc66d4e98bd65a6df5898753d.png)
#在consul服务器使用curl测试连接服务器
curl 127.0.0.1:8500/v1/catalog/services
{"consul":[],"httpd":[],"nginx":[]}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJvZbvql-1692702596117)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822163829813.png)]](https://img-blog.csdnimg.cn/43d1a745e00646a69788c05348c6b11d.png)
三.consul-template守护进程
1.consul-template介绍
(1)Consul-Template是基于Consul的自动替换配置文件的应用。
(2)Consul-Template是一个守护进程,用于实时查询Consul集群信息,并更新文件系统上任意数量的指定模板,生成配置文件。更新完成以后,可以选择运行 shell 命令执行更新操作,重新加载 Nginx。
2.Consul-Template作用
Consul-Template可以查询Consul中的服务目录、Key、Key-values 等。这种强大的抽象功能和查询语言模板可以使 Consul-Template 特别适合动态的创建配置文件。例如:创建Apache/Nginx Proxy Balancers 、 Haproxy Backends等。
四.consul-template配置
1.准备 template nginx 模板文件
在consul服务器上操作
vim /opt/consul/nginx.ctmpl
#定义nginx upstream一个简单模板
upstream http_backend {{{range service "nginx"}}
server {{.Address}}:{{.Port}};
{{end}}
}#定义一个server,监听8000端口,反向代理到upstream
server {listen 8000;server_name localhost 192.168.198.12;access_log /var/log/nginx/sky.com-access.log; #修改日志路径#如果此处是java需index.jspindex index.html index.php;location / {proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://http_backend;}
}
2.编译安装nginx
在consul服务器上操作
#下载相关依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#创建一个用户名为 "nginx" 的用户
useradd -M -s /sbin/nologin nginx
#将nginx压缩包导入并解压到/opt/目录下
tar zxvf nginx-1.12.0.tar.gz -C /opt/
#编译安装nginx
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make -j && make install
#做软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
3.配置 nginx
在consul服务器上操作
vim /usr/local/nginx/conf/nginx.conf
......
http {include mime.types;include vhost/*.conf; #添加虚拟主机目录default_type application/octet-stream;
......
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UFGaqhhp-1692702596117)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822165832448.png)]](https://img-blog.csdnimg.cn/18e8f54eb5784108a1698a1a627a0932.png)
#创建虚拟主机目录
mkdir /usr/local/nginx/conf/vhost
#创建日志文件目录
mkdir /var/log/nginx
#启动nginx
nginx
4.配置并启动 template
在consul服务器上操作
#将consul-template_0.19.3_linux_amd64.zip导入到/opt/下解压
unzip consul-template_0.19.3_linux_amd64.zip -d /opt/
cd /opt/
mv consul-template /usr/local/bin/
#在前台启动 template 服务,启动后不要按 ctrl+c 中止 consul-template 进程。
consul-template --consul-addr 192.168.198.12:8500 \
--template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/sky.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info
#另外打开一个终端查看生成配置文件
vim /usr/local/nginx/conf/vhost/sky.conf
upstream http_backend {server 192.168.198.11:83;server 192.168.198.11:84;}#定义一个server,监听8000端口,反向代理到upstream
server {listen 8000;server_name localhost 192.168.198.12;access_log /var/log/nginx/sky.com-access.log; #修改日志路径index index.html index.php;location / {proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://http_backend;}
}
5.访问 template-nginx
在registrator服务器上操作
docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fdb1057cebe httpd "httpd-foreground" About an hour ago Up About an hour 0.0.0.0:89->80/tcp, :::89->80/tcp test-04
7e791b32cfa3 httpd "httpd-foreground" About an hour ago Up About an hour 0.0.0.0:88->80/tcp, :::88->80/tcp test-03
610fa76283c6 nginx "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:84->80/tcp, :::84->80/tcp test-02
dbb68e20f583 nginx "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:83->80/tcp, :::83->80/tcp test-01
762a01222cf2 gliderlabs/registrator:latest "/bin/registrator --…" About an hour ago Up About an hour registrator
docker exec -it dbb68e20f583 bash
echo "this is test1 web" > /usr/share/nginx/html/index.html
exit
docker exec -it 610fa76283c6 bash
echo "this is test2 web" > /usr/share/nginx/html/index.html
exit
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TOijQHWM-1692702596117)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822174210664.png)]](https://img-blog.csdnimg.cn/6aa24e24b9864d0f96832c337993caf1.png)
浏览器访问:http://192.168.198.12:8000/,并不断刷新。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7DeH5CA-1692702596118)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822174238517.png)]](https://img-blog.csdnimg.cn/81641e68563744738b4b55523afa054f.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O9ikaNb9-1692702596118)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822174248468.png)]](https://img-blog.csdnimg.cn/9892882c852f45ac98e7c59ac467045d.png)
6.增加一个 nginx 容器节点
(1)增加一个 nginx 容器节点,测试服务发现及配置更新功能。
在registrator服务器上操作
docker run -itd -p:85:80 --name test-05 -h test05 nginx
#观察 template 服务,会从模板更新/usr/local/nginx/conf/vhost/skyconf 文件内容,并且重载 nginx 服务。
(2)查看/usr/local/nginx/conf/vhost/kgc.conf 文件内容
在consul服务器上操作
cat /usr/local/nginx/conf/vhost/sky.confupstream http_backend {server 192.168.198.11:83;server 192.168.198.11:84;server 192.168.198.11:85;}
(3)查看三台 nginx 容器日志,请求正常轮询到各个容器节点上
在registrator服务器上操作
在浏览器不断刷新,查看日志
docker logs -f test-01
docker logs -f test-02
docker logs -f test-05
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDD8aLHW-1692702596118)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822175050038.png)]](https://img-blog.csdnimg.cn/faf301f2946e4c7eb2b0fc487202a924.png)
五.consul 多节点
在服务器192.168.198.13操作
先要安装consul
scp /usr/local/bin/consul 192.168.198.13:/usr/local/bin/
consul --version
#添加一台已有docker环境的服务器192.168.198.13/24加入已有的群集中
consul agent \
-server \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.198.13 \
-client=0.0.0.0 \
-node=consul-server02 \
-enable-script-checks=true \
-datacenter=dc1 \
-join 192.168.198.12 &> /var/log/consul.log &
注释:
-enable-script-checks=true :设置检查服务为可用
-datacenter : 数据中心名称-join :加入到已有的集群中
consul members

consul operator raft list-peers

consul info | grep leader

http://192.168.198.12:8500查看是否存在第二台consul
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zbk6Aj6W-1692702596119)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230822183644659.png)]](https://img-blog.csdnimg.cn/8771d1b09a9a48619b918b94d0fc37d2.png)
docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:85:80 --name test-1 -h test1 nginx

netstat -natp | grep consul

查看server中的consul第二台添加的服务
http://192.168.198.12:8500/ui/#/dc1/nodes/consul-server01

相关文章:
Docker容器:docker consul的注册与发现及consul-template守护进程
文章目录 一.docker consul的注册与发现介绍1.什么是服务注册与发现2.什么是consul3.docker consul的应用场景4.consul提供的一些关键特性5.数据流向 二.consul部署1.consul服务器(192.168.198.12)(1)建立 Consul 服务启动consul后…...
Blazor 依赖注入妙用:巧设回调
文章目录 前言依赖注入特性需求解决方案示意图 前言 依赖注入我之前写过一篇文章,没看过的可以看看这个。 C# Blazor 学习笔记(10):依赖注入 依赖注入特性 只能Razor组件中注入所有Razor组件在作用域注入的都是同一个依赖。作用域可以看看我之前的文章。 需求 …...
Python 基础 -- Tutorial(三)
7、输入和输出 有几种方法可以表示程序的输出;数据可以以人类可读的形式打印出来,或者写入文件以备将来使用。本章将讨论其中的一些可能性。 7.1 更花哨的输出格式 到目前为止,我们已经遇到了两种写值的方法:表达式语句和print()函数。(第三种方法是使…...
基于STM32的四旋翼无人机项目(二):MPU6050姿态解算(含上位机3D姿态显示教学)
前言:本文为手把手教学飞控核心知识点之一的姿态解算——MPU6050 姿态解算(飞控专栏第2篇)。项目中飞行器使用 MPU6050 传感器对飞行器的姿态进行解算(四元数方法),搭配设计的卡尔曼滤波器与一阶低通滤波器…...
微信小程序开发教学系列(1)- 开发入门
第一章:微信小程序简介与入门 1.1 简介 微信小程序是一种基于微信平台的应用程序,可以在微信内直接使用,无需下载和安装。它具有小巧、高效、便捷的特点,可以满足用户在微信中获取信息、使用服务的需求。 微信小程序采用前端技…...
Nginx虚拟主机(server块)部署Vue项目
需求 配置虚拟主机,实现一个Nginx运行多个服务。 实现 使用Server块。不同的端口号,表示不同的服务;同时在配置中指定,Vue安装包所在的位置。 配置 Vue项目,放在 html/test 目录下。 config中的配置如下…...
JAVA开发环境接口swagger-ui使用总结
一、前言 swagger-ui是java开发中生产api说明文档的插件,这是后端工程师和前端工程师联调接口的桥梁。生成的文档就减少了很多没必要的沟通提高开发和测试效率。 二、 swagger-ui的使用 1、引入maven依赖 <dependency><groupId>io.springfox</grou…...
mongodb 数据库管理(数据库、集合、文档)
目录 一、数据库操作 1、创建数据库 2、删除数据库 二、集合操作 1、创建集合 2、删除集合 三、文档操作 1、创建文档 2、 插入文档 3、查看文档 4、更新文档 1)update() 方法 2)replace() 方法 一、数据库操作 1、创建数据库 创建数据库…...
分布式与集群的定义及异同
分布式与集群的定义及异同 分布式定义优点不足 集群优点不足 异同 分布式 定义 分布式是指将一个系统或应用程序分散到多个计算机或服务器上进行处理和管理的技术。它是指多个系统协同合作完成一个特定任务的系统。例如,可以将一个大业务拆分成多个子业务…...
电脑端teams一直在线小程序,简单好用易上手
居家办公的你,会不会想要摸鱼!!会不会想要下楼拿快递!!会不会想要出去下馆子!!!然而,teams的5分钟不操作电脑状态就变为离开大大的阻挡了你幸福生活的脚步!&a…...
YOLOv5算法改进(4)— 添加CA注意力机制
前言:Hello大家好,我是小哥谈。注意力机制是近年来深度学习领域内的研究热点,可以帮助模型更好地关注重要的特征,从而提高模型的性能。在许多视觉任务中,输入数据通常由多个通道组成,例如图像中的RGB通道或…...
无涯教程-PHP - XML GET
XML Get已用于从xml文件获取节点值。以下示例显示了如何从xml获取数据。 Note.xml 是xml文件,可以通过php文件访问。 <SUBJECT><COURSE>Android</COURSE><COUNTRY>India</COUNTRY><COMPANY>LearnFk</COMPANY><PRICE…...
Spark Standalone环境搭建及测试
🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 篇一:Linux系统下配置java环境 篇二:hadoop伪分布式搭建(超详细) 篇三:hadoop完全分布式集群搭建(超详细…...
【PHP】流程控制-ifswitchforwhiledo-whilecontinuebreak
文章目录 流程控制顺序结构分支结构if分支switch分支 循环结构for循环while循环do-while循环continue和break 流程控制 顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构) 分支结构:给定一个条件,…...
Pytorch-day04-模型构建-checkpoint
PyTorch 模型构建 1、GPU配置2、数据预处理3、划分训练集、验证集、测试集4、选择模型5、设定损失函数&优化方法6、模型效果评估 #导入常用包 import os import numpy as np import torch from torch.utils.data import Dataset, DataLoader from torchvision.transfor…...
使用Xshell7控制多台服务同时安装ZK最新版集群服务
一: 环境准备: 主机名称 主机IP 节点 (集群内通讯端口|选举leader|cline端提供服务)端口 docker0 192.168.1.100 node-0 2888 | 3888 | 2181 docker1 192.168.1.101 node-1 2888 | 388…...
python numpy array dtype和astype类型转换的区别
Python3 本身对整数的支持做了提升,可以支持无限长度的整数:比如: b 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffPython的模块numpy array定义的数组在windows和MACOS上默认长度是…...
浮动属性样式
🍓浮动属性 属性名称中文注释备注float设置盒子浮动left左浮动,right右浮动,none不浮动clear清除浮动left清除左浮动,right清除右浮动,both左右浮动都清除(注意:clear清除浮动一般只有作用在块…...
keepalived双机热备 (四十五)
一、概述 Keepalived 是一个基于 VRRP 协议来实现的 LVS 服务高可用方案,可以解决静态路由出现的单点故障问题。 原理 在一个 LVS 服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器…...
SpringBoot整合阿里云OSS,实现图片上传
在项目中,将图片等文件资源上传到阿里云的OSS,减少服务器压力。 项目中导入阿里云的SDK <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version>…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
