当前位置: 首页 > news >正文

LVS、HAProxy

集群:将很多个机器组织到一起,作为一个整体对外提供服务。集群在扩展性、性能方面都可以做到很灵活。集群的分类:负载均衡集群:Load Balance。高可用集群:High Available。高性能集群:High Performance Computing。
LVS(Linux Virtual Server):Linux虚拟服务器。实现负载均衡集群。
79df78b1d3ea4fe8a6b1f8d1333f331c.png
LVS的工作模式:NAT:网络地址转换。DR:路由模式。TUN:隧道模式。
术语:调度器:LVS服务器。真实服务器Real Server:提供服务的服务器。VIP:虚拟地址,提供给用户访问的地址。DIP:指定地址,LVS服务器上与真实服务器通信的地址。RIP:真实地址,真实服务器的地址。
调度算法共10个,常见的有:轮询rr:Real Server轮流提供服务。加权轮询wrr:根据服务器性能设置权重,权重越大得到的请求越多。最少连接lc:根据Real Server的连接数分配请求。加权最少连接wlc:类似于wrr,根据权重分配请求。
配置LVS的NAT模式:配置4台虚拟机,
01bfc6b0a07b42c782b959f5cffde3ee.png
12d48a2e901d406683220a4463938506.png
第一台为client1,eth0->192.168.88.10,网关为192.168.88.5
第二台为lvs1,eth0->192.168.88.5,eth1->192.168.99.5
第三台为web1,eth0->192.168.99.100,网关为192.168.99.5
第四台为web2,eth0->192.168.99.200,网关为192.168.99.5
关闭所有主机的防火墙
0b5cdee3667b460a8714d70acab1fafe.png
查看双网卡机器lvs的内核参数ip_forward双网卡转发是否打开0表示不允许转发数据。sysctl -a:查看全部的内核参数
1a75073d36294ab9b7a8c2dfe310629d.png
打开允许转发数据
4403d69150cf4b6a893b3c3f7d28f014.png
4b7e150c64854f4a991bd2c20f74877c.png
此时client1主机就能ping通192.168.99.100/200
cf037c0499214b968884bf48f7a25f3b.png
在web1和web2主机上安装http服务并开启该服务。systemctl enable httpd --now:开启服务并设置开机自启动。
2188e963b99f4dcbaadb2041ce793420.png
6fd593a47cc643949ba4f4458dd89e07.png
访问^100^200表示把上面命令的100换成200
378bc2a8522f46bd8bd11550e18daa00.png
a554336ff9894e90b4d7ef94e4b86d96.png
安装LVS的软件包ipvsadm
f0bf94009af24eafbdc3ba2ccf74471c.png
ipvsadm命令:-A:添加虚拟服务器。-E:编辑虚拟服务器。-D:删除虚拟服务器。-t:添加tcp服务器。-u:添加udp服务器。-s:指定调度算法,如轮询rr/加权轮询wrr/最少连接lc/加权最少连接wlc。-a:添加虚拟服务器后向虚拟服务器中加入真实服务器。-r:指定真实服务器。-w:设置权重。-m:指定工作模式为NAT。-g:指定工作模式为DR。
添加一个tcp的192.168.88.5:80服务器指定rr调度算法。
1a2afcbe713d4517a09021fe8f377029.png
ipvsadm -Ln:查看添加的虚拟服务器
85bcd9ad5d1042339c2272813b4eb52c.png
向虚拟服务器中添加真实服务器,设置权重为1,200为2,工作模式为NAT
87eda6abb19a4e919cd93200554505f8.png
查看服务器
be9259f98fad4da6a87659363ef4c542.png
在客户端测试,因为设置虚拟服务的调度算法为轮询,所以权重没有起作用。
f8bc373065994b6f9d384698821f052d.png
修改虚拟服务器的算法为加权轮询。
8017e6aec5aa46f9861829957469b54a.png
此时使用客户端访问就会出现1:2的比例。
68fd909ac2ce42d59bc5169d33be2be9.png
配置LVS的DR模式:当用户访问192.168.88.15时被调度器lvs的子接口接收到该访问,然后通过算法由本机网卡地址192.168.88.5向真实服务器的192.168.88.100/200发送命令,然后该服务器通过lo:0子接口192.168.88.15回答客户端的访问。
e2af6aac9c024dfcb26984d0ef8bfb2d.png
b1a7db6873604cbe8f37085309558e25.png
LVS主机和web服务器都是单网卡:
client1:eth0->192.168.88.10
lvs1:eth0->192.168.88.5,删除eth1的IP
b33e430bab9c4b7895f70b252e83a6e4.png
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
删除lvs虚拟服务器的配置
cecf9e100b1640d5b5336fb6a7eba7a8.png
在lvs主机添加192.168.88.15的VIP地址
vim /etc/sysconfg/network-scripts/ifcfg-eth0:0
2d18f7dc8075482baf6088a0ef45c9ce.png
修改web1的配置,配置eth0的地址为192.168.88.100
2bd9c4bf01e34c8687f73786cd8e45e4.png
63a3a62feadd432fbdaea0e61d60868f.png
修改web2的网卡
64dffed70fb24057b20e35ec51625ba9.png
配置web1的loopback网卡的子接口lo:0,虚拟网卡只有它自己所有掩码为32位。
192.168.88.15表示为自己的地址不和其他主机冲突。 95f9fc0bc17e42bea933c6ddce05cf65.png
800bd871c4484daab810ad087f7c27a2.png
然后配置web2
7f0c758221414803a1646fc05f73528f.png
在2台web服务器上配置内核参数,使他们不响应对客户端的请求192.168.88.15(由LVS调度)。
sysctl -a 
319c5705551845de87b98dac766e08b3.png
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
ca8a71fe986b42789bf1508098832a4e.png
094a8446870a4d94967e23b25bf041a9.png
e6c357bbfc3f493da2ab17cc53a6fe40.png
在lvs主机添加虚拟服务器
abadf86b5c914d4b9fe283fbf3f7ed6c.png
按ctrl+r进入搜索命令模式,输入for,按左右键
989e8e53c18542b6aed8d03eeb733b46.png
此时client主机访问192.168.88.15
01f4f44e83954ae6bead0d9c4d1b06b7.png
当web1主机出现错误
22bf13f5d3cb468ea6845ad3ea51de85.png
8696d80f72f3466b94c87c41067d7717.png
删除该服务器
2d1e537dfb09410b891896cee106053d.png
此时只有web2在服务
30b019e20b224b05a07b853998b0227c.png
使用ansible命令来配置LVS服务
在192.168.88.240主机上安装ansible软件包
aeaca8f7865f4e9bb947ffcbed39a800.png
创建工作目录,创建ansible.cfg和inventory主机清单
399b11a54b394043b482efb312472b27.png
57c69814e119440f8d4ba2329867e1ee.png
配置主机清单
6fe94e008f4f49178d29483d712b1c5a.png
因为有主机密钥检查所以连接失败
5117fc7ec7404dd99d81709916e32d96.png
不检查主机密钥
39642b3ac3c94e9c866bb7241dcbefb3.png
此时就能ping通了
d42c3ccc9c594675bc372bab4a447ded.png
配置vim。~/.vimrc
342cf7d990b14d5eba2accefca8faebc.png
配置web主机上的服务
创建index.html文件
c6e27df938da4ee0b07fd5cb11fef6d9.png
8a76d0d1c4fd40e2a5b7ab8e0ac28674.png编写剧本在web主机上下载http服务传递index.html文件并开启该服务
f60b82bdc7ff42a1a33bb80bc8fe0855.png
ac4672ca48a1442fabced57d9310635a.png
此时修改index.html文件成功
d5e5962991db4580b312ea51677370bb.png
网卡eth0:0可以拷贝到一个文件中需要时直接拷贝过去
使用sysctl模块修改内核参数
51fa2b6613d045fb9a22079b959cd9b1.png
a58c884ed9dc4285864d0000dedd5d6b.png
KeepAlived高可用集群:工作原理就是VRRP(虚拟冗余路由协议)。
a9dbffc8413144bc94d7aa5408eeaacc.png
有两个真实服务器一个虚拟服务器,用户服务器访问 虚拟服务器,虚拟服务器把数据转发给其中一个真实服务器,当该服务器出现故障时,虚拟服务器就会把数据转发给另一台完好的服务器。
配置web:web1:eth0->192.168.88.100;web2:eth0->192.168.88.200
配置keepalived在两台web服务器安装keepalived: yum -y install keepalived httpd
1e260a2d88474c2a8d2b24f71872b8f9.png
修改配置文件:/etc/keepalived/keepalived.conf
6de813dbe83545d39d1ab907336da7c8.png
router_id:设置本机在集群中的唯一标识符。
vrrp_iptables:自动配置iptables放行规则
6572be154b884902a978c1b03f231e10.png
state:状态主为MASTER备用BACKUP
interface:网卡
virtual_router_id:虚拟路由器地址
priority:优先级
advert_int:发送心跳消息的间隔
auth_type:认证类型为共享密码
auth_pss:集群中的机器密码相同才能成为集群
192.168.88.80/24:VIP地址。
8e8f305ec96e4e32b826f6fc0339ffef.png
启动服务
b4c6228ea01b4b7296689d530c75c69f.png
b8edfdea1af745e8a5a20d0b2c080b8f.png
当访问192.168.88.80其实就是访问的web1主机
99f760fe3039443ab07898e3d22c948b.png
配置web2
1ea0e37762e84c20a81421b80efb8185.png
修改标识符web2、状态为BACKUP、优先级为80
d44b9ff76d8d46189ed5bfae142a937c.png
4c2c5610a74f4db498ec3e15320dcb4a.png
重启
524d897ee9a442048181f5656f429f31.png
因为该设备为备用设备,虚拟IP活跃在主设备中,所以没有192.168.88.80的VIP。
c6b14a5a640e4802b97f707065fd7924.png
搭建高可用、负载均衡的web集群:
client1:eth0->192.168.88.10
lvs1:eth0->192.168.88.5
lvs2:eth0->192.168.88.6
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
关闭web服务器的keepalived
4127d095ba7d4f959b4449e7732a31d3.png
c395774005d040f69a4d50982a58f027.png
在两台web服务器的lo上配置VIP
63a39ce64091497fa4106394570cd69b.png
7835260f3dd9431fac58a94a76c8d9de.png
在两台web服务器上配置内核参数
97ca80c34b2948c885fb41d043630ff6.png
4a10dde800fb493783b1e73cf34533c2.png
删除lvs1的eth0:0,VIP由keepalived接管。
a605d8acc04c4f538fbff8dd55f32063.png
删除lvs1的LVS规则。LVS规则由keepalived创建
b29612de77884803b2ab130f5cff267d.png
在两台lvs服务器上安装keepalived和ipvsadm
43ecfada77de49cd88f3f5f2e006a701.png
3ac70fcc18d14f39aacaa3c2da9c98ca.png
配置lvs服务器的keepalived
ef77f95b53bb4fc3912391a082c262e9.png
d99e71f0ea7b49b7ab2a0b73c6534133.png
配置LVS规则
virtual_server 192.168.88.16 80:声明虚拟服务器地址和端口号
delay_loop 6:健康检查延迟6秒开始
lb_algo wrr:调度算法为wrr
lb_kind DR:工作模式为DR
persistence_timeout 50:50秒内相同客户端调度到相同服务器
protocol TCP:协议为TCP
real_server 192.168.88.100 80:声明真实服务器
weight 1:权重
TCP_CHECK:通过TCP协议对真实服务器做健康检查
connect_timeout 3:连续超时时间为3秒
nb_get_retry 3:3次访问失败则认为真实服务器故障
delay_before_retry 3:两次检查时间间隔为3秒
32c27ccdc7964799af7cd09b53bba488.png
此时还没有LVS规则
71dd737d196847e2ab71984561cb30d9.png
开启服务
683e5c42c9864072bc5a1a9115ec266c.png
此时就显示LVS规则
f68c1274fa0b4fcc99b59897d4ff49fe.png
此时client访问192.168.88.16就能轮询web服务器
0c12075ab1cf4c26a2348a7b613b12aa.png
因为设置了persistence_timeout 50:在50秒内访问同一服务器,所以会一直访问web2
43deed49689e4105808aa80bff0602c6.png
df81e26a10554dec892f25e8eab1b7db.png
注释该行重启服务,此时就能以权重响应web服务器
11f51fffa5c34e31b7d5bdd397ae4588.png
e408cd6a1b0043e5afb1e02b71414836.png
7c00ad49b40942c196fdccf74fe4ca22.png
当关闭web1的http服务
69ff2d5e5403437c8455ee10959d3954.png
此时客户端访问就只有web2在响应了
d2c5b0aee9c647dcac64bfbf37fe8176.png
LVS规则自动更新,把出故障的服务器暂时从LVS规则中去掉。
3011cedcd07e42f4bd8840298649b9c8.png
当开启web1服务
9f6524463e814c85b49d4291d552d8ab.png
客户端访问会重新加入web1服务
82a65042cd254c67a62c4b2a2869cfeb.png
LVS规则也会自动更新
de3149508f05418c8c8cd98dbd5e612a.png
修改lvs2主机的keepalived配置
97e6168075694bd29b26f77a757b966d.png
26eb589edff947fbb75649876b8e0684.png
ae64e23d9a0747e2a8ce1ee837dc6d3a.png
重启服务,
70bcf0c7107043e18bbb41795bc92f98.png
当关闭lvs1的keepalived服务
021b8743548f4a51b76f95b2b02cb86c.png
此时lvs2的VIP就会自动开启
a0f803ccc70142769f0226c35f2c5d0d.png
此时客户端也能正常访问
afc80a517e6e49d5baf2f4851dad652a.png
开启lvs1的keepalived时lvs2的VIP会自动隐藏不启用。
3d412c6bbd7f455096724206f966d0e1.png
HAProxy:也是一款实现负载均衡的调度器。适用与负载特别大的web站点。(所有web服务器都需要经过haproxy调度服务器)
HAProxy工作模式:
mode http:只适用于web服务
mode tcp:适用与各种服务
mode health:仅做健康检查,很少使用
a325faa85ed147ecbcec4ef25331bc90.png
环境准备:不需要VIP
client1:eth0->192.168.88.10
HAProxy:eth0->192.168.88.5
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
把lvs1的keepalived和ipvsadm卸载,修改主机名为HAProxy
dbad58d4ced0450f8a921e4e920f5eba.png
a1461b7542224a8aba37b7fa6740f682.png
安装haproxy软件包
72d86f8502694ab3bcdab2a651d66f9f.png
修改haproxy配置文件
da86eebfc25d4efdbc457e1ab98c01e3.png
配置文件中global是全局配置,default是缺省配置,如果后续有和default相同的配置,default配置会被覆盖。
27506a8c59ce497491de7631c757bc13.png
5a436ae5c2d8497081380259c5ba928c.png
配置文件中,frontend描述haproxy怎么和用户交互,backend描述haproxy怎么和后台应用服务器交互,这两个选项一般不单独使用,而是合并到一起,名为listen。
eb6426c7be3c4557995d8c75ab7bfcff.png
将63以下全部删除,添加listen
listen myweb 0.0.0.0:80:定义虚拟服务器,监听在所有可用地址的80端口
balance roundrobin:定义轮询调度算法
server web1 192.168.88.100 check inter 2000 rise 2 fall 5:对web服务器做健康检查,2秒检查一次,如果连续两次检查成功,认为服务器是健康的,如果连续5次检查失败则认为服务器坏了。
9fcf932402c44034a43a7072c1305cb5.png
开启haproxy服务
c6569546dcd445ea95e812eb62a1d06b.png
查看haproxy的状态
dd9b576d7cf643c7b2ab028605722133.png
40ecc7ab5bcc4ab1949229130caf98e6.png
重新启动服务,此时就能轮询访问web服务器了
6b5bb59fd5334a59a3dce4cc650b03fc.png
配置虚拟服务器监听1080端口用来监控haproxy
stats refresh 30s:设置监控页面自动刷新时间为30秒
stats uri /stats:定义监控地址为/stats
stats auth admin:admin:监控页面的用户名和密码都是admin
103ead0256d949d8905504023e87728f.png
重启服务
fe9b4f60b80a4ea5a875b578438a8a99.png
此时就能访问监控页面,需要登录用户
d2c89cdae1c94ebb819c03ca7af2416b.png
9b34858f5a774ecbb9288e01ff5f9389.png
web服务器的背景代表着不同的状态
16b989d9b9034c0d8da35e110449ec67.png
Queue:队列长度。Cur当前队列长度;Max最大队列长度;Limit限制长度
Session rate:会话率,每秒钟的会话数
Session:会话数
Bytes:字节数。ln收到的字节数,Out发出的字节数
Denied:拒绝。Req请求,Resp响应
Errors:错误
Warring:警告
Status:状态
LastChk:上一次检查。L4Ok第四层tcp检查通过
Wght:权重
在客户端下载httpd-tools软件包,使用ab命令访问调度器查看其负载状况
268d7abebcb04e079aa3dda825673a49.png
0d656ebeba444a4d98710584b38c96fc.png
3313a6d143bd4fbd87afd132b45223eb.png
使用ansible自动化来搭建HAproxy+keepalived集群
修改主机清单
ccc693add4764f4b97d428ebb6e54687.png
d54aa31d63e045ac9c712a7c6ee0f11a.png
卸载keepalived和ipvsadm软件包
2cfd562648074c34b02559de4d0aaaff.png
编辑config-haproxy.yml,安装HAProxy软件包
c747f487763d4f19a83c9c79607e0ce1.png
将haproxy1的haproxy配置文件拷贝到file目录中
070b4930553e48a89963cf69602e7c79.png
5923d80ab57a496e923725d50e7dcd8c.png
拷贝haproxy配置文件开启服务
6921a574be2248cda512818710a63f3f.png
7b08cb346c40499bb9cd10011e6eeb35.png
查看lvs2
1cd67f5db0714cf3a319b3d2388cfbf5.png
此时lvs2调度服务器了
56b0cdb2cd784f2294ce14a11c21f578.png
使用ansible配置keepalived的服务
把/etc/keepalived/keepalived.cfg文件拷贝到file目录下面
cd64327a7a1a4afaa66a530c058f1044.png
编辑keepalived.cfg,其余的删除
9bb374fcad27425abc49c4dbd1c05909.png
在主机清单中定义变量
ae4123c3ef834aa8905d85acfc88f22f.png编辑config-haproxy.yml
6c9ef40eb9f34767a40b24d3cff297dd.png
运行该剧本
69743c42605d4978baf9edaee02161b8.png
此时haproxy1就成为了mater主设备,lvs2成为了从设备
09553501520f4eeaa8f8051e62abc889.png
86024445c8704a8585b0e519da8e2137.png
57cfc21833f8458e9984f6601081c54d.png
负载均衡调度器比较:LVS适用于需要高并发和稳定性的场景;Nginx适用于静态文件服务和反向代理、应用层负载均衡等场景;HAProxy则具备较为丰富的功能和灵活性,适用于多种负载场景。
LVS
优点
高性能:LVS使用Linux内核中的IP负载均衡技术,能够实现非常高的并发处理能力。
稳定性:LVS经过长时间的实践应用,成熟稳定被广泛使用。
可用性:支持高可用的配置,可以实现故障自动切换,提供无中断服务。
灵活性:可根据需要采用多种负载均衡算法,如轮询、加强轮询、哈希等。
缺点
配置复杂:相对于其他两个技术,LVS的配置相对较为复杂,需要更深入的了解和配置
功能相对局限:LVS主要是一种传输层负载均衡技术,无法像Nginx和HAProxy那样对应用层协议进行处理。
Nginx
优点
高性能:Nginx采用了基于事件驱动和异步非阻塞架构,能够处理大量并发连接。
负载均衡:Nginx具备内置的负载均衡功能,可以根据配置进行请求的转发。
丰富的功能:Nginx支持反向代理、静态文件服务、缓存、SSL等,在web服务器领域有很广泛的应用。
缺点
功能相对较少:相对LVS和HAProxy,Nginx在负载均衡算法和健康检查等方面的功能相对较少。
限制于应用层协议:Nginx只能对HTTP和HTTPS等应用层协议进行处理,无法处理其他协议。
HAProxy
优点
灵活性:HAProxy支持丰富的负载均衡算法和会话保存方式,可以根据需求进行灵活配置。
完整的功能:HAProxy支持高可用性配置、健康检查、故障恢复、SSL等功能,在负载均衡领域应用广泛。
高性能:HAProxy性能优良,能够处理大量并发连接,并且支持异步IO模型。
缺点
内存占用:相对于Nginx和LVS,HAProxy在处理大量连接时消耗的内存稍高一些
高可用性:HAProxy需要借助额外的工具来实现高可用性,例如keepalived

相关文章:

LVS、HAProxy

集群:将很多个机器组织到一起,作为一个整体对外提供服务。集群在扩展性、性能方面都可以做到很灵活。集群的分类:负载均衡集群:Load Balance。高可用集群:High Available。高性能集群:High Performance Com…...

开发环境->生产环境

1、数据迁移 不涉及docker # 以数据库用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u abragent -pabragebb17 abragent > abragent.sql# 以root用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u root -p8d3Ba1b abragent > abragent.sql 涉及docker …...

基于AI智能识别技术的智慧展览馆视频监管方案设计

一、建设背景 随着科技的不断进步和社会安全需求的日益增长,展览馆作为展示文化、艺术和科技成果的重要场所,其安全监控系统的智能化升级已成为当务之急。为此,旭帆科技(TSINGSEE青犀)基于视频智能分析技术推出了展览…...

Leetcode-894-所有可能的真二叉树-c++

题目详见https://leetcode.cn/problems/all-possible-full-binary-trees/ 主搞动态规划,因为这玩意儿我还不是很懂 关于节点个数为奇数偶数的证明请见官方题解方法一中的如下内容: 这里DP的一个主要思想是:对于任何一个满二叉树&#xff…...

Django DRF视图

文章目录 一、DRF类视图介绍APIViewGenericAPIView类ViewSet类ModelViewSet类重写方法 二、Request与ResponseRequestResponse 参考 一、DRF类视图介绍 在DRF框架中提供了众多的通用视图基类与扩展类,以简化视图的编写。 • View:Django默认的视图基类&…...

SQLite全文搜索引擎:实现原理、应用实践和版本差异

文章目录 一、实现原理1.1 倒排索引1.2 虚拟表 二、应用在工程上的实施方法2.1 创建FTS虚拟表2.2 插入数据2.3 全文搜索2.4 关联普通表2.5 更新和删除数据2.6 优化FTS虚拟表2.7 小结 三、FTS3、FTS4和FTS5的区别3.1 FTS33.2 FTS43.3 FTS53.4 小结 四、更新SQLite的FTS版本的步骤…...

day17-二叉树part04

110.平衡二叉树 (优先掌握递归)后序遍历 左右中 class Solution {public boolean isBalanced(TreeNode root) {return getHeight(root) ! -1;}//递归三部曲 确定方法的参数与返回值private int getHeight(TreeNode root){//明确终止条件if(root null){r…...

书生浦语第一次课

模型的发展 从专业模型到通用模型 书生浦语大模型全链路开源体系 2023.06.07 -> InternLM千亿参数语言大模型发布 2023.07.06 -> InternLM千亿参数语言大模型全面升级,支持8K语境、26种语言。全面开源、免费商用:InternLM-7B、全链条开源工具…...

UE小:UE5.3无法创建C++工程

当您在使用Unreal Engine (UE) 构建项目时,如果遇到以下问题: Running C:/Program Files/Epic Games/UE\_5.3/Engine/Build/BatchFiles/Build.bat -projectfiles -project"C:/UEProject/Shp\_1/Shp\_1.uproject" -game -rocket -progress Usi…...

FFmpeg获取视频详情

话不多说&#xff0c;直接上代码&#xff1a; pom依赖&#xff1a; <!--视频多媒体工具包 包含 FFmpeg、OpenCV--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.3</versi…...

find: paths must precede expression

find: paths must precede expression 1. find: paths must precede expression2. 请在搜索字符串上添加单引号或者双引号References 1. find: paths must precede expression strongforeverstrong:~/ForeverStrong$ find /home/strong/ForeverStrong/image_results/ -name *.…...

RabbitMQ3.x之九_Docker中安装RabbitMQ

RabbitMQ3.x之_Docker中安装RabbitMQ 文章目录 RabbitMQ3.x之_Docker中安装RabbitMQ1. 官网2. 安装1 .拉取镜像2. 运行容器 3. 访问 1. 官网 rabbitmq - Official Image | Docker Hub 2. 安装 1 .拉取镜像 docker pull rabbitmq:3.13.0-management2. 运行容器 # latest Rabb…...

vue快速入门(四)v-html

注释很详细&#xff0c;直接上代码 上一篇 新增内容 使用v-html将文本以html的方式显示 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …...

第19次修改了可删除可持久保存的前端html备忘录:换了一个特别的倒计时时钟

第19次修改了可删除可持久保存的前端html备忘录:换了一个特别的倒计时时钟 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><met…...

C++ 2024-4-1 作业

#include <iostream> using namespace std;class A { public:int a;A(int a):a(a){cout<<"A的有参构造"<<endl;} }; class B:virtual public A { public:int b;B(int a,int b):A(a),b(b){cout<<"B的有参构造"<<endl;} }; cl…...

【滑动窗口】Leetcode 串联所有单词的子串

题目解析 30. 串联所有单词的子串 本题的意思就是在目标串s中寻找能够找到的words字符串的全排列&#xff0c;返回起始位置 算法讲解 我们可以将这道题转化为寻找目标串的words字母的异位词&#xff0c;按照上一次讲解的【滑动窗口】Leetcode 找到字符串中所有字母异位词我们…...

golang channel实践代码及注意事项

在使用Go语言&#xff08;Golang&#xff09;的通道&#xff08;Channel&#xff09;时&#xff0c;有几个重要的注意点可以帮助开发者更安全、高效地使用它们进行并发编程。以下是一些关键的注意事项&#xff1a; 选择正确的通道类型&#xff1a;Go语言提供了两种类型的通道&…...

面试题:RabbitMQ 消息队列中间件

1. 确保消息不丢失 生产者确认机制 确保生产者的消息能到达队列&#xff0c;如果报错可以先记录到日志中&#xff0c;再去修复数据持久化功能 确保消息未消费前在队列中不会丢失&#xff0c;其中的交换机、队列、和消息都要做持久化消费者确认机制 由spring确认消息处理成功后…...

wpf中引用自定义字体

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;FontFamily属性用于指定控件或文本元素使用的字体。它是一个非常基础且重要的属性&#xff0c;影响着用户界面的视觉呈现和可读性。以下是关于WPF中FontFamily属性的一些关键信息和使用方法&#x…...

高效准确!指甲剪盖片视觉检测技术解密

指甲剪的盖片是指指甲剪的一端&#xff0c;通常用来盖住另一端的刀刃部分。指甲剪盖片是指甲剪的重要部分&#xff0c;除了保护刀刃外&#xff0c;还起到美观和便捷的作用。正确使用和保养指甲剪盖片可以延长指甲剪的使用寿命。 本案是对指甲剪盖片最大尺寸长75mm*宽10mm*高3mm…...

分布式IO模块PLC扩展模拟量模块

BL200是一款结构紧凑、体积小的分布式IO耦合器,支持ModbusTCP协议,采用嵌入式硬件,主频380Mhz,基于LinuxOS,采用独特的MAC层数据交换技术的双网口技术实现级联,中间设备宕机不影响后面设备的数据传输,可支持高达32个AI、DI、DO、热电阻、热电偶、RS485等种类的IO板,广泛应用于工…...

Qt事件系统

第三章Qt事件系统 文章目录 第三章Qt事件系统1.事件系统事件是如何传递的事件类型事件处理发送事件 2.事件传播机制事件接受和忽略事件分发事件过滤 3.事件和信号的区别 1.事件系统 在Qt中&#xff0c;事件是派生抽象QEvent类的对象&#xff0c;它表示应用程序内发生的事情&am…...

C++STL--排序算法

sort 使用快速排序,平均性能好O(nlogn),但最差情况可能很差O(n^2)。不稳定。 sort(v.begin(),v.end());//对v容器进行排序,默认升序 sort(v.begin(),v.end(),greater<int>());//降序排序对于支持随机访问的迭代器的容器&#xff0c; 都可以利用sort算法直接对其进行排序…...

CEF的了解

(14 封私信 / 80 条消息) CEF和Electron的区别是什么&#xff1f; - 知乎 (zhihu.com) Electron面向的开发者&#xff1a;会用JavaScript,HTML,CSS&#xff0c;不会C CEF面向的开发者&#xff1a;会用JavaScript,HTML,CSS&#xff0c;会C (14 封私信 / 80 条消息) liulun - …...

基于OrangePi Zero2的智能家居项目(开发阶段)

智能家居项目的软件实现 紧接上文 基于OrangePi Zero2的智能家居项目&#xff08;准备阶段&#xff09;-CSDN博客 目录 一、项目整体设计 1.1项目整体设计 1.2具体划分 二、开发工作的前期准备 1、进行分类&#xff0c;并用Makefile文件进行管理 参考&#xff1a;自己创…...

数据结构记录

之前记录的数据结构笔记&#xff0c;不过图片显示不了了 数据结构与算法(C版) 1、绪论 1.1、数据结构的研究内容 一般应用步骤&#xff1a;分析问题&#xff0c;提取操作对象&#xff0c;分析操作对象之间的关系&#xff0c;建立数学模型。 1.2、基本概念和术语 数据&…...

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台

背景 Kubeflow 是一种开源的 Kubernetes 原生框架&#xff0c;可用于开发、管理和运行机器学习工作负载&#xff0c;支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架&#xff0c;本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。 注意&#xff1a;本文以 …...

kettle使用MD5加密增量获取接口数据

kettle使用MD5加密增量获取接口数据 场景介绍&#xff1a; 使用JavaScript组件进行MD5加密得到Http header&#xff0c;调用API接口增量获取接口数据&#xff0c;使用json input组件解析数据入库 案例适用范围&#xff1a; MD5加密可参考、增量过程可参考、调用API接口获取…...

PS入门|黑白色的图标怎么抠成透明背景

前言 抠图可以算是PS的入门必备操作&#xff0c;开始学习PS的小伙伴可以根据本帖子推荐一步步学习哦&#xff01;但切勿心急&#xff5e; 今天给小伙伴们带来&#xff1a;黑白色的图标抠图教程 抠图有很多种方法&#xff0c;但根据类型的不同&#xff0c;使用适当的方法很重…...

android 14 apexd分析(2)apexd 启动

1. class main进程一起启动&#xff0c; apexservice是他提供的binderservice&#xff0c;这也第二阶段的最主要的作用 /system/apex/apexd/apexd.rc?r3c8e8603c640fc41e0406ddcf981381803447cfb#1 1 service apexd /system/bin/apexd 2 interface aidl apexservice …...

五金批发网站怎么做/seo网页优化工具

原文https://github.com/lyhue1991/eat_tensorflow2_in_30_days 1、张量 程序 数据结构算法。 TensorFlow程序 张量数据结构 计算图算法语言 张量和计算图是 TensorFlow的核心概念。 Tensorflow的基本数据结构是张量Tensor。张量即多维数组。Tensorflow的张量和numpy中…...

wordpress 微信/上海app网络推广公司

如何来通过JavaScript来进行图片本地压缩作者&#xff1a;张国军_Suger开发工具与关键技术&#xff1a;HTML、JavaScript有些时候我们需要一些HTML页面进行图片的本地压缩&#xff0c;下面直接上一下代码&#xff0c;希望可以帮到大家。<!DOCTYPE html><html> <…...

毕设做购物网站容易吗/seo一键优化

泛型&#xff1a;为了让集合能够记住集合内元素各个类型&#xff0c;且能够达到只要编译时不出现问题&#xff0c;运行时就不会出现类型异常的解决方案。 泛型又从称为参数化类型&#xff0c;是一种编译时类型安全检测机制&#xff0c;类型参数的魅力在于使得程序具有可读性和…...

广南网站建设/网络优化基础知识

本文由曹素杰&#xff08;阿里云 MVP 石化盈科信息技术有限责任公司 高级工程师&#xff09;提供&#xff0c;若使用请标明出处。 内存溢出的表现&#xff1a;a) CPU会飙升到100%&#xff0c;如果是多核则乘以核数b) 日志中会出现OutOfMemoryError 分析原因步骤&#xff1a;a) …...

怎么做网站的导航/百度网站收录查询

一、联合查询在两种情况下可能用到&#xff1a;1、想要的结果在一条语句中会引起逻辑冲突&#xff0c;只能放在两条语句中是要使用联合查询2、一张表的数据量非常大时&#xff0c;会分隔成多张表存储&#xff0c;要查询时也要用到联合查询使用时要注意&#xff1a;1&#xff0c…...

手机网站优化指南/优秀营销软文范例300字

C# 中一切都是对象&#xff0c;对于文件操作&#xff0c;主要有两个静态类&#xff0c;分别是&#xff1a;File 和 Directory。 1. File 操作文件&#xff0c;静态类&#xff0c;对文件进行操作。拷贝、删除、剪切&#xff1b;2. Directory 操作目录&#xff08;文件夹&#…...