MySQL的幾種鎖機制
一、從鎖的粒度角度劃分
表級鎖
????????機制:它是對整張表進行鎖定的一種鎖。當一個事務對表執行寫操作時,會獲取寫鎖,在寫鎖持有期間,其他事務無法對該表進行讀寫操作;而當事務執行讀操作時,會獲取讀鎖,讀鎖之間是共享的,多個事務可以同時對表加讀鎖。????????
行級鎖
????????機制:行級鎖僅對操作的行進行鎖定。它能最大程度地支持并發處理。行級鎖又可細分為共享鎖和排他鎖。共享鎖允許多個事務同時讀取同一行數據;排他鎖則會阻止其他事務對該行數據進行讀寫操作。
頁級鎖
????????機制:頁級鎖的鎖定粒度介于表級鎖和行級鎖之間,它鎖定的是數據頁。
二、從鎖的模式角度劃分
共享鎖(S 鎖)
????????機制:也被稱為讀鎖。如果事務 T 對數據對象 A 加上共享鎖,那么事務 T 可以讀取 A,但不能修改 A。同時,其他事務只能對 A 加共享鎖,而不能加排他鎖,直到事務 T 釋放 A 上的共享鎖。
排他鎖(X 鎖)
????????機制:又稱寫鎖。若事務 T 對數據對象 A 加上排他鎖,那么事務 T 既可以讀取 A,也可以修改 A。在事務 T 釋放 A 上的排他鎖之前,其他事務不能對 A 加任何類型的鎖。 意向鎖 機制:這是一種表級別的鎖,用于表示某個事務正在鎖定某一行,或者將要對某一行加鎖。
意向鎖分為意向共享鎖(IS 鎖)和意向排他鎖(IX 鎖)????????
????????意向鎖的主要作用是提高表級鎖的判斷效率。
????????應用:當一個事務想要獲取表的共享鎖時,必須先獲取該表的意向共享鎖;想要獲取表的排他鎖時,則必須先獲取表的意向排他鎖。
說一下websocket和 http的區別
1、連接方式
????????HTTP:是無狀態的請求-響應協議。客戶端向服務器發送請求,服務器處理請求后返回響應,連接在請求響應完成后就會關閉。每次通信都需要重新建立連接,例如在瀏覽網頁時,瀏覽器向服務器請求 HTML、CSS、JavaScript 等資源,服務器返回相應內容,之后連接斷開。
????????WebSocket:是一種持久連接協議。在客戶端和服務器通過 HTTP 協議完成握手后,會建立起一條全雙工的通信通道,連接會一直保持,直到其中一方主動關閉。這就好比在客戶端和服務器之間建立了一座橋梁,雙方可以隨時通過這座橋梁進行數據傳輸。
2、通信方式
????????HTTP:是單向的半雙工通信,通常是客戶端主動發起請求,服務器被動響應,服務器不能主動向客戶端發送數據,除非客戶端再次發起請求。例如在電商網站上查詢商品信息,需要用戶點擊搜索按鈕發起請求,服務器才會返回商品列表。
????????WebSocket:支持全雙工通信,客戶端和服務器可以在任意時刻相互發送數據。比如在實時聊天應用中,客戶端和服務器可以同時發送和接收消息,無需等待對方的請求。
3、數據傳輸格式
????????HTTP:數據傳輸格式多樣,常見的有JSON、XML、HTML等。一般來說,HTTP 請求和響應會包含請求頭和請求體,請求頭包含了請求的元信息,如請求方法、請求的資源路徑、客戶端信息等,請求體則包含了具體的數據內容。
????????WebSocket:數據傳輸格式更加靈活,可以是文本數據,也可以是二進制數據。它在傳輸數據時會有自己的幀協議,將數據封裝成順進行傳輸,并且可以根據需要選擇不同的操作碼來表示數據的類型。
4、性能開銷
????????HTTP:由于每次請求都需要建立和斷開連接,會帶來一定的開銷,尤其是在頻繁請求的場景下,如實時數據更新應用,會消耗大量的網絡資源和服務器資源。而且為了保持會話狀態,可能需要使用Cookie、Session等機制,進一步增加了開銷
????????WebSocket:建立連接后是持久的,避免了頻繁建立和斷開連接的開銷。在數據傳輸過程中,由于不需要像HTTP 那樣攜帶大量的請求頭信息,所以傳輸效率更高,更適合對實時性要求高、數據傳輸頻繁的場景。
5、應用場景
????????HTTP:適用于對實時性要求不高的場景,如靜態網頁瀏覽、文件下載、表單提交等。在這些場景中,客戶端只需要在需要時向服務器請求數據,服務器返回響應即可。
????????WebSocket:常用于實時性要求較高的場景,如在線聊天、實時數據監控、多人游戲等。在這些場景中,需要客戶端和服務器之間能夠實時地交換數據,以保證用戶體驗。
什么是HTTPS?HTTPS如何保證安全?
????????HTTPS(HyperText Transfer Protocol Secure,超文本傳輸安全協議)是在 HTTP 基礎上加入了加密層(SSL/TLS 協議)的安全版本,目的是解決 HTTP 的安全隱患,保證數據傳輸的機密性、完整性和真實性。簡單來說,HTTPS = HTTP + SSL/TLS,它通過 SSL/TLS 協議對傳輸的數據進行加密,讓第三方無法竊聽或篡改,同時驗證服務器的身份,防止客戶端被欺騙。
HTTP(HyperText Transfer Protocol,超文本傳輸協議)是互聯網上應用最廣泛的一種網絡協議,用于客戶端(如瀏覽器)和服務器之間的通信,主要作用是傳輸超文本(如網頁、圖片、視頻等)。
HTTP 的安全隱患:
由于數據明文傳輸,在傳輸過程中可能被第三方(如黑客、網絡運營商)竊聽、篡改或偽造,例如:
- 竊聽:獲取用戶的賬號密碼、支付信息等敏感數據。
- 篡改:修改網頁內容(如替換廣告、植入惡意代碼)。
- 偽造:冒充服務器向客戶端發送虛假信息(如釣魚網站)。
?HTTPS 的安全機制主要依賴于?SSL/TLS 協議?和?數字證書,具體實現情況如下:
1、身份驗證:借助數字證書確認服務器身份,客戶端會驗證證書的頒發機構、域名匹配度和有效期等;
2、加密傳輸:采用 “非對稱加密 + 對稱加密” 結合的方式,非對稱加密用于傳輸對稱密鑰,對稱加密用于傳輸實際數據;
3、完整性校驗:通過生成 “消息認證碼(MAC)”,客戶端比對接收數據的 MAC 與服務器發送的 MAC,判斷數據是否被篡改。
HTTPS 通過 SSL/TLS 協議的加密機制保證數據傳輸的機密性和完整性,通過數字證書的身份驗證機制確保通信雙方的真實性,從而解決了 HTTP 明文傳輸的安全隱患。如今,HTTPS 已成為主流網站(尤其是涉及支付、登錄的場景)的標配,瀏覽器會通過地址欄的 “鎖” 圖標提示用戶當前連接是否使用 HTTPS 加密。
咱們用大白話來理解就是:
HTTP 就像寄明信片,內容是明文的,誰都能看,還可能被人改內容、冒名發,不太安全。
HTTPS 則是寄加密的快遞,它在 HTTP 基礎上多加了層保護(SSL/TLS)。
它怎么保證安全呢?靠兩樣:
一是 “數字證書”,相當于服務器的身份證,由權威機構發的,能證明這服務器是真的,不是騙子假裝的。瀏覽器會檢查這證書是不是真的、沒過期、和網站對得上。
二是加密傳輸,像寄快遞前把東西鎖起來。先通過非對稱加密(類似用公鑰鎖箱子,只有服務器的私鑰能打開)商量好一把 “對稱密鑰”,之后傳輸的所有數據都用這把鑰匙加密,別人就算截到了也打不開,改了也能發現。
簡單說,HTTP 是裸奔,HTTPS 是穿了防護衣,讓信息在網上跑的時候,別人偷不走、改不了,也騙不了你。
OSPF和BGP的區別
OSPF(Open Shortest Path First,開放式最短路徑優先)和 BGP(Border Gateway Protocol,邊界網關協議)是互聯網中兩種重要的路由協議,但它們的設計目標、應用場景和工作原理有顯著區別。以下從多個方面詳細對比兩者的差異:
一、協議類型與工作范圍
OSPF:屬于內部網關協議(IGP),僅在一個自治系統(AS)內部運行,用于管理 AS 內部的路由信息。例如,企業內網、校園網或運營商的單個 AS 內部,通常用 OSPF 計算最優路徑。
BGP【需滿足設備支持】:屬于外部網關協議(EGP),用于不同自治系統(AS)之間交換路由信息。例如,當數據需要從一個運營商的網絡傳遞到另一個運營商的網絡時,BGP 負責在 AS 之間選擇路徑。
二、路由計算依據
OSPF:基于鏈路狀態算法,通過 “最短路徑優先(SPF)” 算法計算路由。
- 每個路由器會向全網廣播自己的鏈路狀態(如接口帶寬、開銷等),形成統一的 “鏈路狀態數據庫”。
- 以自身為根,使用 SPF 算法生成最短路徑樹,優先選擇開銷最小的路徑(開銷通常與帶寬相關,帶寬越高開銷越小)。
BGP:基于路徑向量算法,不計算 “最短路徑”,而是根據路由屬性,選擇最優路徑。
- 路由屬性包括 AS 路徑長度(AS_PATH)、下一跳(NEXT_HOP)、本地優先級(LOCAL_PREF)等,管理員可通過配置屬性控制路由選擇(例如優先選擇 AS 路徑短的路由)。
- 核心目標是避免 AS 之間的路由環路,并確保大規模網絡的穩定性。
三、應用場景
OSPF
- 適用于小規模到中大規模的單一 AS 內部,例如企業網絡、數據中心內部或運營商的某個區域網絡。
- 優勢是收斂速度快(鏈路狀態變化時能快速更新路由),適合對實時性要求高的場景(如視頻會議、在線游戲)。
BGP
- 適用于跨 AS 的大規模網絡,是互聯網的 “核心路由協議”,負責全球運營商之間的路由互聯。
- 支持大規模路由表(可處理數十萬條路由),且允許管理員通過策略靈活控制路由(例如限制某些 AS 的流量),適合對穩定性和可控性要求高的場景。
四、路由更新方式
OSPF
- 采用觸發更新 + 定期更新:鏈路狀態變化時立即廣播更新(觸發更新),同時每 30 分鐘發送一次完整的鏈路狀態通告(LSA)進行確認(定期更新)。
- 更新范圍限于 AS 內部,且僅傳遞變化的鏈路狀態,而非完整路由表,帶寬開銷較小。
BGP
- 采用增量更新:僅當路由信息發生變化時(如新增、刪除或屬性修改),才發送更新消息,且只傳遞變化的路由條目。
- 初始建立連接時會交換完整路由表,但后續更新僅傳遞差異,適合大規模網絡減少帶寬消耗。
五、路由環路處理
OSPF:由于運行在單一 AS 內部,通過鏈路狀態算法和層次化設計(如劃分區域 Area)避免環路:每個區域內的路由器只維護本區域的鏈路狀態,區域間通過骨干區域(Area 0)轉發,天然避免環路。
BGP:跨 AS 場景中,通過AS_PATH 屬性避免環路:每條路由都會攜帶經過的 AS 列表,若收到的路由中包含本地 AS 號,則拒絕接收該路由,從而防止環路。
對比表格
對比維度 | OSPF | BGP |
---|---|---|
協議類型 | 內部網關協議(IGP) | 外部網關協議(EGP) |
工作范圍 | 單一 AS 內部 | 跨 AS 之間 |
算法基礎 | 鏈路狀態算法(SPF) | 路徑向量算法 |
路由選擇依據 | 鏈路開銷(最短路徑) | 路由屬性(如 AS_PATH、優先級) |
路由表規模 | 較小(AS 內部路由) | 極大(全球互聯網路由) |
收斂速度 | 快 | 慢(強調穩定性) |
典型應用 | 企業內網、數據中心內部 | 互聯網骨干網、運營商互聯 |
環路處理 | 基于區域劃分避免 | 基于 AS_PATH 屬性避免 |
keepalived的工作原理
keepalived 是一個基于 VRRP(虛擬路由)協議來實現 LVS 服務高可用方案,可以解決靜態路由出現的單點故障問題。
工作原理:在一個 LVS 服務器里面,它通常有主服務器和備用服務器,就是我們常說的 master 和 backup 這兩種角色的服務器,對外服務時會提供給一個虛擬的 IP 也就是我們前面所提及到的?VRRP ,然后 master 會發送我們的 VRRP 的通告信息給我們的備用服務器,當 backup 接收不到我們的 VRRP 信息以及主服務器異常的時候,那么優先級最高的這個 backup 會接管虛擬IP成為新的 master。
工作原理:通過 VRRP 協議來選舉出一個 master 主節點和多個 backup 從節點,那么主節點負責分配這個流量同時會給下面的 backup節點發送 VRRP 協議加密和通告信息,當下面的 backup 收不到通告信息了就會認為 master 節點是不可用的,那么優先級最高的這個 backup 節點就會成為新的 master,它就負責接下來的分發流量的工作了
兩種方式一樣,看自己更喜歡哪種回答
LVM邏輯卷
是 Linux 系統中用于管理磁盤存儲的一種技術,它通過將物理磁盤抽象為邏輯卷,提供了比傳統分區更靈活的磁盤管理方式。
物理卷(PV)與卷組(VG)
? PV 是 VG 的物理基礎:一個 VG 由多個 PV 組成,PV 可以是整塊物理磁盤(如/dev/sdb)或分區(如/dev/sdb1)。
? VG 是 PV 的邏輯容器:通過vgcreate myvg /dev/sdb /dev/sdc將多個 PV 合并為一個 VG,形成統一的存儲池。
? 動態擴展:可隨時通過vgextend添加新 PV,或通過vgreduce移除 PV(需先遷移數據)。
物理擴展塊(PE)與邏輯擴展塊(LE)
? PE 是物理存儲的最小單位:每個 PV 被劃分為大小相等的 PE(默認 4MB),PE 編號全局唯一(如/dev/sdb:0表示 sdb 磁盤的第一個 PE)。
? LE 是邏輯存儲的最小單位:LV 被劃分為與 PE 大小相同的 LE,通過映射表與物理 PE 一一對應。
? 映射關系:當創建 LV 時,系統從 VG 中分配空閑 PE,并建立 LE 到 PE 的映射(如LV_LE0 → PV1_PE10)。
LVM 通過?分層抽象 + 映射機制?實現靈活性:
- 物理層:將磁盤轉化為可管理的 PV 和 PE。
- 邏輯層:通過 VG 整合 PV 資源,建立 LE→PE 映射表。
- 應用層:LV 提供統一接口,支持動態調整和快照。
常用命令?
功能 | 物理卷(PV) | 卷組(VG) | 邏輯卷(LV) |
---|---|---|---|
創建 | pvcreate | vgcreate | lvcreate |
查看信息 | pvdisplay ,?pvs | vgdisplay ,?vgs | lvdisplay ,?lvs |
刪除 | pvremove | vgremove | lvremove |
擴展 | - | vgextend | lvextend |
縮小 | - | vgreduce | lvreduce |
物理卷移動數據 | pvmove | - | - |
docker 的相關問題
什么是docker?
????????Docker 是一種輕量級的容器化技術,通過將應用及其依賴打包成獨立的容器,實現 “一次構建,到處運行” 的目標。它解決了軟件開發和部署過程中的環境一致性問題,極大提高了開發效率和系統可靠性。
什么是docker鏡像?
????????Docker 鏡像是 Docker 容器的基礎,它是一個只讀的文件系統包,包含了運行應用程序所需的所有內容:代碼、運行時環境、庫、環境變量和配置文件。Docker 鏡像使應用能夠在任何環境中一致運行,解決了 “在我機器上能運行” 的問題。
什么是docker容器?
????????Docker 容器是 Docker 鏡像的運行實例,是一種輕量級、可移植的獨立運行環境。它封裝了應用程序及其所有依賴項,確保應用在不同環境中一致運行。容器通過 Linux 內核的隔離技術實現進程級隔離,相比傳統虛擬機具有更高的資源利用率和更快的啟動速度。
docker容器有幾種狀態?
buffer 和 cache 的區別
buffer(緩沖區)?和?cache(緩存)?都是內存中的臨時存儲區域,用來提升系統效率,但作用場景完全不同
Buffer 為 “寫” 服務更多,Cache 為 “讀” 服務更多
Buffer(緩沖區):像 “臨時中轉站”,專門解決設備速度不匹配的問題。比如 CPU 寫數據到磁盤時,先放緩沖區,CPU 不用等磁盤寫完就可以干別的,緩沖區再慢慢傳給磁盤。(如寫磁盤時的臨時存儲)。
比如:你給遠方的朋友寄快遞,不會親自跑過去送(太慢),而是先把快遞放到小區快遞柜(緩沖區),快遞員定期來取走派送。
這里,你(快設備,比如 CPU)→ 快遞柜(緩沖區)→ 快遞員(慢設備,比如磁盤 / 網絡),緩沖區讓你不用等快遞員,提高效率。
Cache(緩存):像 “常用文件柜”,把你經常用的數據存起來。比如反復看同一個文件,第一次從磁盤讀,之后直接從緩存拿,不用再麻煩磁盤,速度更快。(如反復讀取的文件內容)。
比如:你每天早上都要喝牛奶,不會每次都去樓下超市(慢),而是提前買幾盒放家里冰箱(緩存),早上直接拿,不用跑超市。
這里,超市(慢設備,比如磁盤)→ 冰箱(緩存)→ 你(快訪問,比如 CPU / 用戶),緩存讓常用數據離訪問者更近。