LVS实验(实现服务器集群的负载均衡)

server/2024/12/23 1:33:23/

基本概念

LVS(Linux Virtual Server)是Linux虚拟服务器的简称。

LVS通过将一个真实服务器集群虚拟成一台服务器来对外提供服务,同时在集群内部实现负载均衡。这种技术能够显著提高服务的处理能力和可靠性,降低单台服务器的负载压力。终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。

LVS基于内核网络层工作,有着超强的并发处理能力,单台LVS可以承受上万的并发连接。LVS是基于4层的负载均衡软件,因此LVS在所有负载均衡软件中性能最强,稳定性最高,消耗CPU和内存少。LVS是工作在4层,所以它可以对应用层的所有协议作负载均衡,包括http、DNS、ftp等。

工作原理

LVS的工作原理基于内核网络层,通过负载调度器(Director Server)接收客户端的请求,并根据预设的调度算法将请求分发到后端真实服务器(Real Server)。调度器通过修改数据包的目标IP地址和端口,将请求转发给后端服务器,后端服务器处理请求并将响应返回给客户端。整个过程对用户透明,用户访问的是虚拟IP地址,而实际处理请求的是后端服务器。‌

核心组件与术语


IPVS(IP Virtual Server):LVS集群的核心软件模块,安装在负载均衡器上,负责虚拟出一个IP地址和端口对外提供服务。
专业术语:
VS(Virtual Server):虚拟服务器,通常指负载均衡器。
DS(Director/Balancer):分发器/负载均衡器,负责接收客户端请求并根据调度算法分发到后端服务器
RS(Real Server):后端请求处理服务器,负责处理分发器转发的请求。
CIP(Client IP):客户端IP地址。
VIP(Virtual IP):虚拟IP地址,对外提供服务的IP地址。
DIP(Director IP):分发器(负载均衡器)的IP地址。
RIP(Real Server IP):后端服务器的IP地址。

工作模式


LVS支持多种工作模式,以适应不同的应用场景,主要包括:

NAT(Network Address Translation)模式:
在该模式下,负载均衡器不仅需要修改请求报文的目标地址,还需要修改响应报文的源地址。
适用于小规模集群,但请求和响应报文都需要经过负载均衡器,可能成为性能瓶颈。

DR(Direct Routing)模式:
在该模式下,负载均衡器只修改请求报文的目标MAC地址,而不修改IP地址。
后端服务器处理完请求后,直接将响应报文发回客户端,无需经过负载均衡器。
适用于大规模集群,处理效率高。

TUN(IP Tunneling)模式:
通过IP隧道将请求转发到后端服务器,后端服务器处理完请求后直接将响应报文发回客户端。
适用于地理位置分散的集群,但需要所有服务器支持IP Tunneling协议。

Full-NAT模式:
在请求和响应报文中都进行源地址和目标地址的转换。
允许RIP和DIP不在同一IP网络,但要能通信。

工作的分层及组成

第一层:负载调度器(load balancer/Director),它是整个集群的总代理,它在有两个网卡,一个网卡面对访问网站的客户端,

一个网卡面对整个集群的内部。负责将客户端的请求发送到一组服务器上执行,而客户也认为服务是来自这台主的。举个生动

的例子,集群是个公司,负载调度器就是在外接揽生意,将接揽到的生意分发给后台的真正干活的真正的主机们。当然需要将活

按照一定的算法分发下去,让大家都公平的干活。

第二层:服务器池(server pool/ Realserver),是一组真正执行客户请求的服务器,可以当做WEB服务器

第三层:共享存储(sharedstorage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。一个公司得有一个后台账目吧,这才能协调。不然客户把钱付给了A,而换B接待客户,因为没有相同的账目。B说客户没付钱,那这样就不是客户体验度的问题了。

ipvsnadm的使用

ipvsadm命令是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。
ipvsadm是一个工具,同时它也是一条命令,用于管理LVS的策略规则。

添加服务:使用-A选项可以添加一个新的服务,例如ipvsadm -A -t 192.168.1.100:80 -s rr会添加一个使用Round Robin调度算法的服务,监听192.168.1.100的80端口。
 添加真实服务器:使用-a选项可以向已存在的服务中添加真实服务器,例如ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101 -g会将192.168.1.101添加为该服务的真实服务器,并使用Gateway模式(DR)。
 删除服务或真实服务器:使用-D选项可以删除特定的服务或真实服务器,例如ipvsadm -D -t 192.168.1.100:80 -r 192.168.1.101会删除192.168.1.100:80服务中的192.168.1.101真实服务器
 查看配置:使用-L选项可以查看当前的LVS配置,例如ipvsadm -L会列出所有当前的LVS配置规则。

-A, --add-service:为ipvs虚拟服务器添加一个虚拟服务,即添加一个需要被负载均衡的虚拟地址。虚拟地址需要是ip地址,端口号,协议的形式。-E, --edit-service:修改一个虚拟服务。-D, --delete-service:删除一个虚拟服务。-C, --clear:清除所有虚拟服务。-R, --restore:从标准输入获取ipvsadm命令。一般结合下边的-S使用。-S, --save:从标准输出输出虚拟服务器的规则。可以将虚拟服务器的规则保存,在以后通过-R直接读入,以实现自动化配置。-a, --add-server:为虚拟服务添加一个real server(RS)-e, --edit-server:修改RS-d, --delete-server:删除-L, -l, --list:列出虚拟服务表中的所有虚拟服务。可以指定地址。添加-c显示连接表。-Z, --zero:将所有数据相关的记录清零。这些记录一般用于调度策略。--set tcp tcpfin udp:修改协议的超时时间。--start-daemon state:设置虚拟服务器的备服务器,用来实现主备服务器冗余。(注:该功能只支持ipv4)--stop-daemon:停止备服务器。-h, --help:帮助。

lvs的十种算法

算法分为静态和动态两种

1,i静态

RR:轮询(Round Robin,RR)
原理:调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

WRR:加权轮询(Weighted Round Robin,WRR)
原理:调度器根据真实服务器的不同处理能力来调度访问请求。具有较高权值的服务器将处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

DH:目标地址hash(Destination Hash )

根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

SH:源地址 hash(Source Hash)

根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

2动态

LC:最少连接(Least Connections,LC)
调度器动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

WLC:加权最少连接(Weighted Least Connections,WLC)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

SED:最短延迟调度(Shortest Expected Delay

在WLC基础上改进,Overhead = (ACTIVE+1)*256/加权,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会导致空闲服务器一直处于无连接状态。

NQ永不排队/最少队列调度(Never Queue Scheduling NQ)

无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空闲。在SED基础上无论+几,第二次一定给下一个,保证不会有一个主机不会很空闲着,不考虑非活动连接,才用NQ,SED要考虑活动状态连接,对于DNS的UDP不需要考虑非活动连接,而httpd的处于保持状态的服务就需要考虑非活动连接给服务器的压力

LBLC:'基于局部性的最少连接(Locality-Based Least Connections,LBLC)
该算法针对目标IP地址的负载均衡,主要用于Cache集群系统。它根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器

LBLCR:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication,LBLCR)
与LBLC算法类似,但它要维护从一个目标IP地址到一组服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改时,将最忙的服务器服务器组中删除,以降低复制的程度。

实验共部署nat和dr模式和lvs防火墙标记解决轮询调度

部署net模式


工作原理

LVS的NAT(Network Address Translation)模式是一种四层负载均衡技术,它通过修改请求报文的目标地址,将请求分发至后端服务器,再将响应报文修改源地址后传回给客户端。

下面是LVS NAT模式的工作原理:

客户端发送请求到Director(调度器),请求的目标IP是VIP(虚拟IP)。

当请求到达Director,调度器根据预设的调度算法选择一个Real Server。

调度器将请求的目标IP地址及端口改变为选定的Real Server的IP地址及端口,并将请求发给选定的Real Server。

Real Server处理完请求后,将响应直接返回给Director。

Director接收到响应后,将源IP地址改为VIP,然后将响应发送回客户端。

1.架构图

一共需要四台虚拟机,两台为RS,一台为lvs,最后一台为客户机

 2.在lvs

配置网卡IP
[root@bb ~]# vim /etc/NetworkManager/system-connections/eth1.connection [connection]id=eth1type=ethernetinterface-name=eth1[ipv4]method=manualaddress1=192.168.0.100/24[root@bb ~]# vim /etc/NetworkManager/system-connections/eth0.connection[connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=172.25.254.254/24,172.25.254.2dns=114.114.114.114;
[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth1[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth0
打开lvs的内核功能
[root@bb ~]# vim /etc/sysctl.conf# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward=1[root@bb ~]# sysctl -p
net.ipv4.ip_forward = 1
lvs安装ipvsadm
[root@bb ~]# yum install ipvsadm -y正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。AppStream                                        94 MB/s | 6.1 MB     00:00    
BaseOS                                          128 MB/s | 1.7 MB     00:00    
依赖关系解决。
================================================================================软件包           架构            版本                 仓库                大小
================================================================================
安装:ipvsadm          x86_64          1.31-6.el9           AppStream           54 k事务概要
================================================================================
安装  1 软件包总计:54 k
安装大小:89 k
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                                 1/1 安装    : ipvsadm-1.31-6.el9.x86_64                                       1/1 运行脚本: ipvsadm-1.31-6.el9.x86_64                                       1/1 验证    : ipvsadm-1.31-6.el9.x86_64                                       1/1 
已更新安装的产品。已安装:ipvsadm-1.31-6.el9.x86_64                                                     完毕
lvs做策略
[root@bb ~]# ipvsadm -A -t 172.25.254.254:80 -s rr
[root@bb ~]# ipvsadm -a -t 172.25.254.254:80 -r 192.168.0.10:80 -m
[root@bb ~]# ipvsadm -a -t 172.25.254.254:80 -r 192.168.0.20:80 -m

测试结果

结果成功

3.在rs

配置网卡IP
vim /etc/NetworkManager/system-connections/eth0.connection[connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=192.168.0.10/24,192.168.0.100
[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth0

安装httpd
[root@bb ~]# yum install httpd -y
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。AppStream                                       247 MB/s | 6.1 MB     00:00    
BaseOS                                           99 MB/s | 1.7 MB     00:00    
依赖关系解决。
================================================================================软件包                  架构        版本                  仓库            大小
================================================================================
安装:httpd                   x86_64      2.4.53-7.el9          AppStream       54 k
安装依赖关系:apr                     x86_64      1.7.0-11.el9          AppStream      127 kapr-util                x86_64      1.6.1-20.el9          AppStream       98 kapr-util-bdb            x86_64      1.6.1-20.el9          AppStream       15 khttpd-core              x86_64      2.4.53-7.el9          AppStream      1.5 Mhttpd-filesystem        noarch      2.4.53-7.el9          AppStream       18 khttpd-tools             x86_64      2.4.53-7.el9          AppStream       89 kredhat-logos-httpd      noarch      90.4-1.el9            AppStream       18 k
安装弱的依赖:apr-util-openssl        x86_64      1.6.1-20.el9          AppStream       17 kmod_http2               x86_64      1.15.19-2.el9         AppStream      153 kmod_lua                 x86_64      2.4.53-7.el9          AppStream       64 k事务概要
================================================================================
安装  11 软件包总计:2.1 M
安装大小:5.9 M
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                                 1/1 安装    : apr-1.7.0-11.el9.x86_64                                        1/11 安装    : apr-util-bdb-1.6.1-20.el9.x86_64                               2/11 安装    : apr-util-openssl-1.6.1-20.el9.x86_64                           3/11 安装    : apr-util-1.6.1-20.el9.x86_64                                   4/11 安装    : httpd-tools-2.4.53-7.el9.x86_64                                5/11 安装    : redhat-logos-httpd-90.4-1.el9.noarch                           6/11 运行脚本: httpd-filesystem-2.4.53-7.el9.noarch                           7/11 安装    : httpd-filesystem-2.4.53-7.el9.noarch                           7/11 安装    : httpd-core-2.4.53-7.el9.x86_64                                 8/11 安装    : mod_http2-1.15.19-2.el9.x86_64                                 9/11 安装    : mod_lua-2.4.53-7.el9.x86_64                                   10/11 安装    : httpd-2.4.53-7.el9.x86_64                                     11/11 运行脚本: httpd-2.4.53-7.el9.x86_64                                     11/11 验证    : apr-1.7.0-11.el9.x86_64                                        1/11 验证    : apr-util-1.6.1-20.el9.x86_64                                   2/11 验证    : apr-util-bdb-1.6.1-20.el9.x86_64                               3/11 验证    : apr-util-openssl-1.6.1-20.el9.x86_64                           4/11 验证    : httpd-2.4.53-7.el9.x86_64                                      5/11 验证    : httpd-core-2.4.53-7.el9.x86_64                                 6/11 验证    : httpd-filesystem-2.4.53-7.el9.noarch                           7/11 验证    : httpd-tools-2.4.53-7.el9.x86_64                                8/11 验证    : mod_http2-1.15.19-2.el9.x86_64                                 9/11 验证    : mod_lua-2.4.53-7.el9.x86_64                                   10/11 验证    : redhat-logos-httpd-90.4-1.el9.noarch                          11/11 
已更新安装的产品。已安装:apr-1.7.0-11.el9.x86_64                apr-util-1.6.1-20.el9.x86_64          apr-util-bdb-1.6.1-20.el9.x86_64       apr-util-openssl-1.6.1-20.el9.x86_64  httpd-2.4.53-7.el9.x86_64              httpd-core-2.4.53-7.el9.x86_64        httpd-filesystem-2.4.53-7.el9.noarch   httpd-tools-2.4.53-7.el9.x86_64       mod_http2-1.15.19-2.el9.x86_64         mod_lua-2.4.53-7.el9.x86_64           redhat-logos-httpd-90.4-1.el9.noarch  完毕!
写入测试内容
[root@bb ~]# echo  web1-10 > /var/www/html/index.html
启用
[root@bb ~]# systemctl enable  --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@bb ~]# 

rs2 和rs1 的一样

部署dr模式、

工作原理

LVS的DR工作原理主要涉及到数据包的改写和直接路由。‌这种模式通过改写请求报文的目标MAC地址,‌将请求发送给真实服务器,‌而真实服务器的响应则直接返回给客户端用户。‌DR模式能够显著提高集群系统的伸缩性,‌并且不需要IP隧道的开销,‌对集群中的真实服务器也没有必须支持IP隧道协议的要求。‌然而,‌这种模式要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,‌必须在同一个局域网环境中。‌

具体来说,‌当客户端请求VIP时,‌请求首先被发送给调度器(‌Director Server)‌,‌调度器根据预设的调度算法将请求转发给真实服务器(‌Real Server)‌。‌在转发过程中,‌调度器修改了数据报文中的MAC地址,‌确保数据报文能够在同一物理网络内直接传输到真实服务器。‌真实服务器处理请求后,‌发送响应数据给客户端。‌由于直接返回响应给客户端,‌客户端接收到的响应数据的源IP为VIP,‌目标IP为客户端的IP(‌CIP)‌,‌这样客户端就能够直接接收到来自真实服务器的响应。‌

此外,‌DR模式还涉及到VIP的配置和管理。‌VIP(‌虚拟IP)‌需要配置在调度器和真实服务器上,‌以便能够响应客户端的请求。‌在DR模式下,‌调度器和真实服务器的网络配置需要特别关注,‌以确保VIP的正确配置和使用,‌避免网络配置错误导致负载均衡失效。‌

1.架构图

从架构图可以看出,实验需要用到五台虚拟机

其中两台作为RS,一台为LVS,一台router且需要两个网卡,一个为仅主机模式,一个为NAT模式,最后一台作为客户机测试

注意,配置过程中的IP要根据自己的来设定

1,在lvs

配置好网卡
#把lvs的网卡设置上IP[root@lvs ~]# vim /etc/NetworkManager/system-connections/eth1.connection [connection]id=eth1type=ethernetinterface-name=eth1[ipv4]method=manualaddress1=192.168.0.50/24,192.168.0.100
nmcli connection reload
nmcli connection up eth1
之后安装ipvsadm并做策略
#在lvs安装ipvsadm[root@lvs ~]# yum install ipvsadm -y
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g 
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g 
lvs的环回配置vip
[root@lvs ~]# ip a  a 192.168.0.200/32 dev lo

2,在RS1

在RS1里配置好网卡IP
[root@web1 ~]# vim /etc/NetworkManager/system-connections/eth0.connection [connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=192.168.0.10/24,192.168.0.100
[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth0
安装好httpd,
[root@web1 ~]# yum install httpd -y
在他默认访问的路径下写进内容,以在测试的时候观察,并启用
[root@web1 ~]# echo web1-10 > /var/www/html/index.html systemctl enable --now httpd
使RS主机不对外响应VIP
[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 

给环回配置vip

[root@web1 ~]# ip a a 192.168.0.200/32 dev lo

另外一台的RS配置一样,不过IP要改

3.在router的配置

[root@rou2 ~]# vim /etc/NetworkManager/system-connections/eth1.connection [connection]id=eth1type=ethernetinterface-name=eth1[ipv4]method=manualaddress1=192.168.0.100/24[root@rou2 ~]# vim /etc/NetworkManager/system-connections/eth0.connection [connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=172.25.254.100/24,172.25.254.2dns=114.114.114.114;
把router的内核功能打开
[root@rou2 ~]# vim /etc/sysctl.confsysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1[root@rou2 ~]# sysctl -p
net.ipv4.ip_forward = 1

4.在客户机

配置IP
[root@bb ~]$ vim /etc/NetworkManager/system-connections/eth0.connection [connection]id=eth0type=ethernetinterface-name=eth0[ipv4]method=manualaddress1=172.25.254.200/24,172.25.254.100

测试

测试结果为成功

lvs防火墙标记解决轮询调度

lvs的dr模式的基础上进行配置

1.在rs 1

安装mod_ssl让rs支持https
[root@bb ~]# yum install mod_ssl -y

重启httpd

root@bb ~]# systemctl restart httpd

两台RS的配置一样

2.在lvs

清空之前的ipvsadm策略
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
主机端口做标记为
[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 666

在客户机测试

测试结果为成功


http://www.ppmy.cn/server/99130.html

相关文章

计算机网络-CSP初赛知识点整理

历年真题 [2016-NOIP-普及-第3题] 以下不属于无线通信技术的是( ) A. 蓝牙 B. Wifi C. GPRS D. 以太网 [2015-NOIP-普及-第10题] FTP 可以用于( )。 A. 远程传输文件 B. 发送电子邮件 C. 浏览网页 D. 网上聊天 [2019-CSP-J-第1题] 中国的国家顶级域名是( ). A. .cn B. .ch C.…

七夕情人节特辑:程序员的浪漫惊喜,9个表白源码,甜蜜编程陪你过节

大家好呀👋,今天是中国的七夕情人节,一个充满浪漫与爱的日子。为了庆祝这个特别的节日,我为大家精心准备了9个表白专用的前端小项目。这些项目涵盖了“我爱你”网站、爱情表白网站和心形动画等,通过HTML、CSS和一点点J…

Redisson看门狗机制和mulitLock原理保姆级别

Redisson看门狗机制 这段代码主要实现了异步处理一个任务&#xff0c;并根据任务结果来执行不同的操作。 首先&#xff0c;调用handleNoSync方法进行异步处理&#xff0c;并返回一个表示异步计算结果的CompletionStage<Long>对象&#xff0c;这里使用了threadId和ttlRe…

统一响应结果封装,Result类的实现【后端 06】

统一响应结果封装&#xff0c;Result类的实现 在开发Web应用或API接口时&#xff0c;如何优雅地处理并返回响应结果是每个开发者都需要考虑的问题。统一响应结果封装&#xff08;Unified Response Encapsulation&#xff09;作为一种广泛采用的实践&#xff0c;不仅提高了API的…

开源力量,智领云KDP为大数据处理领域注入云原生活力

在数字化转型的浪潮中&#xff0c;大数据处理已成为企业挖掘价值、驱动决策的核心引擎。随着云原生技术的兴起&#xff0c;如何高效、灵活地管理和分析海量数据成为行业面临的新挑战。在此背景下&#xff0c;开源技术以其强大的社区支持、灵活性和可扩展性&#xff0c;正逐步成…

Python基础

一、Python3 1、装包 [rootzhu ~]# yum list installed | grep python[rootzhu ~]# yum -y install python3[rootzhu ~]# python3 --versionPython 3.12.4 2、进入python测试 [rootzhu ~]# python3Python 3.12.4 (main, Jul 16 2024, 13:09:55) [GCC 4.8.5 20150623 (Red H…

Redis 的6种回收策略(淘汰策略)详解

Redis 的6种回收策略&#xff08;淘汰策略&#xff09;详解 1、Redis的六种淘汰策略1. volatile-lru2. volatile-ttl3. volatile-random4. allkeys-lru5. allkeys-random6. no-eviction 2、使用策略规则 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&am…

编程-设计模式 22:策略模式

设计模式 22&#xff1a;策略模式 定义与目的 定义&#xff1a;策略模式定义了一系列算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。目的&#xff1a;该模式的主要目的是将一组相关的算法封装成一系列可…