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

lvs详解及实例配置

目录

1.什么是负载均衡

1.1为什么用负载均衡

1.2.负载均衡类型

1.2.1.四层负载均衡

1.2.2.七层负载均衡

1.3 四层和七层的区别

2.LVS介绍

2.1LVS 的优势与不足

2.2LVS 核心组件和专业术语

3.ipvsadm命令

4.LVS集群中的增删改

4.1.管理集群服务中的增删改

4.2.管理集群中RealServer的曾增删改

5.LVS负载均衡四种工作模式

5.1NAT模式(VS-NAT)

5.2实例练习

5.3 DR模式

5.4实例练习

5.5防火墙标签解决轮询问题

5.6实例练习

5.7 IP隧道(Tunnel)模式(VS-TUN)

5.8FULL-NAT模式

5.9四种模式的区别

6.lvs持久链接

7.LVS的调度算法

7.1lvs调度算法类型

7.2.lvs静态调度算法

7.3.lvs动态调度算法

7.4在4.15版本内核以后新增调度算法


1.什么是负载均衡

负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均 衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了 公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展

1.1为什么用负载均衡

Web服务器的动态水平扩展-->对用户无感知

增加业务并发访问及处理能力-->解决单服务器瓶颈问题

节约公网IP地址-->降低IT支出成本

隐藏内部服务器IP-->提高内部服务器安全性

配置简单-->固定格式的配置文件

功能丰富-->支持四层和七层,支持动态下线主机

性能较强-->并发数万甚至数十万

1.2.负载均衡类型

1.2.1.四层负载均衡

img

1.通过ip+port决定负载均衡的去向。

2.对流量请求进行NAT处理,转发至后台服务器。

3.记录tcp、udp流量分别是由哪台服务器处理,后续该请求连接的流量都通过该服务器处理。

4.支持四层的软件

lvs:重量级四层负载均衡器。

Nginx:轻量级四层负载均衡器,可缓存。(nginx四层是通过upstream模块)

Haproxy:模拟四层转发。

1.2.2.七层负载均衡

img

1.通过虚拟ur|或主机ip进行流量识别,根据应用层信息进行解析,决定是否需要进行负载均衡。

2.代理后台服务器与客户端建立连接,如nginx可代理前后端,与前端客户端tcp连接,与后端服务器建立 tcp连接,

3.支持7层代理的软件: Nginx:基于http协议(nginx七层是通过proxy_pass)

Haproxy:七层代理,会话保持、标记、路径转移等。

1.3 四层和七层的区别

        所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决 定怎么样转发流量 四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负 载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪 台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理 七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比 如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。

1.分层位置:四层负载均衡在传输层及以下,七层负载均衡在应用层及以下

2.性能 :四层负载均衡架构无需解析报文消息内容,在网络吞吐量与处理能力上较高:七层可支持解析应用 层报文消息内容,识别URL、Cookie、HTTP header等信息。、

3.原理 :四层负载均衡是基于ip+port;七层是基于虚拟的URL或主机IP等。

4.功能类比:四层负载均衡类似于路由器;七层类似于代理服务器。

5.安全性:四层负载均衡无法识别DDoS攻击;七层可防御SYN Cookie/Flood攻击

2.LVS介绍

LVS 是Linux Virtual Server的简称,也就是 Linux 虚拟服务器,是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,因此性能较高。通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

2.1LVS 的优势与不足

优势:

高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。

稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。

成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。

配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。

支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用

支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等

不足: 软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。 如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂

2.2LVS 核心组件和专业术语

核心组件: LVS的管理工具和内核模块 ipvsadm/ipvs

ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等;

ipvs:工作于内核上的程序,可根据用户定义的集群实现请求转发;

VS:Virtual Server #虚拟服务

    VS:Virtual Server                 #虚拟服务Director, Balancer                 #负载均衡器、分发器RS:Real Server                 #后端请求处理服务器CIP: Client IP                 #用户端IPVIP:Director Virtual IP                 #负载均衡器虚拟IPDIP:Director IP                 #负载均衡器IPRIP:Real Server IP                 #后端请求处理服务器IP

3.ipvsadm命令

核心功能:
集群服务管理:增、删、改
集群服务的RS管理:增、删、改
查看
命令参数
管理集群服务
ipvsadm -A|E -t(tcp)|u(udp)|f(防护墙标签) \
service-address(集群地址) \
[-s scheduler(调度算法)] \
[-p [timeout]] \
[-M netmask] \
[--pepersistence_engine] \
[-b sched-flags]
ipvsadm -D -t|u|f service-address 删除
ipvsadm –C 清空
ipvsadm –R 重载
ipvsadm -S [-n] 保存
管理集群中的real server
ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-w 
weight](权重)
ipvsadm -d -t|u|f service-address -r server-address 删除RS
ipvsadm -L|l [options] 查看rs
ipvsadm -Z [-t|u|f service-address] 清楚计数器
​

4.LVS集群中的增删改

4.1.管理集群服务中的增删改

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] -A #添加 -E #修改 -t #tcp服务 -u #udp服务 -s #指定调度算法,默认为WLC -p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver -f #firewall mask 火墙标记,是一个数字

#增加
[root@DR-server ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@DR-server ~]# ipvsadm -A -f 66 -p 3000
#修改
[root@DR-server ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 3000
#删除
[root@DR-server ~]# ipvsadm -D -t 172.25.254.100:80
[root@DR-server ~]# ipvsadm -D -f 66
​

4.2.管理集群中RealServer的曾增删改

ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]

-a #添加realserver
-e #更改realserver
-t #tcp协议
-u #udp协议
-f #火墙 标签
-r #realserver地址
-g #直连路由模式
-i #ipip隧道模式
-m   #nat模式
-w   #设定权重
-Z   #清空计数器
-C   #清空lvs策略
-L   #查看lvs策略
-n   #不做解析
--rate :输出速率信息
#添加
[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30 -m
[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.40 -m -w 2
#更改
[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -m -w 1
[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -i -w 1
#删除
[root@DR-server ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30
[root@DR-server ~]# ipvsadm -Ln
[root@DR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS   InPPS   OutPPS   InBPS   OutBPS-> RemoteAddress:Port
TCP 172.25.254.100:80                   0       0       0       0       0-> 192.168.0.30:80                     0       0       0       0       0-> 192.168.0.40:80                     0       0       0       0       0
[root@DR-server ~]# ipvsadm -C
[root@DR-server ~]# ipvsadm -Z -t 172.25.254.20:80
[root@DR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS   InPPS   OutPPS   InBPS   OutBPS-> RemoteAddress:Port
TCP 172.25.254.20:80                   0       0       0       0       0-> 192.168.0.30:80                     0       0       0       0       0-> 192.168.0.40:80                     0       0       0       0       0
​

5.LVS负载均衡四种工作模式

5.1NAT模式(VS-NAT)

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。

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

5.2实例练习

为RS2设置ip ,重启网卡,检查网关和ip

为RS1设置IP,重启网卡,检查网关和ip

配置LVS

进入/etc/sysctl.conf文件中添加net.ipv4.ip_forward=1

LVS中打开内核路由功能

在LVS中安装ipvsadm

yum install ipvsadm -y

在LVS中添加调度策略

ipvsadm -A -t 172.25.254.100:80 -s rr
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

保存规则

测试

5.3 DR模式

直接路由(Direct routing)模式(LVS-DR) LVS/DR :直接路由模式,只有进站的数据流量经过分发器(数据链路层负载均衡,因为他修改的是目的mac地址)--利用二层功能mac地址

原理:负载均衡器和RS都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。
优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:要求负载均衡器的网卡必须与物理网卡在一个物理段上。

5.4实例练习

配置LVS

配置路由器

配置客户端

RS主机中使vip不对外响应

在LVS主机中和RS主机中添加vip

重启后在LVS添加调度

测试

5.5防火墙标签解决轮询问题

以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题 当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上

FWM:FireWall Mark

MARK target 可用于给特定的报文打标记,

--set-mark value

其中:value 可为0xffff格式,表示十六进制数字借助于防火墙标记来分类报文,而后基于标记定义集群服 务:可将多个不同的应用使用同一个集群服务进行调度

5.6实例练习

在RS1和RS2中安装mod_ssl并重启apache,使其支持https

]# yum install mod_ssl -y

]# systemctl restart httpd

 ]# yum install mod_ssl -y]# systemctl restart httpd

在LVS中设置调度

在LVS主机中为端口做标记

调整LVS调度

测试

5.7 IP隧道(Tunnel)模式(VS-TUN)

原理:互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。 
缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

5.8FULL-NAT模式

原理:客户端对VIP发起请求,Director接过请求发现是请求后端服务。Direcrot对请求报文做full-nat,把源ip改为Dip,把目标ip转换为任意后端RS的rip,然后发往后端,rs接到请求后,进行响应,相应源ip为Rip目标ip还是DIP,又内部路由路由到Director,Director接到响应报文,进行full-nat。将源地址为VIP,目标地址改为CIP

5.9四种模式的区别

lvs-nat与lvs-fullnat:请求和响应报文都经由Director

   lvs-nat:RIP的网关要指向DIP

   lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通信

lvs-dr与lvs-tun:请求报文要经由Director,但响应报文由RS直接发往Client

   lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发

   lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信

6.lvs持久链接

在我们客户上网过程中有很多情况下需要和服务器进行交互,客户需要提交响应信息给服务器,如果单 纯的进行调度会导致客户填写的表单丢失,为了解决这个问题我们可以用sh算法,但是sh算法比较简单 粗暴,可能会导致调度失衡

解决方案

在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把 这个源的主机调度到了那个RS上 如果在短期(默认360S)内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到 同一台RS上。 如果过了比较长的时间(默认最长时间360s)同源访问再次来访,那么就会被调度到其他的RS上

ipvsadm -AlE -tlulf service-address [-s scheduler] [-p [timeout]]默认360秒 
在lvs调度器中设定
[root@lvs ~]# ipvsadm -E -f 6666 -s rr -p [3000]
[root@lvs ~]# ipvsadm -LnC

7.LVS的调度算法

7.1lvs调度算法类型

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态被分为两种:静态方法和动态方法 静态方法:仅根据算法本身进行调度,不考虑RS的负载情况 动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度

7.2.lvs静态调度算法

1、RR:roundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐 2、WRR:Weighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少 3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往 第一次挑中的RS,从而实现会话绑定 4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

7.3.lvs动态调度算法

主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS会被调度 1、LC:least connections(最少链接发) 适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活 动链接数) 2、WLC:Weighted LC(权重最少链接) 默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight 3、SED:Shortest Expection Delay, 初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接 4、NQ:Never Queue,第一轮均匀分配,后续SED 5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理 6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制 到负载轻的RS

7.4在4.15版本内核以后新增调度算法

1.FO(Weighted Fai Over)调度算法:常用作灰度发布 在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_F OVERLOAD标志)的且权重最高的真实服务器,进行调度 当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD),那么vs调度 器就不会把链接调度到有过载标记的主机中。

2.OVF(Overflow-connection)调度算法基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动 连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关 联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条 件: 未过载(未设置IP_VS_DEST_F OVERLOAD标志) 真实服务器当前的活动连接数量小于其权重值 其权重值不为零

相关文章:

lvs详解及实例配置

目录 1.什么是负载均衡 1.1为什么用负载均衡 1.2.负载均衡类型 1.2.1.四层负载均衡 1.2.2.七层负载均衡 1.3 四层和七层的区别 2.LVS介绍 2.1LVS 的优势与不足 2.2LVS 核心组件和专业术语 3.ipvsadm命令 4.LVS集群中的增删改 4.1.管理集群服务中的增删改 4.2.管理集…...

DAY41-动态规划-买卖股票

LeetCode121. 买卖股票的最佳时机 public int maxProfit(int[] prices) {//dp数组含义&#xff1a;0为持有该股票&#xff0c;1为不持有该股票int[][] dp new int[prices.length][2];dp[0][0]-prices[0];dp[0][1]0;for(int i1;i<prices.length;i) {dp[i][0]Math.max(dp[i-…...

【C#】StringComparer

什么是“文化” 在 .NET 中&#xff0c;“文化”&#xff08;Culture&#xff09;指的是与语言、地区、和区域设置相关的特定信息集合。这些信息包括了日期和时间的格式、数字的表示方式、货币符号、字符串比较规则等等。文化的概念在软件开发中特别重要&#xff0c;因为应用程…...

阿里云服务器远程登录问题解决指南

前言 在使用阿里云服务器时&#xff0c;可能会遇到无法通过密码进行远程登录的情况。这种情况通常是因为操作系统默认禁用了密码登录功能。本文将介绍如何解决这一问题&#xff0c;确保能够顺利地通过密码进行远程登录。 问题描述 当尝试通过Workbench进行密码登录时&#x…...

Datawhale X 魔搭 AI夏令营(2024第四期)AIGC方向 学习笔记

粗谈 这一期是使用可图lora微调进行文生图任务的比赛 文生图也算是跨模态了&#xff0c;输入Prompt文本&#xff0c;输出图片。Prompt很重要&#xff0c;分为prompts和negative prompts。可以指导结果图片的生成。 lora可以参考我上期夏令营的文章:Datawhale AI 夏令营&…...

VScode前端环境搭建

前言 VScode是企业中最常用的前端开发工具&#xff0c;本文描述如何利用VScode搭建前端开发环境 一、安装VScode 下载Vscode 点击前往下载页面 安装 安装时一直点击下一步即可 二、环境配置 1&#xff09;更改语言 点击拓展搜索Chinese后下载第一个&#xff0c;下载完后…...

Python自动化测试之selenium - 元素定位

元素定位 元素定位就是通过元素的信息或者元素层级结构来定位元素。当定位到了重复的属性&#xff0c;默认会定位到第一个标签。 id定位 - find_element_by_id 同一个html页面中id值是唯一的。 模拟在百度输入框中输入想要查找的内容 python 代码解读 复制代码 from sel…...

深入探索 npm cache clean --force:清理 npm 缓存的艺术

npm 是 JavaScript 编程语言的包管理器&#xff0c;它是 Node.js 运行环境的默认包管理器。npm 提供了一个丰富的生态系统&#xff0c;包括数以百万计的可重用代码包。然而&#xff0c;随着时间的推移&#xff0c;npm 的缓存可能会变得庞大&#xff0c;影响性能或导致一些奇怪的…...

如何看待“低代码”开发平台的兴起?

如何看待“低代码”开发平台的兴起&#xff1f; 近年来&#xff0c;“低代码”开发平台如雨后春笋般涌现&#xff0c;承诺让非专业人士也能快速构建应用程序。这种新兴技术正在挑战传统软件开发模式&#xff0c;引发了IT行业的广泛讨论。低代码平台是提高效率的利器&#xff0…...

自动控制——过阻尼、欠阻尼、临界阻尼及无阻尼

自动控制——过阻尼、欠阻尼、临界阻尼及无阻尼 引言 在自动控制系统和振动分析中&#xff0c;系统的阻尼特性对于系统的动态响应至关重要。阻尼决定了系统在受到扰动或输入信号后&#xff0c;如何恢复到稳定状态。本文将详细介绍过阻尼&#xff08;overdamped&#xff09;、…...

从AlphaGo到AlphaPong:AI乒乓球机器人将如何改变乒乓球竞技?

在人工智能领域&#xff0c;谷歌DeepMind的AlphaGo曾以其超凡的围棋能力震惊了世界。而如今&#xff0c;DeepMind又将其技术延伸到了乒乓球领域&#xff0c;推出了乒乓球机器人&#xff0c;被网友戏称为“AlphaPong”。这一机器人使用ABB的IRB1100机械手臂&#xff0c;能够与普…...

荒原之梦:考研期间可以玩游戏吗?

有不少同学&#xff0c;特别是男同学&#xff0c;在考研之前&#xff0c;会有玩游戏的习惯&#xff0c;那么&#xff0c;对于考研的同学来说&#xff0c;就会产生这样一个疑问。在考研备考期间&#xff0c;我还可以玩游戏吗&#xff1f; 其实关于这个问题的答案是因人而异的&am…...

Hive SQL ——窗口函数源码阅读

前言 使用Starrocks引擎中的窗口函数 row_number() over( )对10亿的数据集进行去重操作&#xff0c;BE内存溢出问题频发&#xff08;忘记当时指定的BE内存上限是多少了.....&#xff09;&#xff0c;此时才意识到&#xff0c;开窗操作&#xff0c;如果使用 不当&#xff0c;反而…...

用python的Manim 创建大括号

Brace 是 Manim 中用于创建大括号&#xff08;curly braces&#xff09;的一个对象类。它有几个子类&#xff0c;自定义了不同的功能。下面是每个类的简要解释&#xff1a; 1. ArcBrace 功能: 创建一个环绕弧线的括号。适用于需要围绕弧形线条的场景。用法: 通常用于图形中有…...

白骑士的Matlab教学附加篇 5.2 代码规范与最佳实践

系列目录​​​​​​​ 上一篇&#xff1a;白骑士的Matlab教学附加篇 5.1 MATLAB开发工具 在 MATLAB 编程中&#xff0c;遵循良好的代码规范和最佳实践有助于提高代码的可读性、可维护性和可重用性。无论是变量命名、注释风格&#xff0c;还是代码格式化&#xff0c;合理的规…...

Javaweb--SpringBoot

1.SpringBoot入门 简化Spring开发的一个框架&#xff0c;Spring Boot 旨在帮助开发者快速搭建 Spring 框架。 整个Spring的一个合集&#xff0c;可以简化配置 2.微服务 &#xff08;1&#xff09;微服务就是一种架构风格 &#xff08;2&#xff09;微服务就是把一个项目拆…...

【数据结构】算法的时间复杂度与空间复杂度

计算机考研408-数据结构笔记本之——第一章 绪论 1.2 算法和算法评价 1.2.2 算法效率的度量 算法效率的度量是通过时间复杂度和空间复杂度来描述的。 1.空间复杂度 算法的空间复杂度S(n)定义为该算法所需的存储空间&#xff0c;它是问题规模n的函数&#xff0c;记为 S(n) …...

PyCharm环境python开发上位机

目录 前言&#xff1a; 一、pycharm新建工程 1、打开 pycharm软件&#xff0c;新建工程 二、配置UI界面 1、新建UI界面 1&#xff09;创建 Main Window 2&#xff09;拖动控件到 MainWindow 中 3&#xff09;设置信号与槽 4&#xff09;ctrlS 保存ui文件 2、将ui文件转…...

ROS 2 参数使用

ROS 2 参数使用 介绍 ROS 2 (Robot Operating System 2) 是一个为机器人开发提供支持的开源框架。它继承了 ROS 1 的优点&#xff0c;并且在架构上做了许多改进以支持分布式系统、实时性、安全性等要求。ROS 2 中的参数是用于配置节点行为的关键部分&#xff0c;允许我们动态…...

QT的Model-View实现大批量数据展示

一、完整源代码 1.项目结构 2.各文件代码展示 define.h #pragma once #include <QVector>//学生信息 typedef struct _STUDENT {QString name; //姓名int score1; //语文成绩int score2; //数学成绩int score3; //外语成绩_STUDENT(){name ""…...

2024年8月7日(mysql主从 )

回顾 主服务器 [rootmaster_mysql ~]# yum -y install rsync [rootmaster_mysql ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar [rootmaster_mysql ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz [rootmaster_mysql ~]# cp -r mysql-8.0.33-linux-glibc2.…...

接口/自动化测试 面试集合

1. apache和nginx的区别? Nginx相对Apache的优点: 轻量级&#xff0c;同样起web服务&#xff0c;比apache占用更少的内存及资源; 抗并发&#xff0c;nginx处理请求是异步非阻塞的&#xff0c;支持更多的并发连接&#xff0c;而apache则是阻塞型的&#xff0c;在高 并发下ngi…...

菜鸡勇闯第136场双周赛

菜鸡鼓足了勇气报名了力扣双周赛&#xff08;后来复盘才知道双周赛更难一点&#xff0c;我真是头铁。。&#xff09; 没想到还拿了个竞赛名次哈哈哈哈哈还在前50%&#xff0c;小力它真的&#xff0c;我哭死 为什么我本科被高数老师忽悠&#xff0c;去打了两年数模o(≧口≦)o 每…...

趋动科技陈飞:从小模型到大模型,AI时代下的数据中心建设

自AI大模型横空出世&#xff0c;不断推动着AI从学术界到产业界向大众破圈&#xff0c;新的时代正在来临。11月15-16日&#xff0c;由CDCC主办的“2023第11届数据中心标准大会”在北京国家会议中心盛大开幕。 本届大会的主题围绕“AI时代 重塑未来”&#xff0c;聚焦数据中心领…...

yolo v8 + flask部署到云服务器,以及问题记录

环境安装 1、运行项目报错&#xff1a;no python application found, check your startup logs for errors 在云服务器pytorch版本安装错了&#xff0c;安装了GPU版本&#xff0c;需要安装CPU版本 # CPU only 使用下面这段代码避免出现第二个错误 pip install torch2.3.1 to…...

【科研必备插件】easyscholar如何使文章显示期刊影响因子与分区等级

简要介绍 EasyScholar 是一个微软 Edge 浏览器的扩展程序&#xff0c;可以显示会议、期刊等级。可支持在各大论文搜索网站&#xff0c;显示各种期刊、会议等级排名 要想你的知网页面如下图所示&#xff0c;快来获取安装&#xff0c;快速科研有方法 插件安装教程 ①打开浏览器…...

UE5 UrlEncode转换

调用接口时用到了 UFUNCTION(BlueprintPure, Category "FuncLib", meta (Keywords "URL1"))static FString StringToURLEncode(const FString& str1);FString UBasicFuncLib::StringToURLEncode(const FString& str1){return FGenericPlatformH…...

【QML】Qt.rgba()的正确使用方法

1. 问题 设置颜色 color: Qt.rgba(65,105,225,255) &#xff0c;应该是蓝色&#xff0c;却显示白色。 2. 正确方法 //正确代码 color: Qt.rgba(65/255, 105/255, 225/255, 255/255)...

centos7.9 docker安装

1、不要通过yum直接安装 具体原因&#xff1a; CentOS 6 因内核太旧&#xff0c;即使支持安装 docker&#xff0c;但会有各种问题&#xff0c;不建议安装CentOS 7 的 extras 源虽然可以安装 docker&#xff0c;但包比较旧&#xff0c;建议从官方源或镜像源站点下载安装 docke…...

spring操作数据库

xml版 程序结构 配置文件 dbUtil-阿帕奇提供操作数据库的插件 核心类&#xff1a;QueryRunner .query() 查询 .update() 增删改 <dependencies><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spri…...