负载均衡LB》》LVS

LO 接口

LVS简介

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器集群,它具有良好可靠性、可扩展性和可操作性,从而以低廉的成本实现最优的服务性能。目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,
LVS工作模式分为NAT模式、TUN模式、以及DR模式。

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址**,用户必须通过这个虚拟的IP地址访问服务**。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。
  当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR.

LVS 核心组件和专业术语

# 核心组件
LVS  的  管理工具ipvsadm 和  内核模块  ipvs
ipvsadm :用户空间的命令行工具,用于管理集群服务及集群服务上的RS(Real Server 后端的真实服务器)等
ipvs: 工作于内核上的程序,可根据用户定义的集群实现请求转发#  专业术语
VS:Virtual Server   虚拟服务
DR、DS:Director,Balancer   负载均衡器、分发器
RS:Real Server    后端请求处理的真实服务器
CIP:Client IP   用户端IP
#  负载均衡器 有两个IP  VIP,DIP
VIP:Director Virtual IP   负载均衡器虚拟IP
DIP: Director IP          负载均衡器IP
RIP: Real Server IP   后端请求处理真实服务器IP

LVS负载均衡器4种工作模式

LVS-NAT 》》网络地址转换模式
进站、出站的数据流程都经过DS(DR)负载均衡器(IP负载均衡,修改的是IP地址),利用网络层(四层)
支持端口映射
NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。
LVS-DR》》直接路由模式
只有进站的数据流程经过DS(DR)负载均衡器(数据链路层负载均衡,修改的是目的MAC地址),利用数据链路层(二层)
不支持端口映射(端口不能修败)
LVS-TUN 》》隧道模式 三层
不支持端口映射, .RS 的 OS 须支持隧道功能
只有进站的数据流程经过DS(DR)负载均衡器
LVS-full-nat》》双向转换模式
通过请求报文的源地址为DIP,目标为RIP来实现转发 支持端口映射
对应响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发

资料

网络地址转换模式》》NAT模式

资料

在这里插入图片描述
在这里插入图片描述

原理
DS(DR)负载均衡器把客户端发来的数据包的IP头的目标地址,在DS(DR)负载均衡器上换成其中一个RS的IP地址,并发至RS来处理,
RS处理完成后,
把数据交给经过DS(DR)负载均衡器,DS(DR)负载均衡器再把数据包的源IP改成自己的VIP
①源CIP——>目VIP (客户端向——DS(DR)负载均衡器 通信)
②目VIP——>改成RIP(DS(DR)负载均衡器中做转换)
(DS(DR)负载均衡器中做转换)——>RS 通信
③源RIP——>目DIP(RS——负载均衡器 通信)
④源RIP——>改成VIP(处理完成之后,DS(DR)负载均衡器中再转换)
(DS(DR)负载均衡器中做转换)——>客户端通信

优点
集群中的物理服务器(RS服务器),可以使用任何支持TCP/IP操作系统,只有(DS(DR)负载均衡器)需要一个合法的IP(VIP)地址
不足
扩展性有限,当服务器节点(普通PC服务器)增长过多时,(DS(DR)负载均衡器)将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过(DS(DR)负载均衡器)。当服务器节点过多时,大量的数据包都交会在(DS(DR)负载均衡器),速度就会变慢

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接路由模式》》DR 模式

直接路由模式则应该是工作在数据链路层上(二层)

同一个网段的设备之间通信,可用MAC直接通信
不同网段的设备之间通信,必须借助网关

arp协议

资料
在这里插入图片描述

1、当用户请求到达Director Server (DS,负载均衡器),此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP;
2、检查发现数据包的目标IP是本机,将数据包送至INPUT链;
3、IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址;
4、由于DS和RS在同一个网络中,所以是通过二层,数据链路层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server;
5 、RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡(ens网卡)然后向外发出。 此时的源IP地址为VIP,目标IP为CIP;
6、响应报文最终送达至客户端。

# DR 原理
DS(DR)负载均衡器和RS都使用同一个IP(即VIP)对外服务,但只有DS(DR)负载均衡器对ARP请求进行响应,所有RS对本身这个IP(VIP)的ARP请求保持静默(就是不理它),也就是说,网关会把这个服务IP(VIP)的请求全部定向给DS(DR)负载均衡器,而DS(DR)负载均衡器收到数据包后根据调度算法(当然前提IPVS会判断是否是集群,只有集群才会用到调度算法了)。找出对应的RS,
把, 源MAC(即CIP的MAC)————>改成DIP的MAC, 目的MAC(即VIP的MAC)————>改为RS的RIP的MAC,并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP(VIP)是一致,可以直接将数据返给客户端,则等于直接从客户端接收到这个数据包无异,处理后直接返回给客户端。
**优点:**与TUN模式(隧道模式)一样,DS(DR)负载均衡器也只是分发请求,应答包通过单独的路由方法返回客户端,与TUN相比,DR模式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器
**不足:**要求DS(DR)负载均衡器的网卡必须与物理网卡在一个网段上(DS(DR)负载均衡器到RS 是通过MAC地址通信的)。
# DR模式的特点
1、DS(DR)和所有RS 都要配置 VIP 
2、RS的RIP 可以使用私有IP,也可以共有IP,RIP、DIP要在同一网段(因为需要通过MAC通信)
3、RIP的网关不能指向DIP,以确保响应报文不会通过DS(DR)负载均衡器,减少流量。
4、RS和DS(DR)负载均衡器要在同一个物理网络
5、请求报文经过DS(DR)负载均衡器,但响应报文不经过DS(DR)负载均衡器,而由RS直接发往请求方(client端)

在这里插入图片描述

在这里插入图片描述

TUN 隧道模式

资料

# 原理:
互联网上的大多数Internet服务的请求包很短小,而应答包通常很大。这种就是隧道模式(TUN)
把客户端发来的数据包,**封装**一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回客户端
不需要再经过负载均衡器。
注意:由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTunnel协议。所以,在RS的内核中,必须编译支持IPTunnel这个选项
优点:
负载均衡器只负责将请求包分发给后端节点服务器(RS服务),而RS将应答包直接发给用户。
所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理巨大的请求量,
这种方式,一台负载均衡器能够为很多RS进行分发。而且**跑在公网上就能进行不同地域的分发**
缺点:
TUN隧道模式的RS节点都需要合法IP(公网IP),这种方式需要所有服务器支持IP Tunneling 协议,服务器可能只局限在部分Linux系统上

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

LVS-DR 模式 案例
#  准备三台Ubuntu系统,上网模式,桥接模式,可以通过VM中创建  
#  
#  关闭 防火墙
ufw disable
# 修改主机名,和IP地址
[主机名和IP地址](https://ares-wang.blog.csdn.net/article/details/146230753)所有的Director和RealServer都在同一个物理网络中。**同一个网段**  (VIP,DIP,RIP 要在同一个网段,LVS/DR只支持本地网络)

》》》DS(DR)负载均衡器 配置

#  DS 配置
# 安装  ipvsadm工具
apt update
apt install ipvsadm
# 在ens3 接口 添加VIP
# 如果VIP配置错误,可以删除  ip addr del IP dev ens33
ip addr  add dev ens33 172.XX.XX.140/32
# 启动 
# 如果启动 错误  ① mkdir -p /etc/sysconfig   ② ipvsadm -S > /etc/sysconfig/ipvsadm 在启动
systemctl start ipvsadm
# 添加 添加虚拟服务 
# 如果要清除DS虚拟服务器中所有记录(含虚拟服务) 第一次配置用不到的   ipvsadm -C  
#======
###  ipvsadm   -  大写字母 管理集群的, 小写字母管理  真实服务器的 
#########
# -s : 算法  
#1. 轮询调度 rr
#2. 加权轮询 wrr
#3. 最少链接 lc
#4. 加权最少链接 wlc
# ipvsadm -A -t VIP:端口 -s rr
ipvsadm -A -t 172.XX.XX.140:80 -s rr
# 添加真实服务器  180,104 是真实处理数据的服务器IP 真实服务器后面的80端口,因为我真实服务器用Nginx 做测试的  Nginx 默认端口就是80
# -g  #  指定LVS 模式  直接路由模式 (LVS默认模式)
# -r  真实服务器的IP地址
# -t, --tcp-service service-address, 指定虚拟服务为tcp服务  IP地址:端口号
# -a, --add-server为虚拟服务添加一个real server(RS)
# -g, --gatewaying:使用网关(即直接路由DR),此模式是默认模式。
ipvsadm -a -t 172.XX.XX.140:80 -r 172.XX.XX.180:80 -g
ipvsadm -a -t 172.XX.XX.140:80 -r 172.XX.XX.104:80 -g
# 保存
ipvsadm -S > /etc/sysconfig/ipvsadm
# 启动systemctl start ipvsadm
# 查看
# -L|-l   # 显示内核虚拟服务器列表
# -n  # 以为数字形式输出端口号
ipvsadm -ln

在这里插入图片描述
》》》配置 RS真实服务器

# RS配置 每个真实服务器都有配置
#  VIP    是lo  接口     在lo接口上绑定VIP
#  删除 VIP  ip addr del dev lo 172.30.164.140/32
ip addr  add dev lo 172.XX.XX.140/32 
# RS在LO接口配置了VIP,这个同一个网段中就拥有多个VIP(RS中每个都配置VIP,DS也配置VIP)
# 客户端在网关发送arp广播需找VIP时,需要RS集群中不接受这个ARP请求,即要关闭ARP响应,ARP静默
# arp_ignore 设置1,意味着当别人的ARP请求过来的时候,如果接受的设备没有这个IP,就不做出响应(这个ip在lo接口,lo不说接受设备的进口)
# ARP静默   临时
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# ARP静默  永久 
cat >> /etc/sysctl.conf <<EOF
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
EOF
sysctl -p#  安装nginx
apt install nginx & systemctl restart nginx
#  为了能看到数据来源那个服务器,故把默认的Index.html 覆盖了 
# CentOS 路径   /usr/share/nginx/html
# Ubuntu 路径  /var/www/html/index.nginx-debian.html 
# >>  追加   > 覆盖
echo "RS-104" > /var/www/html/index.nginx-debian.html

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

栏位注解

ipvsadm -ln --stats
Conns: 已经转发过的连接数
InPkts:入包个数
OutPkts:出包个数
InBytes:入流量(字节)
OutBytes:出流量(字节)

ipvsadm -ln --rate
CPS:每秒连接数
InPPS:每秒的入包个数
OutPPS:每秒的出包个数
InBPS:每秒入流量(字节)
OutBPS: 每秒出流量(字节)

在这里插入图片描述

LVS-NAT 模式 案例

》》DS(DR)负载均衡器

#  准备三台Ubuntu系统,上网模式,NAT模式,可以通过VM中创建  
#  
#  关闭 防火墙
ufw disable
# 修改主机名,和IP地址
[主机名和IP地址](https://ares-wang.blog.csdn.net/article/details/146230753)
使用LVS-NAT模式将需要**两个不同网段**的IP,一个IP接受外部请求服务,一般为外网ip,此IP称为VIP,一个IP与后realserver同一地址段,负责相互通信,称为DIP。后端realserver的网关地址需指向DIP。同时需开启linux内核的数据包转发功能
# 因为VIP和RIP是不同的网段,所有达到隐藏真实IP目的

在这里插入图片描述
在这里插入图片描述

# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 添加VIP
ip addr  add dev ens33 172.XX.XX.140/32
# 添加虚拟服务
ipvsadm -A -t 172.XX.XX.140:80 -s rr
# 添加真实服务器  -m  代表 NAT模式
ipvsadm -a -t 172.XX.XX.140:80 -r 192.168.2.5 -m
ipvsadm -a -t 172.XX.XX.140:80 -r 192.168.2.3-m# 启动
systemctl start ipvsadm
# 保存 如果保存不了,则要创建文件夹 mkdir -p /etc/sysconfig
ipvsadm -S > /etc/sysconfig/ipvsadm

》》RS服务器配置

# 配置IP地址,网关要指向DIP地址即可。#  安装nginx测试
apt install nginx & systemctl restart nginx
#  为了能看到数据来源那个服务器,故把默认的Index.html 覆盖了 
# CentOS 路径   /usr/share/nginx/html
# Ubuntu 路径  /var/www/html/index.nginx-debian.html 
# >>  追加   > 覆盖
echo "RS-104" > /var/www/html/index.nginx-debian.html

在这里插入图片描述

LVS-TUN:隧道模式

 LVS/TUN与 LVS/DR 类似。只是在报文外面再加一层IP封装,整个过程比LVS/DR模式多一次报文的封装/解封过程。不同:LVS/DR只支持本地网络,LVS/TUN却可以跨机房用内网测试,RIP、DIP 属于同一个网段  
我用的是私有的  
RS1——RIP:192.168.2.3   网关 192.168.2.1 
RS2——RIP:192.168.2.5   网关 192.168.2.1 
DS-DIP:192.168.2.4   网关 192.168.2.1 
# 在NAT中 RS 中RIP 网关要指向DIP,但TUN模式不可以的

》》DS(DR)负载均衡器

# 加载内核模块modprobe ip_vsmodprobe ip_vs_rrmodprobe ip_vs_wrrmodprobe ip_vs_shmodprobe tun
# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 配置VIP 
sudo ip addr add 172.XX.XX.140/32 dev ens33
# 配置LVS规则 ipvsadm -A -t 172.XX.XX.140:80 -s rr  # 使用轮询调度# -i 是隧道模式# ipvsadm -a -t VIP:端口 -r RIP:端口 -i [-w 1]  # -i-->LVS-TUNipvsadm -a -t 172.XX.XX.140:80 -r 192.168.2.5:80 -i  # -i 表示 TUN 模式ipvsadm -a -t 172.XX.XX.140:80 -r 192.168.2.3:80 -i

》》》RS服务器

# 安装 
modprobe ipip
#  创建隧道接口 每个RS 只有添加自身的 
# ip tunnel add tun0 mode ipip remote DIP local RIP
ip tunnel add tun0 mode ipip remote 192.168.2.4 local 192.168.2.3
ip link set tun0 up
# 配置VIP
ip addr add 172.XX.XX.140/32 dev tun0
# 禁用 ARP 响应  ARP静默  永久生效
echo 1 | sudo tee /proc/sys/net/ipv4/conf/tun0/arp_ignore
echo 2 | sudo tee /proc/sys/net/ipv4/conf/tun0/arp_announce
echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 | sudo tee /proc/sys/net/ipv4/conf/all/arp_announce
# 添加路由
route add -host 172.XX.XX.140 dev tun0# 测试 隧道  如果返回 Real Server 自己的服务(如 Nginx/Apache),说明隧道配置成功。 
# curl VIP 
curl 172.XX.XX.140

在这里插入图片描述
》》RS 持久化

资料

network:renderer: networkdethernets:ens33: # 替换为你的网络接口名称dhcp4: false # 关闭 DHCPdhcp6: false # 关闭 DHCPaddresses: [192.168.2.3/24] # 静态 IP 地址和子网掩码routes:- to: defaultvia: 192.168.2.1 # 网关地址nameservers:addresses: [8.8.8.8,114.114.114.114] # DNS 服务器地址search: [] tunnels:tun0:mode: ipipremote: 192.168.2.4 # DS负载均衡器的DIPlocal: 192.168.2.3  # 当前RS的RIPaddresses:- 172.30.164.140/32 # VIProutes:- to: 172.30.164.140/32via: 192.168.2.1scope: linkmtu: 1480version: 2
# 在不重启的情况下,网络配置 应用 
netplan apply  
# 验证上面的持久化
ip ad   #  显示所有的
ip ad show tun0 # 只显示  tuno接口的 
ip route show  

在这里插入图片描述

上面的虚拟服务器规则 重启消失了

该方式添加的规则重启服务器后规则就消失了,因此应该将该规则保存在文件中,待重启后可以直接从文件中恢复规则

# 保存 如果保存不了,则要创建文件夹 mkdir -p /etc/sysconfig
ipvsadm -S > /etc/sysconfig/ipvsadm#   恢复  
ipvsadm -R < /etc/sysconfig/ipvsadm

可以通过systemctl 解决 ipvsadm.service

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Modbus TCP转DeviceNet网关配置温控仪配置案例

某工厂生产线需将Modbus TCP协议的智能仪表接入DeviceNet网络&#xff08;主站为PLC&#xff0c;如Rockwell ControlLogix&#xff09;&#xff0c;实现集中监控。需通过开疆智能Modbus TCP转DeviceNet网关KJ-DVCZ-MTCPS完成协议转换。Modbus TCP设备&#xff1a;温控器&#x…

Lodash原型污染漏洞原理详解

文中涉及操作均来自靶场&#xff0c;切勿用于非授权渗透测试&#xff01; 一、JavaScript原型链基础 要理解原型污染漏洞&#xff0c;首先需要掌握JavaScript中原型(prototype)和原型链(prototype chain)的基本概念。 1.1 什么是原型 JavaScript是一种基于原型的语言&#…

django 获取当前时间 格式 YYYY-MM-DD HH:Mm:ss

在 Django 中获取当前时间并以特定的格式显示&#xff0c;你可以使用 Python 的 datetime 模块结合 Django 的 timezone 模块。这里有两种主要的方法来做到这一点&#xff1a; 方法1&#xff1a;使用 datetime 和 timezone 首先&#xff0c;确保你已经导入了必要的模块&#x…

k8s使用自建nfs做持久化无法控制磁盘使用大小问题处理

如题&#xff0c;创建的pvc并无法控制用户实际使用多少nfs存储&#xff0c;使用xfs_quota来对用户nfs目录做磁盘配额管理 1、需使用xfs文件系统 2、/etc/fstab挂载中开启prjquota&#xff08;项目配额&#xff09; 具体操作如下 xfs_quota 使用说明/etc/fstab挂载磁盘 UUID&…

小结:Spring AOP 切点表达式

Spring AOP 切点表达式&#xff08;Pointcut Expression&#xff09; 一、切点表达式概述 切点表达式 是 Spring AOP 用于定义哪些方法&#xff08;或连接点&#xff09;需要被拦截的规则&#xff0c;主要基于 AspectJ 切点表达式语言。Spring AOP 仅支持方法级别的切点&#…

Linux开发工具之VsCode(Filezila、MobaXterm、Vim三合一)

文章的目的是记录&#xff0c;编程过程中用到的高效工具Vscode。通过这个工具实现了Filezila、MobaXterm、Vim三个工具文件下载上传&#xff0c;终端调试&#xff0c;文件编辑的功能&#xff0c;避免切换和记录指令&#xff0c;效率提升100%。 Linux C到Android App开发推荐链接…

用idea进行数据同步

声明对列和交换机 你需要先在yaml文件当中进行rabbitmq的相关配置 rabbitmq:host:192.168.150.101 //消息件的地址port:5672 //端口数据username:itcast //用户名password:123321 //密码virtual-host:/ //虚拟…

实战:Java web应用性能分析之【异步日志:性能优化的金钥匙】

概叙 实战&#xff1a;Java web应用性能分析之【Arthas性能分析trace监控后端性能】-CSDN博客 在优化方面&#xff0c;可以采取以下步骤&#xff1a; ‌性能分析工具‌&#xff1a;使用Arthas或Async Profiler进行实时诊断&#xff0c;定位耗时的方法调用。这可以帮助精确找…

Puppeteer API

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】

【机器学习】Teacher-Student框架

Teacher-Student Setup是一个经典的机器学习框架&#xff0c;包含两个核心角色&#xff1a; 教师模型 (Teacher Model)&#xff1a; 通常是一个更大、更强、已经训练好&#xff08;或正在训练&#xff09;的模型。它对问题有很好的理解&#xff0c;性能优秀。它的作用是为学生提…

华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建联网大模型

华为云FlexusDeepSeek征文&#xff5c;体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建联网大模型 什么是华为云ModelArts 华为云ModelArts ModelArts是华为云提供的全流程AI开发平台&#xff0c;覆盖从数据准备到模型部署的全生命周期管理&#xff0c;帮助企业和开发…

Web API 路径设计哪家强

本文档主要比较一下各家API的URL路径设计&#xff0c;通过学习各家API的URL路径设计&#xff0c;加深对 REST API 的理解&#xff0c;帮助我们设计出更符合 REST 风格的 API。 Google API 文档地址&#xff1a;https://developers.google.com/apis-explorer/#p/ YouTube Dat…

微信小程序中的计算属性库-miniprogram-computed

miniprogram-computed 是一个用于微信小程序的扩展库&#xff0c;它提供了计算属性&#xff08;computed&#xff09;和监听器&#xff08;watch&#xff09;的功能&#xff0c;类似于 Vue.js 中的计算属性和监听器。以下是使用 miniprogram-computed 的详细步骤&#xff1a; …

【CSS-7】深入解析CSS伪类:从基础到高级应用

CSS伪类是前端开发中不可或缺的强大工具&#xff0c;它们允许我们根据文档树之外的信息或简单选择器无法表达的状态来样式化元素。本文将全面探讨CSS伪类的各种类型、使用场景和最佳实践。 1. 伪类基础概念 1.1 什么是伪类&#xff1f; 伪类&#xff08;Pseudo-class&#x…

蓝桥杯国赛训练 day4

目录 再创新高 蓝桥大使 表演赛 次数差 再创新高 import java.math.*; import java.util.*;public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {int t 1; // tsc.nextInt();for(int i0;i<t;i) {solve();}} p…

java 高并发设计

文章目录 目录 文章目录 前言 一、通用设计 一、动静分离 二、数据库独立部署 三、问题 1.高并发通用设计方法 2.高并发系统的拆分顺序 二、计算资源高并发 三、网络资源高并发 超高性能场景&#xff08;10万 QPS&#xff09; 中小规模场景&#xff08;5万 QPS以下&a…

docker compose搭建elk 8.6.2

环境搭建 选用版本是比较新的版本 (ELK) 8.6.2 &#xff0c;elk的环境做的还是比较好的又windows和Linux多个版本&#xff0c;并且开箱即用。本地直接下载官方软件也是可以的。最近在学习docker compose&#xff0c;就使用这个环境搭建一下。 前置条件 安装好docker和 docke…

Springboot3+的id字符串转化问题

以下是纯后端实现 Long/BigInteger ID 转为 JSON 字符串 的详细配置方案&#xff0c;基于 Spring Boot 3 和 SpringDoc (OpenAPI) 最新实践 ✨ 1. 添加依赖 确保你的 pom.xml&#xff08;或 Gradle&#xff09;中包含&#xff1a; <dependency><groupId>com.fast…

C#学习第30天: 匹配模式

模式匹配&#xff08;Pattern Matching&#xff09;是 C# 中一个强大且灵活的特性&#xff0c;允许开发者以更直观的方式检查数据结构&#xff0c;并根据特定模式执行操作。 随着 C# 语言版本的发展&#xff0c;模式匹配的功能越来越丰富&#xff0c;为处理复杂数据提供了极大…

SQL进阶之旅 Day 29:NoSQL结合使用策略

【SQL进阶之旅 Day 29】NoSQL结合使用策略 文章简述 随着数据量的激增和业务场景的复杂化&#xff0c;传统关系型数据库在某些场景下已难以满足高性能、高扩展性和灵活数据结构的需求。NoSQL&#xff08;非关系型数据库&#xff09;以其高可扩展性、灵活的数据模型和分布式架构…