【分布式理論】讀確認數與寫確認數:分布式一致性的核心概念

文章目錄

  • 零、概述
  • 一、基本概念解釋
    • 1、 什么是寫確認數(w)?
    • 2、 什么是讀確認數(r)?
    • 3、一致性級別的對應關系
  • 二、工作流程詳解
    • 1、 寫操作的完整流程
    • 2、 讀操作的完整流程
  • 三、強一致性的數學原理
    • 1、 為什么r + w > RF 保證強一致性?
    • 2、 最終一致性 vs 強一致性
  • 四、實際應用中的權衡考慮
    • 1、 故障容忍性分析
    • 2、 業務場景的選擇指南

零、概述

讀確認數和寫確認數是分布式系統中實現可調一致性的核心機制。通過靈活配置這兩個參數,系統可以在一致性、可用性、性能之間找到最適合業務需求的平衡點。

理解這個概念的關鍵是認識到:分布式系統中的一致性不是非黑即白的,而是可以根據業務需求進行精確調節的。這種設計哲學使得現代分布式數據庫能夠適應各種不同的應用場景,從高吞吐量的日志系統到強一致性的金融系統。

?

一、基本概念解釋

1、 什么是寫確認數(w)?

寫確認數(w) 是指在分布式系統中,一個寫入操作需要等待多少個副本節點返回"寫入成功"的確認,才認為這次寫入操作完成。

舉個生活化例子:
假設你要把一份重要文件保存到3個不同的保險箱(3個副本),寫確認數就是"你需要等幾個保險箱告訴你’文件已保存成功’,你才放心地認為保存完成了"。

  • 如果w=1:只要1個保險箱說"存好了",你就認為完成
  • 如果w=2:需要2個保險箱都說"存好了",你才認為完成
  • 如果w=3:需要3個保險箱都說"存好了",你才認為完成

?

2、 什么是讀確認數(r)?

讀確認數(r) 是指在分布式系統中,一個讀取操作需要從多少個副本節點獲取數據,然后比較這些數據并選擇最新版本,才認為這次讀取操作完成。

繼續用保險箱例子:
當你要取出文件時,讀確認數就是"你需要打開幾個保險箱查看文件內容,然后選擇最新版本"。

  • 如果r=1:只打開1個保險箱,直接拿那份文件
  • 如果r=2:打開2個保險箱,比較文件版本,選擇較新的
  • 如果r=3:打開3個保險箱,比較所有版本,選擇最新的

?

3、一致性級別的對應關系

常見一致性級別的r/w值

一致性級別讀確認數(r)寫確認數(w)說明
ONEr=1w=1最快,但可能讀到過期數據
QUORUMr=?RF/2?+1w=?RF/2?+1平衡性能與一致性
ALLr=RFw=RF最強一致性,但容錯性最差

QUORUM的計算:

  • RF=3時,QUORUM = ?3/2?+1 = 2
  • RF=5時,QUORUM = ?5/2?+1 = 3
  • RF=7時,QUORUM = ?7/2?+1 = 4

?

二、工作流程詳解

1、 寫操作的完整流程

以復制因子RF=3、寫確認數w=2為例:

步驟1:客戶端發送寫請求 "key=A, value=100" 
步驟2:協調節點收到請求,向3個副本節點發送寫入命令
步驟3:等待副本節點響應...節點1: "寫入成功" ?  
節點2: "寫入成功" ?  <- 收到2個確認,滿足w=2  
節點3: 還在處理中... ?  步驟4:協調節點立即向客戶端返回"寫入成功"
步驟5:節點3的寫入結果無論成功失敗,都不影響客戶端已得到的結果

?

2、 讀操作的完整流程

以復制因子RF=3、讀確認數r=2為例:

步驟1:客戶端發送讀請求 "key=A"
步驟2:協調節點向3個副本節點發送查詢命令  
步驟3:等待副本節點響應...節點1: "value=100, version=v5" ?
節點2: "value=90, version=v4" ?  <- 收到2個響應,滿足r=2
節點3: 還在查詢中... ?步驟4:協調節點比較版本號,v5 > v4,選擇較新的數據
步驟5:向客戶端返回 "value=100"

?

?

三、強一致性的數學原理

1、 為什么r + w > RF 保證強一致性?

關鍵在于"重疊":當讀確認數和寫確認數的總和大于復制因子時,讀寫操作必然會有重疊的副本節點

數學證明:

  • 設RF=3,如果w=2,r=2
  • 寫操作影響了2個節點
  • 讀操作查詢了2個節點
  • 總共只有3個節點,根據鴿籠原理讀寫操作至少有1個共同節點, 這個共同節點保證讀操作能獲取到最新寫入的數據

圖示說明(RF=3的情況):

情況1: w=2, r=2 (r+w=4>3,強一致性)
寫操作: [節點A?, 節點B?, 節點C ]  
讀操作: [節點A  , 節點B?, 節點C?]  
重疊節點: 節點B,確保讀到最新數據情況2: w=1, r=1 (r+w=2≤3,可能不一致)  
寫操作: [節點A?, 節點B , 節點C ]
讀操作: [節點A  , 節點B , 節點C?]  
無重疊節點,可能讀到過期數據

?

2、 最終一致性 vs 強一致性

最終一致性(r + w ≤ RF):

  • 優點:更高的可用性和性能
  • 缺點:可能讀到過期數據
  • 適用場景:對實時性要求不高的應用

強一致性(r + w > RF):

  • 優點:保證讀到最新數據
  • 缺點:性能較低,容錯性較差
  • 適用場景:對數據準確性要求高的應用

?

四、實際應用中的權衡考慮

1、 故障容忍性分析

確認數寫操作容忍度讀操作容忍度說明
1可容忍 RF-1 個節點故障可容忍 RF-1 個節點故障最高容錯性,只需1個節點可用
2可容忍 RF-2 個節點故障可容忍 RF-2 個節點故障中等容錯性,需2個節點可用
RF任何節點故障都會導致寫入失敗任何節點故障都會導致讀取失敗無容錯性,需所有節點可用

2、 業務場景的選擇指南

設RF=3

業務場景典型應用wr一致性級別主要理由
高頻寫入場景日志收集
監控數據
事件流處理
11ONE優先保證寫入性能
允許讀取延遲
平衡讀寫場景用戶數據
商品信息
內容管理
22QUORUM在一致性和性能之間
取得平衡
強一致性場景金融交易
賬戶余額
審計日志
31寫ALL/讀ONE確保數據完全可靠
讀取策略可調整
強一致性場景關鍵配置
權限數據
合規數據
23寫QUORUM/讀ALL寫入平衡性能
讀取絕對準確
應用類型推薦配置配置理由風險點
Web訪問日志RF=3, w=1, r=1大量寫入,偶爾讀取分析可能讀到稍舊的數據
用戶資料RF=3, w=2, r=2讀寫頻率相當,需要一致性1個節點故障影響性能
銀行賬戶余額RF=3, w=3, r=1寫入必須絕對準確任一節點故障無法寫入
訂單支付狀態RF=3, w=2, r=3支付后查詢必須準確讀取需要所有節點可用
系統配置中心RF=5, w=3, r=3高可用+強一致性更高的資源成本

?

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

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

相關文章

滾珠導軌在醫療設備中有多重要?

在醫療設備領域&#xff0c;穩定性是保障手術安全、提升診斷精度的核心要素。無論是手術機器人精準的器械操作&#xff0c;還是CT掃描儀高速穩定的掃描運動&#xff0c;都離不開背后精密傳動系統的支持。作為線性運動的核心部件&#xff0c;滾珠導軌憑借其獨特的滾動摩擦原理與…

港科ISM選課攻略整理

畢業要求 課程和課程目錄(ISM專業) "D:\HKUST-ISM\prepare\中英Program & Course Catalog.pdf" 課程和課程目錄&#xff08;全部ISOM課程&#xff09; "D:\HKUST-ISM\prepare\全部ISOM Course Catalog.pdf" 兩個可選專業方向 Financial Technolo…

rent8_wechat-最常用出租屋管理系統-微信小程序

rent8_wechat-最常用出租屋管理系統是rent8的微信小程序&#xff0c;需要和rent8配合使用。rent8_wechat基于Tdesign開發。 核心功能 房產管理&#xff1a;新增房產信息、修改房產信息、刪除房產信息。房間管理&#xff1a;新增房間信息、修改房間信息、刪除房間信息、入住管…

OpenCV CUDA模塊設備層---- 絕對值函數abs()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 這是 OpenCV 的 cv::cudev 模塊中用于 CUDA 設備端&#xff08;device&#xff09;的絕對值函數&#xff0c;專門處理 uchar1 類型&#xff08;即…

IEC61850 通信協議測試驗證方法詳解

一、MMS 協議測試方法 MMS&#xff08;制造報文規范&#xff09;是 IEC61850 中用于設備監控和控制的核心協議&#xff0c;測試需覆蓋以下維度&#xff1a; &#xff08;一&#xff09;協議棧實現驗證 連接管理測試 測試用例&#xff1a;建立和釋放 MMS 連接 100 次&#xf…

關于 Kyber:抗量子密碼算法 Kyber 詳解

一、基本概念 后量子密碼學&#xff08;PQC&#xff09; │ ├──> 是一個領域&#xff08;研究如何在“量子時代”保護數據安全&#xff09; │ └──> Kyber 是這個領域中設計出來的一個“抗量子密碼算法”└──> Kyber 是用于加密密鑰交換的算法&#xff08;叫…

如何保障具身智能系統級安全?鴻道OS給出中國方案

由東土科技自主研發完成的鴻道&#xff08;Intewell&#xff09;工業操作系統正式發布。東土科技董事長李平與該公司全資子公司光亞鴻道總經理鄒露君在接受第一財經等采訪時&#xff0c;解釋了如何通過操作系統為具身智能產業提供底層支撐&#xff0c;解決產業規模化落地的安全…

深入淺出:JavaScript ES6中類(Class)的革新與實踐

深入淺出&#xff1a;JavaScript ES6中類&#xff08;Class&#xff09;的革新與實踐 在JavaScript的發展歷程中&#xff0c;ES6&#xff08;ECMAScript 2015&#xff09;無疑是一個里程碑式的版本。它不僅引入了let、const、箭頭函數等特性&#xff0c;更通過**類&#xff08…

華大北斗TAU804M-N2B0雙頻單北斗高精度定位模塊 100%國產雙頻北斗 打破u-blox技術壟斷

華大北斗TAU804M-N2B0雙頻單北斗模塊深度解析 1. 產品定位 TAU804M-N2B0 是華大北斗&#xff08;HDSC&#xff09;推出的 雙頻單北斗高精度定位模塊&#xff0c;支持 B1IB2a雙頻信號接收&#xff0c;專為 高精度定位、抗多徑干擾 場景設計&#xff0c;是北斗三號系統應用的標桿…

IP證書申請攻略細則,有何作用?

IP證書申請攻略細則及作用解析 一、IP證書的作用 數據加密傳輸 IP證書通過SSL/TLS協議對客戶端與服務器之間的數據進行加密&#xff0c;防止數據在傳輸過程中被竊取或篡改&#xff0c;適用于物聯網設備、API接口、測試服務器等直接通過IP訪問的場景。 身份驗證與防偽造 瀏覽器…

回文鏈表C++

給你一個單鏈表的頭節點 head &#xff0c;請你判斷該鏈表是否為回文鏈表。如果是&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 時間復雜度較大的解法&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* Lis…

限流系列之三:TDMQ for Apache Pulsar 限流技術深度解析

導語 在高速、高吞吐量的消息處理場景中&#xff0c;TDMQ Pulsar 版以其卓越的性能和可擴展性成為眾多企業的首選。然而&#xff0c;隨著生產者和消費者以極高的速度生產/消費大量消息&#xff0c;服務器資源如 CPU、內存、網絡及磁盤 IO 等可能會面臨飽和風險。為此&#xff…

非研發部門參與產品開發過程的價值體現

漢捷咨詢 胡紅衛 企業已經越來越意識到新產品開發項目需要市場、銷售、制造、采購、服務、財務等非研發部門的參與&#xff0c;嘗試建立跨部門的項目組&#xff0c;安排相關人員參與項目&#xff0c;但是效果如何呢&#xff1f;在漢捷咨詢對很多企業調研診斷過程中&#xff0c;…

Kafka的存儲與索引:數據處理的底層奧秘

一、引言 Kafka 之所以能在海量數據的傳輸和處理過程中保持高效的性能和低延遲&#xff0c;背后隱藏著眾多精妙的設計&#xff0c;而其存儲與索引機制便是其中的核心奧秘。接下來&#xff0c;讓我們深入探尋 Kafka 存儲機制的基石與架構。 二、分區與日志組織? Kafka 中的消…

大模型與搜索引擎的技術博弈及未來智能范式演進

基于認知革命與技術替代的全景綜述 一、大模型對搜索引擎的替代性分析&#xff1a;技術范式與市場重構 &#xff08;1&#xff09;技術原理的代際分野 傳統搜索引擎遵循 "爬蟲抓取 - 索引構建 - 關鍵詞排序" 的三段式架構&#xff0c;其核心是基于 PageRank 算法的…

XC7K325T數據采集卡設計原理圖:786-基于X86 CPU+XC7K325T的16路16bit 1M sps同步數據采集卡

基于X86 CPUXC7K325T的16路16bit 1M sps同步數據采集卡 一、板卡概述 板卡為緊湊型的X86FPGA的工業監測處理平臺&#xff0c;高度集成的硬件和完整的labview開發軟件&#xff0c;大大方便客戶現場使用。 二、板卡功能 板卡功能 參數內容 X86 SOM核心板 主頻 2.0GHz …

單片機3種按鍵程序消抖方法

1&#xff0c;查詢法延時模式 u8 key01;u8 x0;KEY1;while(1){if(KEY0) //"按鍵按下"{delay(10); //延時10msif(KEY0 && kdy01) //按下有10ms 且上狀態是1。即下降沿時{key00; //將上狀態置0.防止按住不放時&#xff0…

【java面試】線程篇

【java面試】線程篇 一、基礎知識1 線程與進程的區別2 并行與并發的區別3 創建線程的方式4 線程包含了哪些狀態&#xff0c;狀態之間是如何變化的&#xff1f;5 新建三個線程&#xff0c;如何保證他們按照順序執行&#xff1f;6、java中的wait和sleep方法的不同7 如何停止一個正…

RAGFlow是一個基于深度文檔理解的開源RAG引擎

RAGFlow概述 RAGFlow是一款基于深度文檔理解的開源RAG&#xff08;檢索增強生成&#xff09;引擎&#xff0c;專注于處理復雜文檔結構并提供精準的語義檢索與生成能力。其核心優勢在于結合多模態文檔解析和智能分段技術&#xff0c;優化傳統RAG流程中的信息提取與答案生成效果…

Git Commit 模板完整配置指南

Git Commit 模板完整配置指南 &#x1f4cb; 目錄 Git Commit 模板完整配置指南 &#x1f4cb; 目錄&#x1f3af; 為什么需要 Commit 模板&#x1f4dd; 推薦的 Commit 模板 標準模板格式C 項目特化模板 ?? 系統級配置 1. 創建模板文件2. 配置 Git 使用模板3. 驗證配置 &a…