LVS詳解

LVS(Linux virtual server)

簡介

即linux虛擬服務器

四層負載均衡基本上都會使用 LVS,據了解 BAT 等大廠都是 LVS 重度使用者,就是因為 LVS 非常出色的性能,能為公司節省巨大的成本。LVS,全稱 Linux Virtual Server 是由國人章文嵩博士發起的一個開源的項目,在社區具有很大的熱度,是一個基于四層、具有強大性能的反向代理服務器。它現在是標準內核的一部分。

它具備可靠性、高性能、可擴展性和可操作性的特點,從而以低廉的成本實現最優的性能。LVS工作模式分為NAT模式、TUN模式、以及DR模式

相關術語:

DS:Director Server。指的是前端負載均衡器節點。

RS:Real Server。后端真實的工作服務器。

VIP:Virtual IP 向外部直接面向用戶請求,作為用戶請求的目標的IP地址。

DIP:Director Server IP,主要用于和內部主機通訊的IP地址。

RIP:Real Server IP,后端服務器的IP地址。

CIP:Client IP,訪問客戶端的IP地址。

結構

LVS采用三層結構,分別是:

第一層: 負載調度器

第二層: 服務池

第三層:共享存儲

負載調度器(load balancer/ Director),是整個集群的總代理,它有兩個網卡,一個網卡面對訪問網

站的客戶端,一個網卡面對整個集群的內部。負責將客戶端的請求發送到一組服務器上執行,而客戶也

認為服務是來自這臺主的。舉個生動的例子,集群是個公司,負載調度器就是在外接攬生意,將接攬到

的生意分發給后臺的真正干活的真正的主機們。當然需要將活按照一定的算法分發下去,讓大家都公平

的干活。

服務器池(server pool/ Realserver),是一組真正執行客戶請求的服務器,可以當做WEB服務器。就

是上面例子中的小員工。

共享存儲(shared storage),它為服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相

同的內容,提供相同的服務。一個公司得有一個后臺賬目吧,這才能協調。不然客戶把錢付給了A,而

換B接待客戶,因為沒有相同的賬目。B說客戶沒付錢,那這樣就不是客戶體驗度的問題了。

負載均衡策略

LVS的DR模式

DR:direct routing(直接路由技術)

原理:

  1. 客戶端發送請求到DS的 VIP,數據包的目標 IP 為 VIP,目標 MAC 為調度器的 MAC

  2. 調度器接收數據包,根據負載均衡算法選擇 RS

  3. 調度器不修改 IP 地址,僅將數據包的目標 MAC 地址改為 RS 的 MAC(通過 ARP 獲取 RS 的 MAC 地址),然后轉發給 RS。此時數據包的目標 IP 仍為 VIP,源 IP 為CIP

  4. RS 收到數據包后,發現目標 IP 是自身配置的 VIP(雖禁用 ARP 響應,但可接收發往 VIP 的數據包),于是處理請求并生成響應

  5. RS 直接將響應數據包返回給客戶端(源 IP 為 VIP,目標 IP 為客戶端 IP),無需經過調度器

RS 響應時使用 VIP 作為源 IP,客戶端認為響應來自調度器(VIP),實現了負載均衡的透明性

  • 優點:響應速度快,因為后端服務器可以直接將響應返回給客戶端,減輕了 LVS 負載均衡器的壓力。

  • 限制

  • 所有服務器需要在同一個物理網絡中,并且后端服務器的網關不能指向 LVS 負載均衡器。調度器與 RS 必須在同一網段(受 MAC 廣播限制)

  • RS 需配置 VIP 并禁用 ARP 響應

firewall-cmd --add-masquerade
其作用是開啟網絡地址轉換(NAT)功能,也稱為 IP 偽裝(Masquerading)

特性

1.請求報文一定經過ds,而返還結果一定不經過ds,直接發給client

2.rs和ds要在同一物理網絡中

案例
ip配置

client

router

?lvs

rs1

rs2

1.在router中啟動路由內核功能
[root@router ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@router ~]# sysctl -p
net.ipv4.ip_forward = 1
2.在rs1和rs2中解決相應問題
DR 模型中各主機上均需要配置 VIP ,解決地址沖突的方式有三種:
(1) 在前端網關做靜態綁定
(2) 在各 RS 使用 arptables
(3) 在各 RS 修改內核參數,來限制 arp 響應和通告的級別
限制響應級別 :arp_ignore
0: 默認值,表示可使用本地任意接口上配置的任意地址進行響應
1: 僅在請求的目標 IP 配置在本地主機的接收到請求報文的接口上時,才給予響應
限制通告級別 :arp_announce
0: 默認值,把本機所有接口的所有信息向每個接口的網絡進行通告
1: 盡量避免將接口信息向非直接連接網絡進行通告
2: 必須避免將接口信息向非本網絡進行通告
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
3.在rs1和2中安裝httpd,關閉防火墻
[root@RS1 ~]# yum install httpd -y 
[root@RS1 ~]# echo "welcome to RS1 - 192.168.0.10" > /var/www/html/index.html
[root@RS1 ~]# systemctl restart httpd
[root@RS1 ~]# systemctl stop firewalld
[root@RS1 ~]# yum install httpd -y 
[root@RS1 ~]# echo "welcome to RS1 - 192.168.0.10" > /var/www/html/index.html
[root@RS1 ~]# systemctl restart httpd
[root@RS1 ~]# systemctl stop firewalld
4.lvs中安裝ipvsadm添加策略
[root@lvs ~]# yum install ipvsadm -y[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.200:80 wrr-> 192.168.0.10:80              Route   1      0          0         -> 192.168.0.20:80              Route   2      0          0 [root@lvs ~]# systemctl stop firewalld
測試
[root@client ~]# for i in {1..10}; do curl 192.168.0.200; done
welcome to RS2 - 192.168.0.20
welcome to RS1 - 192.168.0.10
welcome to RS2 - 192.168.0.20
welcome to RS2 - 192.168.0.20
welcome to RS1 - 192.168.0.10
welcome to RS2 - 192.168.0.20
welcome to RS2 - 192.168.0.20
welcome to RS1 - 192.168.0.10
welcome to RS2 - 192.168.0.20
welcome to RS2 - 192.168.0.20

LVS的NAT模式

NAT:network address translation(網絡地址翻譯)

  1. 當用戶請求到達Director Server。此時報文的源IP為CIP,目標IP為VIP

  2. DS接收數據包,根據負載均衡算法選擇一臺RS

    調度器修改數據包的目標 IP 地址為 RS 的 IP,同時記錄連接狀態(通過 NAT 表或 conntrack 跟蹤),然后轉發給 RS

  3. Real Server收到數據包開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IP為CIP

  4. Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP

  5. 將修改后的響應數據包轉發給客戶端,完成一次請求響應流程

  • 優點:配置簡單,只需要一個公網 IP 地址就可以實現負載均衡。

  • 缺點:LVS 負載均衡器需要處理所有的請求和響應,容易成為性能瓶頸;而且后端服務器必須將網關指向 LVS 負載均衡器。

特性

1.?dip和rip在同一網段

2.RS使用私有地址,網關指向DIP

3.請求和響應報文都需要經過Director Server

案例
ip配置

lvs配置

在?lvs?中啟用內核路由功能

[root@lvs ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

添加策略?

設置lvs策略
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr-> 192.168.0.10:80              Masq    1      0          0         -> 192.168.0.20:80              Masq    1      0          0   

安裝ipvsadm?

[root@lvs ~]# yum install ipvsadm -y
在rs1和r2中安裝httpd,關閉防火墻
[root@webserver1 ~]# yum install httpd -y 
[root@webserver1 ~]# echo "welcome to webserver1 - 192.168.0.10" > /var/www/html/index.html
[root@webserver1 ~]# systemctl restart httpd
[root@webserver1 ~]# systemctl stop firewalld
[root@webserver2 ~]# yum install httpd -y
[root@webserver2 ~]# echo "welcome to webserver2 - 192.168.0.20" > /var/www/html/index.html
[root@webserver2 ~]# systemctl restart httpd
[root@webserver2 ~]# systemctl stop firewalld
測試
[root@client ~]# for i in {1..10}; do curl 172.25.254.100; done
welcome to webserver2 - 192.168.0.20
welcome to webserver1 - 192.168.0.10
welcome to webserver2 - 192.168.0.20
welcome to webserver1 - 192.168.0.10
welcome to webserver2 - 192.168.0.20
welcome to webserver1 - 192.168.0.10
welcome to webserver2 - 192.168.0.20
welcome to webserver1 - 192.168.0.10
welcome to webserver2 - 192.168.0.20
welcome to webserver1 - 192.168.0.10

LVS的TUN模式

Tunnel 模式在國內使用的比較少,不過據說騰訊使用了大量的 Tunnel 模式。它也是一種單臂的模式,只有請求數據會經過 lvs,響應數據直接從后端服務器發送給客戶端,性能也很強大,同時支持跨機房。下邊繼續看圖分析原理

  1. 客戶端請求階段

    • 客戶端發送請求到調度器的 VIP,數據包的目標 IP 為 VIP,源 IP 為客戶端 IP。

    • 調度器接收數據包,根據負載均衡算法選擇 RS。

    • 關鍵操作:調度器將原始數據包封裝在新的 IP 數據包中(外層 IP 頭的源 IP 為調度器 IP,目標 IP 為 RS 的 IP),通過 IP 隧道轉發給 RS。此時原始數據包的目標 IP 仍為 VIP,源 IP 為客戶端 IP。

  2. RS 解封裝與響應階段

    • RS 收到隧道數據包后,解封裝獲取原始數據包,發現目標 IP 是自身配置的 VIP,于是處理請求并生成響應。

    • RS 直接將響應數據包返回給客戶端(源 IP 為 VIP,目標 IP 為客戶端 IP),無需經過調度器。

    • 關鍵邏輯:RS 響應時使用 VIP 作為源 IP,客戶端認為響應來自調度器(VIP),實現跨網段的負載均衡

  • 優點:后端服務器可以分布在不同的地理位置,擴展性好;LVS 負載均衡器只處理請求的轉發,壓力相對較小。

  • 缺點:配置復雜,需要支持 IP 隧道協議;增加了數據包的封裝和解封裝過程,會帶來一定的性能開銷。

調度算法

靜態算法
rr

RR(輪詢:Round Robin), 算法就是按依次循環的方式將請求調度到不同的服務器上,該算法最大的特點就是實現簡單。輪詢算法假設所有的服務器處理請求的能力都一樣的,調度器會將所有的請求平均分配給每個真實服務器。特點是將收到的訪問請求按順序輪流分配給集群中的各節點真實服務器中,不管服務器實際的連接數和系統負載。輪詢 RS分別被調度,當RS配置有差別時不推薦

wrr

WRR(加權輪詢:Weighted Round Robin),算法主要是對輪詢算法的一種優化與補充,LVS會考慮每臺服務器的性能,并給每臺服務器添加一個權值,如果服務器A的權值為1,服務器B的權值為2,則調度器調度到服務器B的請求會是服務器A的兩倍。權值越高的服務器,處理的請求越多。加權輪詢根據RS的配置進行加權調度,性能差的RS被調度的次數少

sh

SH( 源地址散列調度:Source Hashing )源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定

算法先根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且并未超載,將請求發送到該服務器,否則返回空。它采用的散列函數與目標地址散列調度算法的相同,它的算法流程與目標地址散列調度算法的基本相似。

dh

目標地址哈希,第一次輪詢調度至RS,后續將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商

DH(目標地址散列調度:Destination Hashing )算法先根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且并未超載,將請求發送到該服務器,否則返回空。

動態算法
  1. LC(最小連接調度:Least Connections )算法是把新的連接請求分配到當前連接數最小的服務器。最小連接調度是一種動態的調度算法,它通過服務器當前活躍的連接數來估計服務器的情況。調度器需要記錄各個服務器已建立連接的數目,當一個請求被調度到某臺服務器,其連接數加1;當連接中斷或者超時,其連接數減1。

適用于長連接應用Overhead(負載值)=activeconns(活動鏈接數) x 256+inactiveconns(非活動鏈接數) (集群系統的真實服務器具有相近的系統性能,采用最小連接調度算法可以比較好地均衡負載。) ?

  1. WLC(加權最少連接:(Weight Least Connections )算法是最小連接調度的超集,各個服務器相應的權值表示其處理性能。服務器的缺省權值為1,系統管理員可以動態地設置服務器的權值。加權最小連接調度在調度新連接時盡可能使服務器的已建立連接數和其權值成比例。調度器可以自動問詢真實服務器的負載情況,并動態地調整其權值。默認調度方法Overhead=(activeconns x 256+inactiveconns)/weight

  2. LBLC(基于局部的最少連接調度:Locality-Based Least Connections )算法是針對請求報文的目標IP地址的 負載均衡調度,目前主要用于Cache集群系統,因為在Cache集群客戶請求報文的目標IP地址是變化的。這里假設任何后端服務器都可以處理任一請求,算法的設計目標是在服務器的負載基本平衡情況下,將相同目標IP地址的請求調度到同一臺服務器,來提高各臺服務器的訪問局部性和Cache命中率,從而提升整個集群系統的處理能力。LBLC調度算法先根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處于一半的工作負載,則使用’最少連接’的原則選出一個可用的服務器,將請求發送到服務器。

  3. LBLCR(帶復制的基于局部性的最少連接:Locality-Based Least Connections with Replication )算法也是針對目標IP地址的負載均衡,目前主要用于Cache集群系統,它與LBLC算法不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。按’最小連接’原則從該服務器組中選出一一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按’最小連接’原則從整個集群中選出一臺服務器,將該服務器加入到這個服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程度。

  4. SED (最短的期望的延遲調度:Shortest Expected Delay )算法基于WLC算法。舉個例子吧,ABC三臺服務器的權重分別為1、2、3 。那么如果使用WLC算法的話一個新請求進入時它可能會分給ABC中的任意一個。使用SED算法后會進行一個運算 A:(1+1)/1=2 B:(1+2)/2=3/2 C:(1+3)/3=4/3 就把請求交給得出運算結果最小的服務器。 預期的延遲時間為(Ci +1)/ Ui,其中 Ci 是第 i 個服務器上的連接數,而 Ui 是第 i 個服務器的固定服務速率(權重)

初始連接高權重優先Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,當node1的權重為1,node2的權重為10,經過運算前幾次的調度都會被node2承接 ?

  1. NQ(最少隊列調度:Never Queue )算法,無需隊列。如果有realserver的連接數等于0就直接分配過去,不需要在進行SED運算。

軟件相關信息

配置文件:/etc/sysconfig/ipvsadm-config
程序包: ipvsadm
Unit File: ipvsadm.service
主程序: /usr/sbin/ipvsadm
規則保存工具: /usr/sbin/ipvsadm-save
規則重載工具: /usr/sbin/ipvsadm-restore
ipvs 調度規則文件: /etc/sysconfig/ipvsadm

ipvsadm

ipvsadm命令是LVS在應用層的管理命令,我們可以通過這個命令去管理LVS的配置。
ipvsadm是一個工具,同時它也是一條命令,用于管理LVS的策略規則。

子命令
--add-service ? ? -A ? ? ?  添加一個集群服務,需要使用選項--edit-service ?  -E ? ? ?  編輯一個集群服務,需要使用選項--delete-service  -D ? ? ?  刪除指定集群服務,需要使用選項--clear ? ? ? ? ? -C ? ? ?  刪除所有集群服務,包括真實服務器轉發策略規則--restore ? ? ? ? -R ? ? ?  從標準輸入中恢復策略規則--save ? ? ? ? ?  -S ? ? ?  保存策略規則到標準輸出--add-server ? ?  -a ? ? ?  添加一個真實服務器,需要使用選項--edit-server ? ? -e ? ? ?  編輯一個真實服務器,需要使用選項--delete-server ? -d ? ? ?  刪除一個真實服務器,需要使用選項--list ? ? ? ? ?  -L|-l ? ? 查看集群服務列表,包括真實服務器轉發策略規則--zero ? ? ? ? ?  -Z ? ? ?  計數器清零。清除連接數、包轉發等數量統計信息
--set <超時時間> ? ? ? ? ?  設置TCP、TCPFIN(TCP關閉連接狀態)、UDP連接超時時間,用于會話保持。一般情況下TCP和UDP超時時間保持默認就好,TCPFIN可以根據情況設定,指定它則用戶請求連接關閉,該連接則會變為非活躍(InActive)空閑等待狀態,在空閑等待時間內,如果來自同一源IP的請求,則還會轉發給后端的同一臺真實服務器上--start-daemon ? ? ? ? ? ?  開啟連接同步守護進程。在選項后面指定自己是Master(主)還是backup(備),主負載調度器會同步所有策略及連接狀態到備負載調度器,當主故障,備可以接替其工作--stop-daemon ? ? ? ? ? ? ? 停止連接同步守護進程--help ? ? ? ? ?  -h ? ? ?  顯示幫助信息

選項
--tcp-service  -t  <集群服務地址> ? 允許集群服務使用的傳輸協議為TCP。<IP:Port>--udp-service  -u <集群服務地址> ?  允許集群服務使用的傳輸協議為UDP。<IP:Port>--fwmark-service  -f <防火墻標識> ? 使用一個整數值來防火墻標識集群服務,而不是地址、端口和協議使用它,我們可以通過結合IPtables將多個以調度器為目標的端口定義成一個防火墻標識,由ipvsdam通過此項關聯標識,則可以實現對一個IP多端口調度,即實現后端服務器可以開放多個服務--scheduler ?  -s scheduler ? ? ? ? 指定集群服務使用的調度算法:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認為wlc--persistent ? -p <超時時間> ? ? ?  開啟持久化服務,開啟它則表示在指定時間內,來自同一IP的請求都會轉發到后端同一臺真實服務器上--netmask ? ?  -M <網絡掩碼> ? ? ?  使用網絡掩碼來屏蔽持久化來源IP的地址范圍,默認值為255.255.255.255,即所有來源IP請求都會享受持久化服務--real-server  -r <真實服務器地址>  指定真實服務器的主機IP與端口--gatewaying ? -g ? ? ? ? ? ? ? ? ? 指定真實服務器轉發工作模式,使用DR模式,默認--ipip ? ? ? ? -i ? ? ? ? ? ? ? ? ? 指定真實服務器轉發工作模式,使用TUN模式--masquerading -m ? ? ? ? ? ? ? ? ? 指定真實服務器轉發工作模式,使用NAT模式--weight ? ? ? -w <權重值> ? ? ? ?  指定真實服務器的權重值--u-threshold  -x <上閥值> ? ? ? ?  設置轉發請求的最大上連接閥值,范圍為0~65535,當當連接數超過指定上限時,LVS則不會轉發請求 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --l-threshold  -y <下閥值> ? ? ? ?  設置轉發請求的下連接閥值,范圍為0~65535,當連接數降低至指定值時,LVS則繼續提供服務,默認值為0--mcast-interface interface ? ? ? ? 設置用于連接同步守護進程的組播接口--syncid sid ? ? ? ? ? ? ? ? ? ? ?  設置連接同步守護進程的SID號,用于標識,范圍0~255--connection ? -c ? ? ? ? ? ? ? ? ? 顯示連接信息,一般與"-l"連用--timeout ? ? ? ? ? ? ? ? ? ? ? ? ? 顯示TCP、TCPFIN、UDP超時時間信息,一般與"-l"連用--daemon ? ? ? ? ? ? ? ? ? ? ? ? ?  顯示連接同步守護信息,一般與"-l"連用--stats ? ? ? ? ? ? ? ? ? ? ? ? ? ? 顯示統計信息,一般與"-l"連用--rate ? ? ? ? ? ? ? ? ? ? ? ? ? ?  顯示轉發速率信息,一般與"-l"連用--exact ? ? ? ? ? ? ? ? ? ? ? ? ? ? 顯示數據包和字節計數器的確切值,擴大字符長度--thresholds ? ? ? ? ? ? ? ? ? ? ?  顯示閥值信息,一般與"-l"連用--persistent-conn ? ? ? ? ? ? ? ? ? 顯示持久化連接信息,一般與"-l"連用--numeric ? ?  -n ? ? ? ? ? ? ? ? ? 地址和端口以數字格式顯示,一般與"-l"連用--sched-flags  -b <標識> ? ? ? ? ?  設置調度算法的范圍標識,用于SH算法,有兩個標識:sh-fallback,如果真實服務器不可用,則將其轉發到其他真實服務器上。sh-port,將源地址的端口號也添加到散列鍵=值中
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89525.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89525.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89525.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux內核設計與實現 - 第5章 系統調用

目錄一、系統調用概述二、系統調用實現機制四、性能優化技術五、常見問題排查六、安全注意事項一、系統調用概述 定義 用戶空間訪問內核功能的唯一合法入口提供硬件抽象接口&#xff0c;保證系統穩定和安全 與API區別 特性系統調用API執行層級內核態用戶態實現方式軟中斷(int …

紙板制造糊機操作

糊機操作技巧:開機流程&#xff1a;首先&#xff0c;一切的一切&#xff0c;要看懂生管&#xff0c;我們要用哪個楞別&#xff0c;再看哪個門幅和材質。 也就是說&#xff0c;一切的一切&#xff0c;要生產了&#xff0c;原紙不能用錯了吧&#xff01; 第一步&#xff1a; 壓壓…

WPF 多窗口分文件實現方案

WPF 多窗口分文件實現方案 項目文件結構 WindowSwitcher/ ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Views/ │ ├── SettingsWindow.xaml │ ├── SettingsWindow.xaml.cs │ ├── DataWindow.xaml │ ├─…

在服務器(ECS)部署 MySQL 操作流程

在部署 MySQL 數據庫之前需要準備好服務器環境。可以通過以下兩種方式來準備部署服務器&#xff1a;云服務器&#xff08;ECS&#xff09;&#xff0c;如&#xff1a;阿里云、華為云、騰訊云等。IDC服務器。 現以阿里云服務器&#xff08;ECS&#xff09;Windows版本來進行部署…

Java File 類詳解:從基礎操作到實戰應用,掌握文件與目錄處理全貌

作為一名 Java 開發工程師&#xff0c;你一定在實際開發中遇到過需要操作文件或目錄的場景&#xff0c;例如&#xff1a;讀寫配置文件、上傳下載、日志處理、文件遍歷、路徑管理等。Java 提供了 java.io.File 類來幫助開發者完成這些任務。本文將帶你全面掌握&#xff1a;File …

嵌入式學習-PyTorch(9)-day25

進入尾聲&#xff0c;一個完整的模型訓練 &#xff0c;點亮的第一個led#自己注釋版 import torch import torchvision.datasets from torch import nn from torch.utils.tensorboard import SummaryWriter import time # from model import * from torch.utils.data import Dat…

用AI做帶貨視頻評論分析進階提分【Datawhale AI 夏令營】

文章目錄回顧賽題優化1??優化2??回顧賽題 模塊內容類型說明/示例賽題背景概述參賽者需構建端到端評論分析系統&#xff0c;實現商品識別、多維情感分析、評論聚類與主題提煉三大任務。商品識別輸入video_desc&#xff08;視頻描述&#xff09; video_tags&#xff08;標簽…

Redis常見數據結構詳細介紹

Redis 作為一款高性能的開源內存數據庫&#xff0c;憑借其豐富多樣的數據結構和出色的性能&#xff0c;在緩存、會話存儲、實時分析等眾多場景中得到了廣泛應用。下面將詳細介紹 Redis 主要的數據結構&#xff0c;包括它們的類型、具體用法和適用場景。1、字符串&#xff08;St…

HAMR硬盤高溫寫入的可靠性問題

熱輔助磁記錄(HAMR)作為突破傳統磁記錄密度極限的下一代存儲技術,其在數據中心大規模應用的核心挑戰在于可靠性保障。 擴展閱讀: 下一個存儲戰場:HAMR技術HDD HAMR技術進入云存儲市場! 漫談HAMR硬盤的可靠性 隨著存儲密度向4Tbpsi邁進,傳統磁記錄技術遭遇"三難困境…

使用llama-factory進行qwen3模型微調

運行環境 Linux 系統(ubuntu) Gpu (NVIDIA) 安裝部署 llama factory CUDA 安裝 首先,在 https://developer.nvidia.com/cuda-gpus 查看您的 GPU 是否支持CUDA 保證當前 Linux 版本支持CUDA. 在命令行中輸入 uname -m && cat /etc/*release,應當看到類似的輸出 x8…

tcp/udp調試工具

幾款tcp/udp調試工具 下載地址&#xff1a;夸克網盤

智慧光伏發電信息化系統需求文檔

以下是從產品經理角度撰寫的智慧光伏發電信息化系統需求文檔&#xff0c;聚焦光伏行業痛點與業務價值&#xff0c;遵循標準PRD結構&#xff1a;智慧光伏發電信息化系統需求文檔 版本&#xff1a;1.0 日期&#xff1a;2025年7月19日 作者&#xff1a;產品經理視角一、文檔概述 1…

ARCS系統機器視覺實戰(直播回放)

ARCS系統機器視覺實戰本次培訓主要圍繞ARCS操作系統中的視覺與機器人同步應用展開&#xff0c;詳細講解了網絡配置、視覺軟件設置、九點標定、機器人程序編寫以及數據通信等內容。以下是關鍵要點提煉&#xff1a; 網絡配置 為機器人、相機和電腦分別設置靜態IP地址&#xff0c;…

Http請求中的特殊字符

問題 一個 springboot 應用&#xff0c;包含如下 controller RestController public class DemoController {GetMapping("/get")public ResponseEntity<String> get(RequestParam(value "cid2") String cid2) 準備測試數據 String cid2 "…

告別手動報表開發!描述數據維度,AI 自動生成 SQL 查詢 + Java 導出接口

Java 開發中&#xff0c;報表模塊往往是 “隱形耗時大戶”—— 產品經理要 “按地區、月份統計訂單量”&#xff0c;開發者需先編寫 SQL 查詢&#xff0c;再手動開發導出接口&#xff0c;稍作調整又要重新調試&#xff0c;耗費大量時間在重復勞動上。飛算 JavaAI 通過 “數據維…

函數設計測試用例

//歸并排序:public static void mergeSort(int[] a,int left,int right){if(left > right)return;int mid left(right -left)/2;mergeSort(a,left,mid);mergeSort(a,mid1,right);int[] tmp new int[a.length];int l left,r mid1,k left;while(l<mid && r<…

Vmware虛擬機使用僅主機模式共享物理網卡訪問互聯網

一、概述 Vmware虛擬機網卡模式有三種&#xff1a;橋接模式、僅主機模式、NAT模式。默認情況下&#xff0c;Vmware虛擬機使用僅主機模式不能訪問互聯網。因此&#xff0c;虛擬機可以共享宿主機的物理網卡訪問互聯網。 三種網卡模式的區別二、Vmware網絡設置 2.1、調整虛擬網絡 …

聲畫同步!5 個音視頻素材適配的網站,創作更和諧

視頻畫面和背景音樂不搭&#xff1f;音效和動作不同步&#xff1f;好的作品&#xff0c;聲音和畫面必須像齒輪一樣咬合。這 5 個專注 “聲畫同步” 的素材網站&#xff0c;能讓音視頻素材精準匹配&#xff0c;從旋律到節奏&#xff0c;從音效到畫面&#xff0c;都默契十足&…

13.多種I/O函數

前言 之前的示例中&#xff0c;基于Linux的使用read&write函數完成數據I/O&#xff0c;基于Windows的則使用send&recv函數。這次的Linux示例也將使用send& recv函數&#xff0c;并講解其與read&write函數相比的優點。還將介紹幾種其他的I/O函數。 一、send &am…

設計模式五:橋模式(Bridge Pattern)

橋模式是一種結構型設計模式&#xff0c;它將抽象部分與其實現部分分離&#xff0c;使它們可以獨立變化。這種模式通過提供橋梁結構將抽象和實現解耦。橋模式的結構橋模式包含以下主要角色&#xff1a;Abstraction&#xff08;抽象類&#xff09;&#xff1a;定義抽象接口&…