技術面試問題總結二

一、lvs的四種工作模式:

LVS 有四種主要工作模式:NAT 模式DR 模式TUN 模式Full-NAT 模式

1、NAT模式:

工作原理

  • LVS 作為客戶端和真實服務器(RS)之間的中間節點,接收客戶端請求后,修改請求的目標 IP 地址(改為 RS 的 IP),并轉發給 RS。
  • RS 處理請求后,直接將響應返回給 LVS(需配置網關為 LVS),LVS 再修改響應的源 IP 地址(改回 VIP),返回給客戶端。

關鍵特點

  • 單一 IP 暴露:客戶端只看到 LVS 的虛擬 IP(VIP),RS 的真實 IP 對客戶端透明。
  • 請求和響應都經過 LVS:LVS 成為流量瓶頸(尤其在大流量場景下)。
  • RS 必須與 LVS 在同一網段:RS 的網關需指向 LVS。

優點

  • 實現簡單,無需對 RS 進行特殊配置。
  • 支持跨網段部署(只要 LVS 能訪問 RS)。

缺點

  • LVS 需處理雙向流量,性能受限。
  • RS 數量不宜過多(通常幾十臺以內)。

應用場景

????????小規模負載均衡,如企業內部應用;安全性要求高,需隱藏 RS 真實 IP。

2、DR模式

工作原理

  • LVS 接收客戶端請求后,不修改 IP 頭部,而是在數據鏈路層修改 MAC 地址(將目標 MAC 改為 RS 的 MAC),直接轉發給 RS。
  • RS 處理請求后,直接將響應返回給客戶端(無需經過 LVS),通過配置 VIP 別名實現。

關鍵特點

  • 請求經過 LVS,響應直接返回客戶端:LVS 僅處理入站流量,性能顯著提升。
  • 所有設備需在同一物理網段:依賴二層轉發(如交換機),跨網段需特殊配置。
  • RS 需配置 VIP 別名:但 RS 不會將 VIP 作為默認網關。

優點

  • 性能高,適用于大流量場景(如電商、視頻網站)。
  • LVS 負載壓力小,可支持更多 RS。

缺點

  • 部署復雜度高(需配置 ARP 抑制)。
  • 跨網段支持有限。

應用場景

????????高并發場景,如大型網站、API 網關;需處理大量請求的后端服務(如 MySQL 集群)。

3、TUN模式

工作原理

  • LVS 接收客戶端請求后,不修改原始 IP 包,而是封裝一個新的 IP 頭部(外層 IP 目標為 RS),通過 IP 隧道轉發給 RS。
  • RS 解封裝后處理請求,直接將響應返回給客戶端(無需經過 LVS),同樣需配置 VIP 別名。

關鍵特點

  • 請求經過 LVS,響應直接返回客戶端:與 DR 模式類似,但通過 IP 隧道實現,支持跨地域部署。
  • RS 需支持 IP 隧道協議(如 IPIP),并配置 VIP 別名。
  • 網絡拓撲靈活:RS 可分布在不同地理位置。

優點

  • 支持跨地域負載均衡(如多地數據中心)。
  • 性能高,LVS 僅處理入站流量。

缺點

  • 隧道封裝增加網絡開銷。
  • RS 配置復雜(需支持隧道協議)。

應用場景

????????跨地域分布式系統(如 CDN 節點負載均衡);云服務提供商的負載均衡架構。

4、三種模式對比表格

維度NAT 模式DR 模式TUN 模式
轉發機制修改 IP 地址修改 MAC 地址IP 隧道封裝
流量路徑請求和響應都經過 LVS請求經 LVS,響應直接回客戶端同 DR 模式
網絡要求RS 與 LVS 需在同一網段所有設備需在同一物理網段支持跨地域部署
RS 配置網關指向 LVS配置 VIP 別名,ARP 抑制支持 IP 隧道,配置 VIP 別名
性能較低(雙向流量)高(單向流量)較高(單向流量,但有封裝開銷)
典型場景小規模內部應用大型網站、高并發服務跨地域分布式系統

?5、Full-NAT 模式(補充)

  • 工作原理:LVS 同時修改請求的源 IP(改為 LVS 的 IP)和目標 IP(改為 RS 的 IP),RS 響應時直接返回給 LVS,再由 LVS 轉發給客戶端。

  • 特點:支持 RS 與 LVS 不在同一網段,但性能低于 DR 和 TUN 模式,適用于特殊網絡環境。

綜合選擇:

  • 小流量、簡單部署:選 NAT 模式。

  • 大流量、同網段:選 DR 模式(性能最優)。

  • 跨地域、分布式:選 TUN 模式。

  • 特殊網絡環境:選 Full-NAT 模式。

二、代理和負載均衡的區別

維度代理(Proxy)負載均衡(Load Balancer)
核心目標中間轉發、隔離網絡、功能增強(如緩存、過濾)分配流量到多臺服務器,提高可用性和吞吐量
處理對象通常針對單條連接或一類請求的轉發邏輯針對多個后端節點的流量分配策略
典型場景跨網絡訪問(如 VPN 代理)、內容過濾、緩存加速分布式系統、高并發服務(如電商網站、API 集群)

代理(Proxy):中間轉發與功能增強

代理是位于客戶端和目標服務器之間的中間服務器,客戶端的請求先發送到代理,再由代理轉發給目標服務器,響應則反向傳遞。其核心作用是 “代表客戶端訪問目標”,并可附加額外功能。

核心功能

????????流量轉發:跨網絡(如內部網絡→外部網絡)或跨協議(如 HTTP→HTTPS)轉發請求。

????????網絡隔離:隱藏客戶端或服務器的真實地址(如反向代理隱藏服務器 IP)。

????????功能增強:緩存數據、過濾內容(如廣告攔截)、身份驗證、加密傳輸等。

分類與舉例

正向代理:代理客戶端,幫助客戶端訪問無法直接訪問的資源。
????????舉例:科學上網工具(如 Shadowsocks):客戶端通過代理服務器訪問外網,目標服務器只看到代理的 IP,看不到客戶端真實 IP。

反向代理:代理服務器,客戶端不知道目標服務器的存在,請求先到反向代理,再由其轉發給后端服務器。
????????舉例:Nginx 作為反向代理:用戶訪問www.example.com時,請求先到 Nginx,Nginx 再轉發給后端的 Tomcat 服務器,用戶感知不到 Tomcat 的存在。Nginx 還可在此過程中緩存靜態資源(如圖片、CSS),減少后端壓力。

負載均衡(Load Balancer):流量分配與高可用

負載均衡是將客戶端的請求 “均勻分配” 到多個后端服務器的技術,避免單臺服務器過載,提高系統的可用性和吞吐量。其核心作用是“分流”,確保服務穩定運行。

核心功能

????????流量分配:根據策略(如輪詢、權重、IP 哈希)將請求分發到不同服務器。

????????健康檢查:監測后端服務器狀態,自動剔除故障節點。

????????擴展性支持:通過增加服務器節點提升系統容量,無需修改客戶端配置。

舉例

????????電商網站集群:某電商平臺有 3 臺服務器處理訂單請求,負載均衡器(如 F5 硬件負載均衡器)接收用戶的下單請求后,按 “輪詢” 策略依次分配給 3 臺服務器,避免單臺服務器因請求過多崩潰。若其中 1 臺服務器故障,負載均衡器會自動將請求轉發給另外 2 臺,確保服務不中斷。

????????云服務負載均衡:AWS 的 ELB(彈性負載均衡):當用戶訪問一個高并發 API 時,ELB 會根據后端 EC2 實例的負載(如 CPU 使用率)動態分配請求,負載高的實例會被分配更少的流量。

區別:

????????目標不同:代理的核心是 “轉發 + 附加功能”(如隔離、緩存);負載均衡的核心是 “分流 + 高可用”。

????????處理對象不同:代理可針對單臺后端服務器(如反向代理僅轉發到特定服務器);負載均衡必須面對多臺后端服務器,目標是 “分配流量”。

????????依賴關系:負載均衡器通常會集成反向代理功能(如 Nginx 既可以做反向代理,也可以做負載均衡),但代理不一定具備負載均衡能力(如正向代理僅轉發到單一目標)。

????????代理更側重 “中間層的功能擴展”,而負載均衡更側重 “多服務器的流量分配”,兩者在復雜架構中常結合使用(如負載均衡器先接收流量,再通過反向代理轉發到具體服務器)

三、MySQL B+樹與跳表對比

數據結構本質

跳表:通過在鏈表上增加多層 “快速通道” 來加速查詢。每個節點的層級由隨機函數決定。

4層: 1 ----------------------------> 7

3層: 1 ---------> 3 ----------------> 7

2層: 1 ----> 2 ---> 3 ----> 5 -----> 7

1層: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 (原始鏈表)

B + 樹:所有數據都存儲在葉子節點,非葉子節點僅用于索引。

磁盤 I/O 優化

跳表:節點隨機分布,導致磁盤訪問分散,每次查詢可能產生多次隨機 I/O。

B + 樹

????????節點大小設計為與磁盤頁(通常 4KB)對齊,一次 I/O 能讀取一個完整節點。

????????非葉子節點不存儲數據,可容納更多索引項,減少樹的高度。

????????例如:一個高度為 3 的 B + 樹可存儲約 10 億條記錄,但只需 3 次 I/O。

范圍查詢效率

????????跳表:從起始節點開始逐層下降,然后在底層鏈表中順序遍歷。例如查詢 [3,7]:

????????從頂層找到3 → 下降到第1層 → 遍歷3→4→5→6→7

????????B + 樹:直接定位到左邊界,通過葉子節點的鏈表指針順序訪問。例如:

????????找到3 → 通過鏈表指針依次訪問4,5,6,7

并發性能

跳表:使用 CAS(Compare-And-Swap)操作實現無鎖插入 / 刪除。

????????例如:Redis 的有序集合在并發環境下表現優異。

B + 樹:需要實現復雜的鎖機制(如 InnoDB 的意向鎖、行鎖)。

????????寫操作可能導致整頁鎖定,影響并發度。

總結

????????跳表是內存場景下的高效選擇,尤其適合高并發、小規模數據。

????????B+樹是磁盤存儲的標準方案,通過優化磁盤 I/O 提升整體性能。

????????MySQL 的 InnoDB 存儲引擎選擇 B + 樹作為索引結構,正是為了適應磁盤存儲的特性。而 Memory 引擎則可能使用跳表實現內存索引。

四、什么是三次握手四次揮手?tcp為什么要三次握手?

為了防止已失效的連接請求報文段突然又傳送到了服務端,因而產生錯誤

三次握手

第一次握手:建立連接時,客戶端發送syn(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;

第二次握手:服務器收到syn包,必須確認客戶的SYNack=j+1),同時自己也發送一個SYN包 (syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次握手:客戶端收到服務器的SYNACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

完成三次握手,客戶端與服務器開始傳送數據

客戶端先發送FIN,進入FIN_WAIT1狀態,用來關閉ClientServer的數據傳送

服務端收到FIN,發送ACK,進入CLOSE_WAIT狀態,客戶端收到這個ACK,進入FIN_WAIT2狀態

服務端發送FIN,進入LAST_ACK狀態,用來關閉ServerClient的數據傳送

客戶端收到FIN,發送ACK,進入TIME_WAIT狀態,服務端收到ACK,進入CLOSE狀態(等待2MSL時 間,約4分鐘。主要是防止最后一個ACK丟失。)

四次揮手

第一次揮手:主動關閉方發送一個FIN,用來關閉主動方到被動關閉方的數據傳送,也就是主動關閉方告訴被動關閉方:我已經不 會再給你發數據了(當然,在fin包之前發送出去的數據,如果沒有收到對應的 ack確認報文,主動關閉方依然會重發這些數據),但是,此時主動關閉方還可 以接受數據。

第二次揮手:被動關閉方收到FIN包后,發送一個ACK給對方,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號)。

第三次揮手:被動關閉方發送一個FIN,用來關閉被動關閉方到主動關閉方的數據傳送,也就是告訴主動關閉方,我的數據也發送完了,不會再給你發數據了。

第四次揮手:主動關閉方收到FIN后,發送一個ACK給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。

五、TCP和UDP的區別以及應用場景

1、概念

TCP(傳輸控制協議)和 UDP(用戶數據報協議)是 TCP/IP 協議族中兩種核心的傳輸層協議,它們在數據傳輸方式、可靠性、效率等方面存在顯著差異,適用于不同的應用場景。

傳輸層的核心作用

  1. 提供進程間通信:通過端口號(如 HTTP 的 80 端口、SSH 的 22 端口)區分同一主機上的不同應用程序,實現進程間的數據傳輸。
  2. 可靠性控制
    • TCP 通過確認機制、重傳機制、流量控制等保證可靠傳輸。
    • UDP 不提供可靠性,僅盡最大努力交付數據。
  3. 數據分段與重組:將上層(應用層)的報文分割為適合傳輸的段(Segment),或在接收端將接收到的段重組為完整數據。

對比其他層

  • 網絡層(Network Layer):如 IP 協議,負責將數據包從源主機傳輸到目標主機,但不保證可靠性和順序。
  • 應用層(Application Layer):如 HTTP、SMTP、DNS 等,直接為用戶應用程序提供服務。
  • 鏈路層(Link Layer):負責物理網絡的幀傳輸,如以太網、Wi-Fi 等。

2、核心對比

對比維度TCPUDP
連接方式面向連接(需三次握手建立連接,四次揮手關閉)無連接(直接發送數據,無需建立 / 關閉連接)
可靠性可靠傳輸(通過確認機制、重傳機制、流量控制等保證數據不丟失、不重復、按序到達)不可靠傳輸(無確認 / 重傳機制,數據可能丟失、亂序)
數據邊界無(數據被視為字節流,接收方需自行劃分邊界)有(數據以數據報為單位,發送和接收的邊界一致)
擁塞控制支持(通過慢啟動、擁塞避免等算法調整發送速率,適應網絡負載)不支持(發送速率不受網絡狀態影響,可能加劇擁塞)
傳輸效率較低(因連接建立、確認、重傳等機制,開銷大)較高(無額外控制機制,頭部開銷小,傳輸速度快)
適用數據量適合大量數據傳輸(如文件、視頻流)適合少量數據傳輸(如實時指令、消息)

3、應用場景分析

1. TCP 的典型應用場景

TCP 的可靠性使其適用于對數據準確性要求高、允許一定延遲的場景:

  • 文件傳輸:如 FTP(文件傳輸協議)、HTTP/HTTPS(網頁傳輸)。文件傳輸需保證數據完整,不能丟失或損壞,TCP 的重傳機制可確保這一點。

  • 郵件發送:如 SMTP(簡單郵件傳輸協議)。郵件內容的完整性和順序至關重要,TCP 能避免郵件內容錯亂或丟失。

  • 遠程登錄:如 SSH(安全外殼協議)、Telnet。遠程操作指令需要準確執行,TCP 的按序傳輸可保證指令順序正確。

  • 數據庫交互:如 MySQL 的 TCP 連接。數據庫查詢和修改需確保數據一致性,TCP 的可靠性可防止數據同步錯誤。

2. UDP 的典型應用場景

UDP 的高效性使其適用于對實時性要求高、可容忍少量數據丟失的場景:

  • 實時通信:如視頻通話(Skype)、語音通話(VoIP)。實時傳輸中,延遲比偶爾的數據包丟失更影響體驗,UDP 的低延遲特性更適合。

  • 流媒體播放:如直播(RTSP/RTP 協議常用 UDP)。直播中,丟失個別幀不會影響整體觀看,但若用 TCP 可能因重傳導致畫面卡頓。

  • 游戲數據傳輸:如多人在線游戲的實時位置、操作指令。游戲需要低延遲響應,少量數據包丟失可通過本地預測補償,而 TCP 的重傳可能導致操作延遲。

  • 物聯網通信:如傳感器數據上報(CoAP 協議)。傳感器數據通常周期性發送,少量丟失不影響整體分析,UDP 的低開銷更適合資源有限的設備。

  • DNS 查詢:域名解析(DNS 協議)通常用 UDP。查詢數據量小,且即使丟失可快速重發,UDP 的高效性能縮短解析時間。

4、總結

  • TCP是 “可靠但低效” 的協議,適合需要保證數據完整性的場景,如文件傳輸、郵件、數據庫交互等。
  • UDP是 “高效但不可靠” 的協議,適合需要低延遲、可容忍少量丟失的場景,如實時音視頻、游戲、物聯網等。

六、用戶輸入網址到響應界面操作中間發生了什么?

1、DNS 解析:將域名轉換為 IP 地址

  1. 瀏覽器緩存檢查:瀏覽器首先檢查本地緩存中是否有該域名對應的 IP 地址(緩存時間由 DNS 記錄的 TTL 值控制)。

  2. 系統緩存檢查:若瀏覽器緩存未命中,則檢查操作系統的 hosts 文件或本地 DNS 緩存(如 Windows 的 DNS Client 服務)。

  3. 本地 DNS 服務器查詢:若仍未命中,請求本地 DNS 服務器(通常由 ISP 提供)。本地 DNS 服務器會先檢查自身緩存,若沒有則進行遞歸查詢。

  4. 遞歸查詢流程

    • 根 DNS 服務器(.com、.cn 等頂級域名服務器的地址)。

    • 頂級域 DNS 服務器(如.com 域名服務器)。

    • 權威 DNS 服務器(如example.com的具體 DNS 服務器)。

  5. 獲取 IP 地址:最終從權威 DNS 服務器獲取目標網站的 IP 地址,并逐級返回給瀏覽器。

2、TCP 連接:建立與服務器的可靠通信

  1. TCP 三次握手

    • 客戶端發送 SYN 包,請求建立連接,并攜帶初始序列號(ISN)。

    • 服務器返回 SYN+ACK 包,確認請求并發送自己的初始序列號。

    • 客戶端發送 ACK 包,完成連接建立。

  2. TCP 參數協商:雙方協商 MSS(最大段大小)、窗口大小等參數,優化數據傳輸。

3、HTTP 請求:發送網頁資源請求

  1. 構建 HTTP 請求報文:包含請求行(如 GET /index.html HTTP/1.1)、請求頭(如 User-Agent、Cookie 等)和請求體(如 POST 請求的數據)。

  2. HTTPS 額外步驟(若啟用)

    • TLS 握手:協商加密算法、驗證服務器證書、生成會話密鑰。

    • 數據加密:后續 HTTP 數據通過對稱加密傳輸。

4、服務器處理請求

  1. 負載均衡(若存在):請求先到達負載均衡器(如 Nginx、AWS ELB),被轉發到合適的后端服務器。

  2. Web 服務器接收請求:如 Apache、Nginx 處理 HTTP 請求,解析請求頭和 URL。

  3. 應用服務器處理

    • 靜態資源:直接返回文件(如 HTML、CSS、JS)。

    • 動態資源:調用應用程序(如 PHP、Python、Java)生成響應。

  4. 數據庫交互(若需要):應用程序查詢數據庫獲取數據(如用戶信息、文章內容)。

  5. 生成 HTTP 響應:包含狀態碼(如 200 OK、404 Not Found)、響應頭(如 Content-Type、Cache-Control)和響應體(網頁內容)。

5、HTTP 響應:返回數據到客戶端

  1. 服務器發送響應:將 HTTP 響應通過 TCP 連接返回給客戶端。

  2. 客戶端接收響應

    • 解析響應頭:獲取內容類型、緩存策略等信息。

    • 處理壓縮數據:若內容被壓縮(如 gzip),先解壓。

6、瀏覽器解析渲染頁面

  1. 解析 HTML:構建 DOM 樹(文檔對象模型)。

  2. 資源加載

    • 解析 HTML 中的資源引用(如 CSS、JS、圖片)。

    • 并行請求這些資源(HTTP/1.1 通過多個 TCP 連接,HTTP/2 通過多路復用)。

  3. 構建 CSSOM:解析 CSS 文件,構建 CSS 對象模型。

  4. 合并渲染樹:將 DOM 樹和 CSSOM 合并為渲染樹(只包含可見元素)。

  5. 布局(Layout):計算每個元素在屏幕上的位置和大小。

  6. 繪制(Painting):將渲染樹轉換為屏幕上的像素。

  7. 合成(Compositing):處理層疊和動畫,優化渲染性能。

7、TCP 連接關閉(可選)

  1. 四次揮手

    • 客戶端發送 FIN 包,表示請求關閉發送方向。

    • 服務器返回 ACK 包,確認關閉請求。

    • 服務器發送 FIN 包,表示請求關閉接收方向。

    • 客戶端返回 ACK 包,確認關閉請求。

  2. 連接復用:HTTP/1.1 默認使用持久連接(Connection: keep-alive),多個請求可復用同一個 TCP 連接;HTTP/2 進一步優化了連接復用效率。

概括總結如下:

  1. DNS 解析:瀏覽器將域名(如www.example.com)轉換為服務器 IP 地址(如 192.168.1.1)。
  2. 建立連接:通過 TCP 三次握手與服務器建立連接(若為 HTTPS,還需額外完成 TLS 加密握手)。
  3. 發送請求:瀏覽器向服務器發送 HTTP 請求(如獲取首頁內容)。
  4. 服務器響應:服務器處理請求后,返回 HTTP 響應(包含網頁 HTML、CSS、JS 等數據)。
  5. 渲染頁面:瀏覽器解析響應內容,構建 DOM 樹和樣式,最終渲染出可視化頁面。
  6. 關閉連接:完成后通過 TCP 四次揮手關閉連接(或復用連接處理后續請求)。

七、redis的緩存穿透、緩存擊穿、緩存雪崩

1、什么是redis

????????redis是一個單線程的支持網絡、可基于內存也可持久化的日志型、K-V數據庫,并提供多種語言的API。支持多種的數據類型:string hash 列表、集合等,支持事務讀寫速度非常快

2、緩存穿透

2.1描述:

????????用戶想要查詢某個數據,在 Redis 中查詢不到,即沒有緩存命中,這時就會直接訪問數據庫進行查詢。當請求量超出數據庫最大承載量時,就會導致數據庫崩潰。這種情況一般發生在非 正常 URL 訪問,目的不是為了獲取數據,而是進行惡意攻擊。

2.2現象:

????????1、應用服務器壓力變大

????????2、Redis緩存命中率降低

????????3、一直查詢數據庫

2.3原因:

????????一個不存在緩存及查詢不到的數據,由于緩存是不命中時被動寫的,并且出于容錯考慮,如果 從存儲層查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到存儲層去查 詢,失去了緩存的意義。

2.4解決方法:

????????① 對空值緩存:如果一個查詢數據為空(不管數據是否存在),都對該空結果進行緩存,其 過期時間會設置非常短。

????????② 設置可以訪問名單:使用bitmaps類型定義一個可以訪問名單,名單id作為bitmaps的偏移量,每次訪問時與bitmaps中的id進行比較,如果訪問id不在bitmaps中,則進行攔截,不允 許訪問。

????????③ 采用布隆過濾器:布隆過濾器可以判斷元素是否存在集合中,他的優點是空間效率和查詢 時間都比一般算法快,缺點是有一定的誤識別率和刪除困難。

????????④ 進行實時監控:當發現 Redis 緩存命中率急速下降時,迅速排查訪問對象和訪問數據,將其設置為黑名單。

3、緩存擊穿

3.1描述

????????key中對應數據存在,當key中對應的數據在緩存中過期,而此時又有大量請求訪問該數據, 由于緩存中過期了,請求會直接訪問數據庫并回設到緩存中,高并發訪問數據庫會導致數據庫崩潰。

3.2現象

????????1、數據庫訪問壓力瞬時增加

????????2、Redis中沒有出現大量 Key 過期

????????3、Redis正常運行

????????4、數據庫崩潰

3.3原因:

????????由于 Redis 中某個 Key 過期,而正好有大量訪問使用這個 Key,此時緩存無法命中,因此就會直接訪問數據層,導致數據庫崩潰。 最常見的就是非常“熱點”的數據訪問。

3.4解決方法

????????① 預先設置熱門數據:在redis高峰訪問時期,提前設置熱門數據到緩存中,或適當延長緩存 中key過期時間。

????????② 實時調整:實時監控哪些數據熱門,實時調整key過期時間。

????????③ 對于熱點key設置永不過期。

4、緩存雪崩

4.1描述

????????key中對應數據存在,在某一時刻,緩存中大量key過期,而此時大量高并發請求訪問,會直 接訪問后端數據庫,導致數據庫崩潰。

4.2現象

數據庫壓力變大導致數據庫和 Redis 服務崩潰

4.3原因

????????短時間內大量的key過期,恰好大量的訪問使用這些過期的key,此時緩存無法命中,導致大量的請求直接打到數據庫中,導致宕機。

4.4解決方法

????????① 構建多級緩存機制:nginx緩存 + redis緩存 + 其他緩存。

????????② 設置過期標志更新緩存:記錄緩存數據是否過期,如果過期會觸發另外一個線程去在后臺 更新實時key的緩存。

????????③ 將緩存可以時間分散:如在原有緩存時間基礎上增加一個隨機值,這個值可以在1-5分鐘隨 機,這樣過期時間重復率就會降低,防止大量key同時過期。

????????④ 使用鎖或隊列機制:使用鎖或隊列保證不會有大量線程一次性對數據庫進行讀寫,從而避 免大量并發請求訪問數據庫,該方法不適用于高并發情況。

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

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

相關文章

軟考(軟件設計師)軟件工程-軟件過程模型,敏捷開發

軟件過程模型 瀑布模型 #mermaid-svg-daxck2eQmqfYelkV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-daxck2eQmqfYelkV .error-icon{fill:#552222;}#mermaid-svg-daxck2eQmqfYelkV .error-text{fill:#552222;stro…

MySQL 中圖標字符存儲問題探究:成因、解決方案及單字段編碼調整的利弊分析——仙盟創夢IDE

在 MySQL 數據庫應用中,常出現無法正確保存圖標字符,讀出時顯示為 “????” 的問題。本文深入剖析了該問題產生的原因,主要涉及字符編碼設置不匹配等因素。同時,提出了全面的解決方案,包括全局和單字段的字符編碼調…

快速上手UniApp(適用于有Vue3基礎的)

作為一位有Vue3基礎的開發者,學習UniApp將會是一個相對平滑的過程。UniApp是一個使用Vue.js開發跨平臺應用的前端框架,可以編譯到iOS、Android、H5以及各種小程序平臺。 一、UniApp簡介 UniApp是基于Vue.js的跨平臺開發框架,具有以下特點&a…

background和background-color的區別

前言:由于全局切換變量時,發現空頁面按鈕變量顏色未生效,審查元素發現變量未定義。實際上是背景色由純色變成了漸變色,而background-color不支持漸變色導致變量不生效特性backgroundbackground-color功能設置?所有?背景屬性&…

Vue Vue-route (5)

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue-route History模式和路由懶加載 目錄 History模式 設置history模式 后端配置 Apache 路由懶加載 配置 總結 History模式 設置history模式 Vue-route默認hash模式——使用URL的hash來模擬一個完整的URL&#xff0c…

家用智能攝像機PRV文件刪除的恢復方法

家用智能攝像頭一般采用的是mp4或者mov視頻方案,這一類方案文件通用性強、使用簡單,以MP4為例無論是APP在線播放還是TF卡接電腦查看都很輕松。即便如此,有些廠商還是走上了“自定義”的道路,自定義的文件結構導致無法正常播放&…

聊下easyexcel導出

直接上干貨&#xff0c;首先pom文件引入依賴 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>接下來是java代碼 public void export(List<Liquidity…

[Python] Flask 多線程繪圖時報錯“main thread is not in main loop”的解決方案

在構建基于 Flask 的后端服務過程中,使用 matplotlib 繪圖時,很多開發者會遇到一個經典的運行時錯誤: RuntimeError: main thread is not in main loop這通常出現在服務開啟多線程時調用 matplotlib,本文將從原理、解決方式到部署建議進行全面解析。 一、問題來源:matpl…

dbEaver連接hbase,各種問題的終極解決

網上有不少文章&#xff0c;但基本都不行&#xff0c;主要還是hbase版本和phoenix版本的問題&#xff0c;經我測試&#xff0c;如下方法保證能連接成功。 1、下載phoenix: https://phoenix.apache.org/download.html 要選擇和你的hbase版本對應的版本。 2、解壓phoenix-hbase-2…

selenium中find_element()用法進行元素定位

1. 導入必要的模塊首先需要導入 By 類&#xff1a;from selenium.webdriver.common.by import By2. 常用定位方式(1) 通過ID定位element driver.find_element(By.ID, "username") element.send_keys("testuser") # 輸入內容 (2) 通過Name定位element dr…

第八講~~數據庫技術

前言&#xff1a;什么是數據庫&#xff1f;存儲數據的倉庫。常見的數據庫有哪些&#xff1f;————SQL Server&#xff08;數據庫較大 5G&#xff09;————Access————Oracle&#xff08;大型數據庫700多兆-200多兆&#xff09;&#xff08;付費&#xff09;————My…

無人機雷達模塊運行與技術解析

一、運行方式1. 傳感器數據采集 雷達發射高頻電磁波&#xff08;X/Ku波段或毫米波&#xff09;&#xff0c;接收無人機反射的回波信號。 多傳感器協同&#xff1a;雷達與光電、無線電偵測、聲學設備并行掃描空域&#xff0c;覆蓋不同頻段與物理特性&#xff08;如熱信號、聲紋…

STM32中ADC詳解

前言 在嵌入式系統中&#xff0c;模擬信號與數字信號的轉換是連接物理世界與數字系統的核心環節。ADC&#xff08;Analog-to-Digital Converter&#xff0c;模數轉換器&#xff09;作為實現這一轉換的關鍵外設&#xff0c;被廣泛應用于傳感器數據采集&#xff08;如溫濕度、光照…

機器學習(ML)、深度學習(DL)、強化學習(RL)關系和區別

機器學習&#xff08;ML&#xff09;、深度學習&#xff08;DL&#xff09;、強化學習&#xff08;RL&#xff09;關系和區別區別一、機器學習的技術分層與范疇二、深度學習&#xff08;DL&#xff09; vs. 強化學習&#xff08;RL&#xff09;&#xff1a;在ML中的對比三、深度…

醫療AI前端開發中的常見問題分析和解決方法

一、 前端性能優化問題 (醫療AI場景尤其關鍵) 頁面加載速度慢的原因及解決方案 原因: 海量數據加載: 加載高分辨率DICOM影像序列、大型患者數據集、復雜模型參數。復雜計算: 在瀏覽器端運行輕量級AI推理(如分割預覽)、大型圖表渲染。第三方庫臃腫: 醫學可視化庫(Corners…

python庫之jieba 庫

jieba 庫jieba 庫的原理分析jieba庫可用于將中文的一段語句分解為單詞,通常用于解析中文語句的含義。例如外國人需要學習中文而中文語句是一直連續的文字組合。例如“我們在學習Python辦公自動化”這句話,外國人在理解這句話的含義時,首先需要將這句話正確地分解為一個個單詞,即…

基于Hadoop的航空公司客戶數據分析與客戶群體K-measn聚類分析(含LRFMC模型)

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主項目介紹數據源介紹數據預處理hadoop集群分析建模分析總結每文一語有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主 項目介紹 本研究依托全國范圍內的航空公司…

實習內容總結

相關來自AI非內部資料 Monorepo 大倉 + pnpm + Turborepo 工程化實踐原理 核心概念解釋 1. Monorepo (單倉庫架構) 概念:將多個項目(packages)放在同一個代碼倉庫中管理,而非分散在多個倉庫。優勢:統一管理依賴、版本一致性、跨項目復用代碼、原子化提交、簡化CI/CD流程…

余電快速泄放電路

余電快速泄放電路&#xff0c;即放電電路&#xff0c;用在需要快速反復開關電源&#xff0c;且負載電路上有大容量電容的場景。 斷開電源開關后&#xff0c;如果負載電路有大電容&#xff0c;會引起負載電路上的電壓下降緩慢。此時如果重新接上電源開關&#xff0c;負載電路在未…

MOSFET驅動電路設計時,為什么“慢”開,“快”關?

MOSFET作為開關器件&#xff0c;在驅動電路中主要用于控制電流的通斷&#xff0c;比如在DC-DC轉換器、電機驅動或者功率放大電路中。它的開關過程&#xff08;開和關&#xff09;會直接影響電路的效率、發熱和可靠性。“慢開快關”的這個設計原則&#xff0c;背后有什么電路設計…