深度剖析ZooKeeper

1.?ZooKeeper架構總覽

ZooKeeper 是一個分布式協調服務,廣泛用于分布式系統中的配置管理、命名服務、分布式鎖和領導選舉等場景。以下是對 ZooKeeper 架構、通信機制、容錯處理、數據一致性與可靠性等方面的詳細剖析。


一、ZooKeeper 主從集群

ZooKeeper 采用 主從架構(Leader-Follower),通過 ZAB 協議(ZooKeeper Atomic Broadcast) 實現數據一致性。主要角色如下:

角色描述
Leader負責事務請求的處理和集群數據的一致性維護(事務寫操作)
Follower接受客戶端請求(讀為主),參與投票,轉發寫請求給 Leader
Observer只參與讀取和轉發,不參與投票(提高讀擴展性)
ClientZooKeeper 的使用者,連接到任意一個 Server 進行讀寫操作

二、集群內部通信機制

ZooKeeper 使用 TCP 進行集群間通信,關鍵通信通道包括:

1. Leader 選舉通信

  • 通過 Fast Leader Election(快速選舉算法)

  • 所有節點在啟動時進行投票,目標是選出一個具有最大 ZXID(事務ID)的節點為 Leader

  • 采用 majority 投票機制(過半) 來保證選舉成功

2. 數據同步通信

  • 寫請求(事務):Follower → Leader → Follower

    • Follower 將寫請求轉發給 Leader

    • Leader 提議(Proposal),廣播給 Followers

    • 超過半數 Follower 發送 ACK,Leader 才 Commit

    • Leader 廣播 Commit 指令,所有節點應用事務(數據最終一致)

  • 讀請求:默認從本地節點直接返回(可能是舊數據)

    • 可使用 sync() 保證強一致讀取,強制與 Leader 同步


三、ZAB 協議:核心一致性算法

ZAB(ZooKeeper Atomic Broadcast)是 ZooKeeper 的核心協議,類似于 Raft/Paxos,專為:

  • 崩潰恢復

  • 高吞吐事務廣播

  • 順序一致性

ZAB 工作流程

1. 廣播階段(消息廣播)
  • 所有寫請求必須由 Leader 提議(Proposal)

  • 使用事務日志(事務ID 為 ZXID)

  • 寫入 WAL(預寫日志) → 發送 Proposal → Follower ACK → Leader Commit → 全部同步

2. 崩潰恢復階段
  • Leader 崩潰后重新選舉

  • 新 Leader 同步所有 Follower 的日志,選擇擁有最大 ZXID 的日志進行恢復

  • 多數節點同步成功后進入廣播階段


四、數據一致性保證

ZooKeeper 提供 順序一致性模型(Sequential Consistency):

特性說明
順序一致性所有客戶端看到的更新順序一致
原子性請求要么成功,要么失敗,不存在部分完成
單一系統鏡像所有節點表現一致
會話保證客戶端對某一節點的操作具有順序性
可靠性一旦數據寫入成功,不會丟失

ZooKeeper 不是強一致系統,但通過事務日志(WAL)+ ZAB 實現了最終一致性,對于客戶端使用是順序一致的。


五、容錯與故障處理機制

1. 節點故障

  • Follower 故障:不會影響服務,只要多數節點存在即可

  • Leader 故障:觸發重新選舉,客戶端連接自動遷移到其他節點

2. 腦裂防護

  • 所有寫操作必須獲得過半節點 ACK,防止部分節點更新數據造成不一致(如3節點集群至少2個同意)

3. 客戶端重連

  • ZooKeeper 提供 session 重連機制

  • 臨時節點與 Watch 會話相關,一旦會話失效即刪除


六、數據可靠性保障機制

1. 事務日志 + 快照

  • 所有寫操作先寫入磁盤事務日志(log 文件)

  • 定期保存快照(snapshot),用于恢復和啟動

2. 磁盤刷寫機制

  • 默認配置下使用 fsync 確保日志落盤,防止系統崩潰導致數據丟失

3. 寫入機制

  • 寫入成功只有在Leader 收到大多數 Follower 的 ACK后才確認

  • 防止單點寫入造成臟數據


七、部署建議與集群規模

集群節點數最小推薦為奇數
推薦 3、5、7 個節點保證過半多數投票機制可用
Observer 節點可擴展讀能力,不影響寫一致性

2. ZooKeeper在Hadoop中的應用

結合 Hadoop 的使用場景深入分析 ZooKeeper 的應用和作用,可以從以下幾個方面切入:組件依賴、協調作用、故障應對、集群一致性維護,以及實戰部署建議等。下面逐一詳解。


一、ZooKeeper 在 Hadoop 生態中的應用場景

在 Hadoop 生態中,ZooKeeper 扮演“分布式協調器”的角色,提供高可用性控制、狀態協調和元數據一致性保障。其關鍵應用包括:

1. HDFS 高可用(HA)中的 NameNode 選主

  • ZooKeeper 用于協調 Active-Standby NameNode 的狀態切換

  • ZKFailoverController (ZKFC) 組件與 ZooKeeper 通信,實現自動主備切換

  • 原理

    • NameNode 啟動后注冊臨時節點(ephemeral znodes)到 ZooKeeper

    • 只有一個節點能成功注冊(獲得鎖)成為 Active

    • 一旦 Active 宕機,znode 自動刪除,Standby 重新競選

2. YARN ResourceManager HA

  • 與 HDFS 類似,YARN 的 ResourceManager 高可用也依賴 ZooKeeper 來協調 Active/Standby

  • 客戶端從 ZooKeeper 獲取當前 Active RM 地址進行資源請求

3. HBase Master 和 RegionServer 協調

  • HBase 完全依賴 ZooKeeper 來實現Master 主備選舉RegionServer 注冊/心跳管理Region 元數據存儲

  • RegionServer 會在 ZooKeeper 上注冊自己的狀態,并維持心跳

  • 一旦宕機,ZooKeeper 自動刪除 znode,Master 感知并觸發 region 重分配

4. Hive/Impala/Presto 元數據鎖與 HA

  • Hive Server2 可通過 ZooKeeper 實現服務發現與負載均衡

  • Impala 使用 ZooKeeper 來協調 catalog 服務主備狀態


二、ZooKeeper 協調 Hadoop 的原理機制

1. 分布式鎖機制

  • Hadoop 使用 ZooKeeper 的 ephemeral nodes + sequential nodes 來實現公平鎖(如主備 NameNode)

  • 誰先成功創建順序節點,誰獲得鎖;失敗者 watch 上一個節點變化

2. 狀態監聽機制

  • Watcher 機制用于監控 znode 狀態變化,Hadoop 的 ZKFC/RegionServer 都依賴這點來感知系統狀態變化

3. 心跳保活機制

  • 使用 ephemeral 節點反映各組件存活狀態,一旦宕機,節點消失,Master 能立即感知


三、故障處理流程示例:HDFS HA 切換過程

場景:Active NameNode 宕機

處理流程

  1. ZooKeeper 會刪除該 NameNode 的 ephemeral znode

  2. 其他 Standby NameNode 通過 ZKFC 監聽該 znode 的刪除事件

  3. 發起選舉,嘗試創建新的 ephemeral znode

  4. 先創建成功的 Standby 升級為 Active,開始對外提供服務

  5. 新 Active 節點接管 editlog 并恢復 Namespace 元數據

優勢

  • 自動感知故障、快速切換

  • 數據不依賴 ZooKeeper,只協調狀態和鎖


四、數據一致性與 ZooKeeper 的保障角色

HDFS 與 ZK 的配合重點在“元狀態一致性”

  • 元數據一致性:Active NameNode 的切換需嚴格串行,避免“腦裂”

  • ZooKeeper 確保 NameNode 選主是“單點可見”的,通過事務型 znode(例如 /hdfs-ha/namespace/ActiveBreadCrumb)實現

HBase 的強一致保障

  • HBase 在寫入時將 Region 信息注冊至 ZooKeeper

  • 所有讀寫都依賴這個元數據,避免客戶端誤訪問錯誤 Region


五、ZooKeeper 與 Hadoop 協同部署建議

配置項建議
ZooKeeper 節點數量推薦奇數(3、5),確保多數機制
部署獨立于 Hadoop避免 ZooKeeper 與 NameNode、RM 等同部署,隔離故障域
數據目錄存儲使用 SSD,本地磁盤,啟用 fsync 保證 WAL 寫入可靠
使用 Observer 節點對于大規模讀取(如 HBase),可擴展 ZooKeeper 集群讀吞吐
Watcher 控制避免過多 Watch(HBase 支持 Watch batch),否則 ZooKeeper 壓力大
會話超時調優HBase 推薦 30~90 秒,YARN 與 HDFS 可適當縮短,提升故障感知速度

六、典型問題與優化建議

問題場景分析優化建議
Leader 崩潰后切換慢ZKFC 監聽響應時間過長調整 zk.session.timeout、ZKFC 配置
ZooKeeper 節點負載高Watch 數量多、讀寫大增加 Observer 節點,限制監聽粒度
腦裂問題NameNode 多實例均認為自己是 Active加強 zk ACL 管理,配置 fencing 腳本
ZooKeeper WAL 損壞節點宕機或磁盤掉電啟用 forceSync=yes,定期快照備份

七、總結

維度作用
可用性保障HDFS/YARN HA 通過 ZooKeeper 自動主備切換
狀態協調HBase 使用 ZooKeeper 管理 RegionServer 和 Region 元數據
故障檢測ZooKeeper 的 ephemeral node 和 Watch 實現自動感知機制
一致性保障ZAB 協議確保元狀態更新在多節點間的一致廣播
集群彈性Observer 模式支持橫向讀擴展;Leader 只負責寫一致性


3. ZooKeeper 故障演練手冊(針對 Hadoop/HBase 高可用架構)

針對 ZooKeeper 在 Hadoop(HDFS/YARN)與 HBase 高可用架構中的故障演練手冊,涵蓋常見故障類型、預期表現、演練方法、驗證指標、恢復步驟和演練目標,適合于生產環境灰度測試或災備演練。

一、基礎環境前提

  • ZooKeeper 集群:3 或 5 節點部署(如 zk1, zk2, zk3)

  • HDFS 啟用 HA(nn1, nn2 + zkfc)

  • YARN 啟用 HA(rm1, rm2)

  • HBase 啟用 HA(master1, master2 + 多個 RegionServer)

  • 所有系統均正確配置 ZooKeeper


二、演練目標

  • 驗證 ZooKeeper 單節點/多節點故障時系統的可用性表現

  • 驗證 HDFS、YARN、HBase 的自動 failover 能力與數據一致性保障

  • 檢查報警觸發、系統自恢復能力、手動干預流程有效性

  • 提升運維人員處理 ZooKeeper 故障的能力


三、演練項列表

編號故障類型影響模塊預期表現
F1單個 ZooKeeper 節點宕機所有集群正常,功能不受影響
F2超過半數 ZooKeeper 節點宕機所有ZK 失效,HDFS/HBase 選主失敗
F3NameNode Active 宕機HDFSStandby 自動切換為 Active
F4ZooKeeper 日志寫滿HBaseRegionServer 心跳失效,異常下線
F5ZooKeeper 網絡延遲或抖動HDFS/HBase選主超時,短暫不可用
F6RegionServer zk 會話過期HBaseRegion 自動重分配,數據不中斷

四、詳細演練操作與恢復

F1. ZooKeeper 單節點宕機(zk1)

操作步驟:
ssh zk1
systemctl stop zookeeper
預期表現:
  • ZooKeeper 仍能選主

  • HDFS、YARN、HBase 正常運行

  • zkServer.sh status 顯示 zk2 為 leader,zk3 為 follower

驗證點:
  • ZooKeeper mntr 端口輸出正常

  • HDFS hdfs haadmin -getServiceState 輸出正確

  • HBase Master UI/日志無選主異常

恢復步驟:
systemctl start zookeeper

F2. ZooKeeper 超半數節點宕機(zk1 + zk2)

操作步驟:
ssh zk1 && systemctl stop zookeeper
ssh zk2 && systemctl stop zookeeper
預期表現:
  • ZooKeeper 無法選主,HDFS ZKFC 無法執行自動 failover

  • HBase RegionServer 報 SessionTimeout

  • HDFS 客戶端重試失敗,寫入卡頓或報錯

驗證點:
  • ZooKeeper ruok 無響應

  • HDFS zkfc 日志:ConnectionLossException

  • HBase Master 日志:SessionExpiredException

恢復步驟:
systemctl start zookeeper (zk1/zk2)

等待 ZooKeeper quorum 恢復,驗證系統恢復自動化狀態


F3. NameNode Active 宕機

操作步驟:
ssh nn1
kill -9 `jps | grep NameNode | awk '{print $1}'`
預期表現:
  • ZKFC 觸發自動切換,Standby 成為 Active

  • HDFS 客戶端正常寫入/讀取

驗證點:
hdfs haadmin -getServiceState nn1
# 輸出:unknown 或無響應hdfs haadmin -getServiceState nn2
# 輸出:active
恢復步驟:
start-dfs.sh

F4. ZooKeeper 日志爆滿模擬(zk1)

操作步驟:
# 禁用快照清理
echo "autopurge.purgeInterval=0" >> zoo.cfg# 寫入大量 znodes(可用 zkCli.sh 創建臨時節點批量)
for i in {1..10000}; do create /test$i data$i; done
預期表現:
  • ZooKeeper 寫失敗或性能急劇下降

  • HBase RegionServer zk 會話丟失,出現 down 現象

驗證點:
  • 查看 zk 日志:WARN fsync-ing the write ahead log

  • RegionServer 日志:SessionTimeoutException

恢復步驟:
# 清理 zk 日志文件
rm -rf /data/zookeeper/version-2/log.*# 啟用自動清理
autopurge.purgeInterval=1
systemctl restart zookeeper

F5. ZooKeeper 網絡抖動

操作步驟:

在 zk1 上模擬網絡延遲:

tc qdisc add dev eth0 root netem delay 200ms loss 20%
預期表現:
  • 部分 znode 請求超時

  • ZKFC 或 RegionServer 可能發生異常切換或短暫連接中斷

驗證點:
  • zkfc 日志有連接斷開重連記錄

  • ZooKeeper metrics 顯示 client連接數波動

恢復:
tc qdisc del dev eth0 root netem

F6. 模擬 HBase RegionServer zk 會話過期

操作步驟:
  • 在 RegionServer 上掛起進程(模擬無響應)

kill -STOP `jps | grep HRegionServer | awk '{print $1}'`
預期表現:
  • zk 會話斷開,znode 被刪除

  • HMaster 檢測 RegionServer 失聯,自動重分配 Region

恢復步驟:
kill -CONT <pid>

五、補充建議

方面建議
告警系統整合 ZK 連接數、延遲、會話異常到 Prometheus + Alertmanager
演練頻率每季度進行一次 HA 故障模擬
自動化使用 Ansible/ChaosBlade 自動化注入故障和恢復
日志收集所有組件 zk 相關日志單獨匯總便于排查

4.?故障演練腳本合集

以下是 ZooKeeper + Hadoop/HBase 高可用集群下的故障演練腳本合集,涵蓋 bash 腳本Ansible Playbook 兩種方式,支持自動注入故障與恢復操作,便于定期進行演練或集成至 CI/CD 流程。


一、Bash 腳本合集(適合手動測試或定時調度)

1. 模擬 ZooKeeper 單節點宕機

#!/bin/bash
ZK_NODE=$1ssh $ZK_NODE "sudo systemctl stop zookeeper"
echo ">> ZooKeeper on $ZK_NODE stopped."

2. 模擬 ZooKeeper 多節點(過半)宕機

#!/bin/bash
ZK_NODES=("zk1" "zk2")for node in "${ZK_NODES[@]}"; dossh $node "sudo systemctl stop zookeeper"echo ">> ZooKeeper on $node stopped."
done

3. 模擬 HDFS Active NameNode 宕機

#!/bin/bash
NN_ACTIVE_HOST="nn1"ssh $NN_ACTIVE_HOST "kill -9 \$(jps | grep NameNode | awk '{print \$1}')"
echo ">> NameNode on $NN_ACTIVE_HOST killed."

4. 模擬 RegionServer 會話過期

#!/bin/bash
RS_HOST=$1
ssh $RS_HOST "kill -STOP \$(jps | grep HRegionServer | awk '{print \$1}')"
echo ">> RegionServer on $RS_HOST frozen (STOP)."

恢復:

ssh $RS_HOST "kill -CONT \$(jps | grep HRegionServer | awk '{print \$1}')"

5. 模擬 ZooKeeper 網絡抖動

#!/bin/bash
ZK_NODE=$1
DELAY=300ms
LOSS=20%ssh $ZK_NODE "sudo tc qdisc add dev eth0 root netem delay $DELAY loss $LOSS"
echo ">> Network delay/loss injected on $ZK_NODE"

恢復:

ssh $ZK_NODE "sudo tc qdisc del dev eth0 root netem"

二、Ansible 演練劇本合集(適合批量、自動化)

1. 目錄結構

zk-fault-injection/
├── inventory
├── playbooks/
│   ├── zk_stop.yml
│   ├── zk_network_delay.yml
│   ├── nn_kill.yml
│   ├── rs_suspend.yml

2. inventory 示例

[zookeeper]
zk1 ansible_host=192.168.1.10
zk2 ansible_host=192.168.1.11
zk3 ansible_host=192.168.1.12[namenodes]
nn1 ansible_host=192.168.1.20[hbase_rs]
rs1 ansible_host=192.168.1.30

3. zk_stop.yml

- name: Stop ZooKeeper nodeshosts: zookeeperbecome: truetasks:- name: Stop ZooKeeper servicesystemd:name: zookeeperstate: stopped

4. nn_kill.yml

- name: Kill Active NameNodehosts: namenodestasks:- name: Kill NameNode processshell: "kill -9 $(jps | grep NameNode | awk '{print $1}')"

5. zk_network_delay.yml

- name: Inject network delayhosts: zookeeperbecome: truetasks:- name: Add network delayshell: "tc qdisc add dev eth0 root netem delay 300ms loss 20%"

恢復:

- name: Remove network delayhosts: zookeeperbecome: truetasks:- name: Clear netemshell: "tc qdisc del dev eth0 root netem"

6. rs_suspend.yml

- name: Suspend RegionServer processhosts: hbase_rstasks:- name: STOP RegionServershell: "kill -STOP $(jps | grep HRegionServer | awk '{print $1}')"- name: Wait 30spause:seconds: 30- name: RESUME RegionServershell: "kill -CONT $(jps | grep HRegionServer | awk '{print $1}')"

三、擴展建議

場景建議
大規模多集群使用標簽化 inventory 支持多集群參數管理
灰度環境定時演練將腳本接入 Jenkins、Airflow 或 Kube-native Job
監控聯動自動觸發 Prometheus 告警/Slack 報警聯動
日志追蹤配合 ELK 統一采集 zkfc、HMaster、RS 的故障日志

5. ZooKeeper 在 Kafka中的應用

ZooKeeper 是 Kafka 早期架構中的核心協調組件,主要負責 Kafka 中控制器(Controller)的選舉、分區 Leader 的元數據維護等。下面我們將系統剖析 Kafka 與 ZooKeeper 的協調機制,并詳細說明主節點(Controller)掛掉后 Kafka 如何選舉新的 Leader。


一、Kafka 與 ZooKeeper 的協調機制(核心職責)

Kafka 依賴 ZooKeeper 進行以下幾方面協調:

功能說明
Controller 選舉Kafka 啟動時,第一個搶占 /controller ZNode 的 Broker 成為 Controller。
Topic 元數據存儲topic 配置、副本關系、分區狀態等寫入 ZooKeeper
分區 Leader 分配Controller 將每個 partition 的 leader 副本記錄到 /brokers/topics/<topic>/partitions/<n>/state
Broker 狀態監控每個 Kafka Broker 向 ZooKeeper 注冊臨時節點 /brokers/ids/<brokerId>,宕機會自動刪除
ISR 列表維護Kafka Controller 根據 ZooKeeper 記錄的 ISR 列表決定 leader 切換策略

二、Kafka Controller 是什么?

Kafka 集群中會從所有 Broker 中選出一個 Controller,它負責:

  • 監控所有 Broker 和 Topic 元數據變化

  • 為所有 Partition 分配 Leader、副本、ISR

  • 在 Broker 宕機或恢復時,重新分配 Leader

  • 管理分區遷移(rebalance)

Controller 僅有一個,通過 ZooKeeper 中的 /controller 節點實現鎖機制,其他 Broker 會監聽該節點變化。


三、主節點(Controller)掛掉后的選舉流程詳解

1. 故障檢測

  • Kafka 的所有 Broker 都在監聽 ZooKeeper 的 /controller 節點

  • 當前 Controller Broker 掛掉后,其 ZooKeeper 會話失效,臨時節點 /controller 被自動刪除

2. Controller 選舉觸發

  • 所有其他 Broker 接收到 /controller 節點被刪除的 Watcher 事件后,開始競爭 Controller

  • Kafka 使用“先到先得”的方式嘗試創建 /controller 節點:

    zkClient.createEphemeral("/controller", brokerId)
    
  • 創建成功者即成為新的 Controller

3. 新 Controller 執行恢復任務

新 Controller 會立即進行以下動作:

操作說明
重建集群元數據緩存讀取 ZooKeeper 上所有 Topic、Partition、Broker、ISR 信息
重新選舉 Partition Leader遍歷所有 partition,如果當前 leader 已失效,則從 ISR 中選出新的 leader
更新 ZooKeeper state 節點寫入新的 /brokers/topics/.../state,客戶端即可讀取新 leader 信息

4. Leader 更新通知給各 Broker

  • Kafka 使用 Controller-to-Broker channel(RPC),通知各個 Broker 相關分區的 leader 有更新

  • 每個 Broker 本地更新自己的分區 leader 表(PartitionStateInfo)


四、舉例說明

假設有如下 Kafka 架構:

  • ZooKeeper 集群:zk1, zk2, zk3

  • Kafka Broker:broker-101, broker-102, broker-103

  • Partition:topic-A 有 3 個分區,副本因子為 3

初始狀態:

  • Controller 為 broker-101

  • topic-A partition-0 的 leader 是 broker-101

broker-101 突然宕機:

  1. /controller 節點在 ZooKeeper 中消失(zk 會話失效)

  2. broker-102 和 broker-103 同時監聽到事件

  3. broker-102 搶占成功 /controller,成為新 Controller

  4. broker-102 查詢 ZooKeeper ISR 列表,發現 broker-103 仍在 ISR 中

  5. 將 partition-0 的 leader 變更為 broker-103,并寫入 ZooKeeper

  6. 通知所有相關 Broker 更新本地 leader 緩存


五、可靠性保證機制

機制說明
ZooKeeper 強一致性所有 Leader 元數據寫入 ZK,確保故障恢復時狀態不丟失
ISR 保證數據同步副本安全性只從 ISR(In-Sync Replica)中選 Leader,避免數據丟失
Watcher + 臨時節點機制Broker 宕機會自動觸發 Leader 恢復流程
Kafka Controller 高可用所有 Broker 都能競爭成為 Controller,保障不中斷

六、Kafka 2.8+ 后的變化(基于 KRaft 模式)

在 Kafka 2.8+ 中,引入了KRaft 模式(Kafka Raft Metadata Mode),完全去除了 ZooKeeper,改為使用自建的 Raft 協議進行 Controller 集群選舉和元數據同步:

  • Controller 成為一個 Raft Leader

  • 所有元數據寫入專用 topic(__cluster_metadata)

  • 徹底擺脫 ZooKeeper,簡化運維

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

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

相關文章

K8S-statefulset-mysql-ha

需求 實現一個HA mysql&#xff0c;包括1個master&#xff0c;2個slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S環境需要解決的問題 1、由于使用同一個statefulset配置&#xff0c;因此需要考慮master和slave使用不同的cnf文件。 2、不同pod之間文件的傳輸 3、…

人臉美顏磨皮祛痘1:數據集說明(含下載鏈接)

一. 前言 本篇博客是《人臉美顏磨皮祛痘》系列文章之《數據集說明(含下載鏈接)》&#xff0c;像這種深度學習圖像修復的數據一般是需要成對&#xff0c;網上很難找到&#xff0c;公司或者個人都是花錢找人做。為了方便你我他&#xff0c;本博客將分享一個由我自己整理的人臉美…

redis功能清單

文章目錄 Redis高級功能使用說明功能清單1. 分布式鎖1.1 功能描述1.2 使用方法1.3 測試接口 2. 消息發布訂閱2.1 功能描述2.2 使用方法發布消息訂閱消息 2.3 測試接口 3. 接口限流3.1 功能描述3.2 使用方法方式一&#xff1a;直接使用工具類方式二&#xff1a;使用注解&#xf…

從代碼學習深度學習 - 預訓練word2vec PyTorch版

文章目錄 前言輔助工具1. 繪圖工具 (`utils_for_huitu.py`)2. 數據處理工具 (`utils_for_data.py`)3. 訓練輔助工具 (`utils_for_train.py`)預訓練 Word2Vec - 主流程1. 環境設置與數據加載2. 跳元模型 (Skip-gram Model)2.1. 嵌入層 (Embedding Layer)2.2. 定義前向傳播3. 訓練…

Python實現對大批量Word文檔進行自動添加頁碼(16)

前言 本文是該專欄的第16篇,后面會持續分享Python辦公自動化干貨知識,記得關注。 在處理word文檔的時候,相信或多或少都遇到過這樣的需求——需要對“目標word文檔,自動添加頁碼”。 換言之,如果有大批量的word文檔文件需要你添加頁碼,這個時候最聰明的辦法就是使用“程…

云原生安全:Linux命令行操作全解析

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 ——從基礎概念到安全實踐的完整指南 一、基礎概念 1. Shell與終端交互 Shell是Linux命令行的解釋器&#xff08;如Bash、Zsh&#xff09;&#xff0c;負…

Day 34

GPU訓練 要讓模型在 GPU 上訓練&#xff0c;主要是將模型和數據遷移到 GPU 設備上。 在 PyTorch 里&#xff0c;.to(device) 方法的作用是把張量或者模型轉移到指定的計算設備&#xff08;像 CPU 或者 GPU&#xff09;上。 對于張量&#xff08;Tensor&#xff09;&#xff1…

C++筆試題(金山科技新未來訓練營):

題目分布&#xff1a; 17道單選&#xff08;每題3分&#xff09;3道多選題&#xff08;全對3分&#xff0c;部分對1分&#xff09;2道編程題&#xff08;每一道20分&#xff09;。 不過題目太多&#xff0c;就記得一部分了&#xff1a; 單選題&#xff1a; static變量的初始…

Spark(29)基礎自定義分區器

&#xff08;一&#xff09;什么是分區 【復習提問&#xff1a;RDD的定義是什么&#xff1f;】 在 Spark 里&#xff0c;彈性分布式數據集&#xff08;RDD&#xff09;是核心的數據抽象&#xff0c;它是不可變的、可分區的、里面的元素并行計算的集合。 在 Spark 中&#xf…

python打卡訓練營打卡記錄day35

知識點回顧&#xff1a; 三種不同的模型可視化方法&#xff1a;推薦torchinfo打印summary權重分布可視化進度條功能&#xff1a;手動和自動寫法&#xff0c;讓打印結果更加美觀推理的寫法&#xff1a;評估模式 作業&#xff1a;調整模型定義時的超參數&#xff0c;對比下效果 1…

【MySQL】07.表內容的操作

1. insert 我們先創建一個表結構&#xff0c;這部分操作我們使用這張表完成我們的操作&#xff1a; mysql> create table student(-> id int primary key auto_increment,-> name varchar(20) not null,-> qq varchar(20) unique-> ); Query OK, 0 rows affec…

使用SQLite Expert個人版VACUUM功能修復數據庫

使用SQLite Expert個人版VACUUM功能修復數據庫 一、SQLite Expert工具簡介 SQLite Expert 是一款功能強大的SQLite數據庫管理工具&#xff0c;分為免費的個人版&#xff08;Personal Edition&#xff09;和收費的專業版&#xff08;Professional Edition&#xff09;。其核心功…

LM-BFF——語言模型微調新范式

gpt3&#xff08;GPT3——少樣本示例推動下的通用語言模型雛形)結合提示詞和少樣本示例后&#xff0c;展示出了強大性能。但大語言模型的訓練門檻太高&#xff0c;普通研究人員無力&#xff0c;LM-BFF(Making Pre-trained Language Models Better Few-shot Learners)的作者受gp…

遙感解譯項目Land-Cover-Semantic-Segmentation-PyTorch之二訓練模型

遙感解譯項目Land-Cover-Semantic-Segmentation-PyTorch之一推理模型 背景 上一篇文章了解了這個項目的環境安裝和模型推理,這篇文章介紹下如何訓練這個模型,添加類別 下載數據集 在之前的一篇文章中,也有用到這個數據集 QGIS之三十六Deepness插件實現AI遙感訓練模型 數…

【NLP 71、常見大模型的模型結構對比】

三到五年的深耕&#xff0c;足夠讓你成為一個你想成為的人 —— 25.5.8 模型名稱位置編碼Transformer結構多頭機制Feed Forward層設計歸一化層設計線性層偏置項激活函數訓練數據規模及來源參數量應用場景側重GPT-5 (OpenAI)RoPE動態相對編碼混合專家架構&#xff08;MoE&#…

[250521] DBeaver 25.0.5 發布:SQL 編輯器、導航器全面升級,新增 Kingbase 支持!

目錄 DBeaver 25.0.5 發布&#xff1a;SQL 編輯器、導航器全面升級&#xff0c;新增 Kingbase 支持&#xff01; DBeaver 25.0.5 發布&#xff1a;SQL 編輯器、導航器全面升級&#xff0c;新增 Kingbase 支持&#xff01; 近日&#xff0c;DBeaver 發布了 25.0.5 版本&#xf…

服務器硬盤虛擬卷的處理

目前的情況是需要刪除邏輯卷&#xff0c;然后再重新來弄一遍。 數據已經備份好了&#xff0c;所以不用擔心數據會丟失。 查看服務器的具體情況 使用 vgdisplay 操作查看服務器的卷組情況&#xff1a; --- Volume group ---VG Name vg01System IDFormat …

Flutter 中 build 方法為何寫在 StatefulWidget 的 State 類中

Flutter 中 build 方法為何寫在 StatefulWidget 的 State 類中 在 Flutter 中&#xff0c;build 方法被設計在 StatefulWidget 的 State 類中而非 StatefulWidget 類本身&#xff0c;這種設計基于幾個重要的架構原則和實際考量&#xff1a; 1. 核心設計原因 1.1 生命周期管理…

傳統醫療系統文檔集中標準化存儲和AI智能化更新路徑分析

引言 隨著醫療數智化建設的深入推進&#xff0c;傳統醫療系統如醫院信息系統(HIS)、臨床信息系統(CIS)、護理信息系統(NIS)、影像歸檔與通信系統(PACS)和實驗室信息系統(LIS)已經成為了現代醫療機構不可或缺的技術基礎設施。這些系統各自承擔著不同的功能&#xff0c;共同支撐…

探索常識性概念圖譜:構建智能生活的知識橋梁

目錄 一、知識圖譜背景介紹 &#xff08;一&#xff09;基本背景 &#xff08;二&#xff09;與NLP的關系 &#xff08;三&#xff09;常識性概念圖譜的引入對比 二、常識性概念圖譜介紹 &#xff08;一&#xff09;常識性概念圖譜關系圖示例 &#xff08;二&#xff09…