“臥槽,系統又崩了!”——別慌,這也許是你看過最通俗易懂的分布式入門

在分布式系統中,有效應對節點故障、網絡分區延遲和數據一致性等挑戰至關重要。本文將剖析保障分布式系統可靠性的核心機制:數據分片實現水平擴展,冗余副本保障數據高可用,租約(Lease)機制優化節點狀態共識與資源管理,多數派(Quorum)原則確保操作的一致性,Gossip等去中心化協議高效同步集群狀態。這些成熟機制為構建穩健、高效的分布式系統提供了方法論支撐。

分布式系統
任何計算機系統都需要完成兩項基本任務,即計算(Computation)和存儲(Storage)。問題始于處理規模的需要,大多數事情在小規模上都是微不足道的——一旦超過了一定的大小、體積或其他物理受限的東西,同樣的問題就會變得更加困難。 當數據量級攀升至億萬級別,并發請求激增時,單個計算或存儲節點的物理極限便會凸顯。此時,無論如何優化單點性能,也難以獨立承載如此巨大的處理需求。
假設擁有無限的資源(如資金、人員、研發時間等),那么理論上所有的計算和存儲任務都可以在一個單一的高性能、高可靠節點上完成。然而,現實世界中資源總是有限的,因此必須在成本與收益之間找到最佳平衡點。在小規模場景下,通過縱向擴展(Scale-up),即升級單個節點的硬件,是一種直接的策略。但隨著規模的持續增長,硬件升級會遭遇瓶頸:要么不存在滿足需求的單點硬件,要么其成本高昂到不切實際。
為突破單點瓶頸,分布式系統(Distributed System) 應運而生。它通過將龐大的計算或存儲任務分解,并將其分散到由網絡連接的多個獨立計算節點(通常是商用計算機)集群上協同處理。這種橫向擴展(Scale-out)的方式,通過聚合眾多節點的計算和存儲能力以應對大規模問題。
從本質上看,分布式系統可以視為操作系統中計算與存儲管理理論在多節點協作環境下的延伸和擴展。操作系統在單機內管理進程、線程、內存、文件系統等資源;而分布式系統則在此基礎上,引入了跨節點的數據分片、任務調度、一致性協議、容錯機制等復雜問題。

單機性能與整體性能的關系

在這里插入圖片描述

數據顯示,當集群規模較小時,采用高性能硬件能夠顯著提升系統的整體性能。然而,隨著集群規模的持續擴大,高端硬件帶來的邊際效益會逐漸遞減,其與普通商用級硬件在集群整體性能上的差距會縮小。
從理論上講,理想情況下,每增加一臺機器,分布式系統的計算和存儲能力應能夠線性增長。然而,實際情況遠非如此。
1)網絡開銷與協調開銷: 在大規模集群中,數據需要在不同節點間網絡傳輸,任務的執行需要跨節點協調。這些通信和同步的開銷往往成為新的瓶頸,而非單個節點的計算能力。即使計算和存儲在同一節點,進程間的協調也會引入開銷。
2)Amdahl定律的啟示: 系統整體性能的提升受限于系統中無法并行化部分的比例。在分布式系統中,串行部分(如某些一致性協議的決策階段、共享資源的爭用)會限制并行帶來的收益。
3)成本效益: 高端硬件成本高昂。采用性價比更高的中檔商用級硬件,結合精心設計的容錯機制,通常能以更低的總體擁有成本(Total Cost of Ownership,TCO)獲得理想的系統性能和可靠性。
因此,現代分布式系統設計傾向于使用大量相對廉價的商用硬件,依賴軟件層面的智能調度和容錯機制來保證系統的整體表現。

節點
在分布式系統中,節點是指一個能夠獨立執行特定邏輯功能的程序實體。在工程實踐中,一個節點通常對應一個操作系統上的進程,它承載一組明確定義的任務,如數據存儲、計算處理、元數據管理等。一個進程通常被視為一個邏輯上不可分割的節點單元。
然而,若一個進程內部包含多個高度獨立、可分別承擔不同角色的組件,從架構設計的角度,有時也會將其細化為多個邏輯節點,即使它們物理上運行在同一個進程或機器內。

拜占庭問題
拜占庭問題(Byzantine Problem)是分布式系統中的一個經典難題,由Leslie Lamport等人在1982年提出。其名稱源于一個比喻:拜占庭帝國的多位將軍率軍圍攻一座城市,需通過信使來協商進攻或撤退的策略。然而,將軍(節點)中可能存在叛徒,發送錯誤消息(甚至惡意信息)以破壞計劃。問題的核心在于,如何在存在叛徒的情況下,讓忠誠的將軍們達成一致并執行正確決策。

在這里插入圖片描述

在分布式系統中,這種發送任意錯誤、不一致或惡意數據的節點故障被稱為拜占庭故障(Byzantine Fault)。解決此類問題的算法統稱為拜占庭容錯(Byzantine Fault Tolerance, BFT) 算法,其中最著名的實用算法是PBFT (Practical Byzantine Fault Tolerance)。BFT算法通常要求在總共 N 個節點中,惡意節點的數量 f 必須小于 N/3(即 N ≥ 3f+1),才能保證系統正確達成共識。這類算法因其高昂的通信開銷(通常需要多輪消息交換和數字簽名)和復雜性,性能相對較低。
拜占庭問題在對安全性要求極高的領域至關重要,例如航空航天、金融交易以及區塊鏈技術。比特幣的工作量證明(Proof of Work, PoW) 和以太坊等采用的權益證明(Proof of Stake, PoS) 等共識機制,其本質上都是為了在開放、無需信任的環境中解決拜占庭問題,確保全網對交易記錄的一致性和不可篡改性。

崩潰故障
在許多常見的分布式應用場景中,尤其是在受控的企業內部環境(如私有云、公司數據中心),節點通常被認為是“誠實但可能出錯”的。這意味著節點不會故意發送錯誤或矛盾的信息,它們可能發生的故障主要是崩潰故障(Crash Fault),即節點突然停止工作并不再響應。這種簡化的故障模型允許使用更高效的容錯機制。

在這里插入圖片描述

針對崩潰故障的容錯設計,即崩潰故障容錯(Crash Fault Tolerance, CFT),它涉及處理分布式系統的各種異常(Failure)情況。
1)不可靠網絡與分布式三態:當節點A向節點B發起遠程過程調用(RPC)后,在預設時間內未收到響應,節點A無法確定節點B是否已處理該請求。RPC的執行結果存在三種狀態:“成功”、“失敗”、“超時(未知)”,稱之為分布式系統的三種狀態。
這種不確定性是分布式編程的主要難點之一。最簡單的做法是,將執行步驟設計為可重試的,即具有所謂的冪等性(Idempotence)。冪等操作是指無論執行一次還是多次,其產生的效果都相同。例如,覆蓋寫(SET key = value)是冪等的;基于唯一ID的創建操作(CREATE IF NOT EXISTS item_id)也是冪等的。通過重試超時的冪等操作,可以簡化錯誤處理邏輯。

添加圖片注釋,不超過 140 字(可選)

2)節點故障:雖然單個節點的平均無故障時間(Mean Time Between Failure,MTBF)可能較長,但在擁有成百上千個節點的集群中,節點故障成為常態事件(所謂“墨菲定律”的體現)。系統必須能夠自動檢測到故障節點,并將其負責的計算和存儲任務平滑地遷移到其他健康節點。

在這里插入圖片描述

3)數據丟失:節點存儲的數據可能因硬件損壞(尤其是機械硬盤)、軟件缺陷或操作失誤而變得不可讀或數據錯誤。對于有狀態服務而言,數據丟失意味著狀態丟失。
4)時鐘偏移:分布式系統中的每個節點都擁有獨立的物理時鐘。由于硬件差異、溫度變化、網絡同步(Network Time Protocol,NTP)的精度限制等因素,這些本地時鐘之間難以完全同步,會產生時鐘偏移。這給確定跨節點事件的全局偏序關系帶來了挑戰,可能導致邏輯錯誤。
總而言之,分布式系統的核心挑戰源于各種異常帶來的不確定性,而系統的規模會顯著放大這種不確定性發生的概率和影響。研究和應用成熟的分布式算法與協議,不僅為具體問題提供了行之有效的解決方案,更重要的是,它們揭示了在特定約束條件下什么是可能實現的、正確實現的最小代價是什么,以及哪些目標是理論上不可達的。

未完待續

很高興與你相遇!如果你喜歡本文內容,記得關注哦!!!

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

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

相關文章

【代碼隨想錄算法訓練營——Day4】鏈表——24.兩兩交換鏈表中的節點、19.刪除鏈表的倒數第N個節點、面試題02.07.鏈表相交、142.環形鏈表II

LeetCode題目鏈接 https://leetcode.cn/problems/swap-nodes-in-pairs/ https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/description/ https://leetcode.cn/problems/linked-list-cycle…

C#中一段程序類比博圖

using system //博圖中要使用自帶指令庫,指令庫名稱叫systemnamespace Simple//博圖建立程序,分診斷文件夾📂,vision文件夾,通訊Db文件夾📂等等,simple類似博圖中的文件夾名稱{class Program//程…

vue飛自在酒店管理系統(代碼+數據庫+LW)

摘 要 近年來,隨著科技的迅猛進步和經濟全球化的深入發展,互聯網技術正以前所未有的速度提升社會綜合發展的效能。這一技術的影響力已滲透到各行各業,其中,飛自在酒店管理系統在互聯網時代背景下扮演著舉足輕重的角色。信息管理…

2025年統計與數據分析領域專業認證發展指南

在數據驅動決策日益重要的背景下,專業認證作為提升統計學和數據分析能力的一種方式,受到越來越多從業者的關注。本文基于行業發展趨勢,分析6個相關領域的專業資格認證,為專業人士提供參考。一、數據分析能力認證含金量CDA數據分析…

激光頻率梳 3D 輪廓測量 - 油路板的凹槽深度和平面度測量

一、引言油路板作為液壓系統核心部件,其凹槽深度與平面度精度直接影響油液流動特性與密封性能。傳統測量方法在面對復雜油路結構時存在效率低、精度不足等問題。激光頻率梳 3D 輪廓測量技術憑借時頻基準優勢,為油路板關鍵參數測量提供了新路徑&#xff0…

七彩喜微高壓氧艙:科技與體驗的雙重革新,重新定義家用氧療新標桿

在高壓氧艙市場競爭日益激烈的今天,七彩喜微高壓氧艙憑借其獨特的技術創新、極致的用戶體驗和貼心的服務生態,在眾多品牌中脫穎而出。它不僅是一臺設備,更是一個“懂你需求、護你健康”的智能健康伙伴。對比其他品牌,七彩喜的優勢…

[光學原理與應用-418]:非線性光學 - 數學中的線性函數與非線性函數

線性函數與非線性函數是數學和工程領域中描述變量關系的基礎工具,二者在定義、性質、圖像特征及應用場景上存在本質差異。以下從核心概念、數學特性、圖像對比、應用場景及實際案例五個維度展開詳細分析:一、核心概念:線性 vs 非線性線性函數…

前端登錄鑒權詳解

1.cookie-session1. cookiecookie簡單來說就是瀏覽器客戶端在請求時會攜帶的一個字段數據,常用與保存當前用戶狀態并在請求時攜帶給服務端驗證。2. sessionsession簡單來說就是服務單對于每一個用戶生成一個用戶會話標識session /session id,并返回給客戶…

從零實現 LLM(上):原理講透 + 最小可運行 GPT

引言 為什么要學習 LLM? 當你和 ChatGPT 對話時,它不僅能回答你的問題,還能續寫故事、記住上下文,甚至調整風格。你可能會想:它是怎么做到的? 答案就是:大語言模型(Large Languag…

浪潮科技Java開發面試題及參考答案(120道題-下)

如何給 MySQL 表添加索引?添加索引的語法是什么?添加索引時需要考慮哪些因素(如字段類型、查詢頻率、索引選擇性)? 給 MySQL 表添加索引需根據業務需求選擇合適的索引類型,不同類型的索引語法不同,同時需綜合評估字段特性、查詢模式等因素,避免無效或過度索引。 一、…

大數據畢業設計選題推薦-基于大數據的宮頸癌風險因素分析與可視化系統-Spark-Hadoop-Bigdata

?作者主頁:IT研究室? 個人簡介:曾從事計算機專業培訓教學,擅長Java、Python、微信小程序、Golang、安卓Android等項目實戰。接項目定制開發、代碼講解、答辯教學、文檔編寫、降重等。 ?文末獲取源碼? 精彩專欄推薦??? Java項目 Python…

【PyTorch實戰:Tensor變形】5、 PyTorch Tensor指南:從基礎操作到Autograd與GPU加速實戰

一、Tensor核心概念解析 1.1 什么是Tensor? Tensor是PyTorch中最基本的數據結構,也是深度學習框架的核心計算單元。我們可以將Tensor理解為多維數組的統一表示,它在PyTorch中的地位相當于NumPy中的ndarray,但具有兩個關鍵增強特性:GPU加速支持和自動求導能力。 1.2 為…

2025年我國具身智能產業鏈全景分析

一、具身智能產業概述與定義 1.1 具身智能的基本概念與內涵 具身智能(Embodied Intelligence)是指通過物理實體與環境進行交互的智能系統,其核心在于將感知、決策和執行緊密結合,使智能體能夠在動態環境中自主感知、學習和執行任務…

VMWare上搭建大數據集群

文章目錄1. 采用軟件較新版本2. 準備三臺虛擬機3. 搭建Hadoop集群3.1 在主節點上配置Hadoop3.1.1 編輯映射文件3.1.2 配置免密登錄3.1.3 配置JDK3.1.4 配置Hadoop3.2 從主節點分發到從節點3.3 格式化名稱節點3.4 啟動Hadoop集群3.5 使用Hadoop WebUI3.6 運行MR應用:…

小迪自用web筆記29

PHP刷新是點擊刷新之后原來的圖片替換掉,換成新的圖片。把inhoneJPG給替換掉如果這個圖片是由用戶可自定義輸入的話,可xss漏洞應用。因為這段代碼本質邏輯是點擊刷新之后。就執行update方法中的代碼,而這個方法中存儲的是。截取IMG&#xff0…

WPS--專業pj版

下載 下載鏈接 解壓后 安裝 默認安裝 激活 輸入解壓后文件中的激活碼

Android Framework智能座艙面試題

目錄 1.談一談你對binder機制的理解?它為什么是Android中最重要的IPC通信方式?與其他IPC(Socket、共享內存)通信方式相比有哪些優勢? 2.如果你需要新提供的車載硬件(比如:一個座椅震動馬達)提供系統級別支持應該怎么做? 3.你了解Android與QNX共存方案的實現方式嗎?他們…

[CISCN2019 華北賽區 Day1 Web1]Dropbox

TRY 首先上傳和刪除文件抓包,可以發現upload.php和delete.php,只允許上傳gif png jpg后綴的文件。但是上傳的文件并沒有辦法訪問,不過可以下載,抓包發現下載的時候請求體是文件名,嘗試能不能通過路徑穿越獲取源碼&…

網站管理后臺

這里套用的模板為 楓雨在線 在寶塔面板左側選擇菜單欄文件 在根目錄下找到www文件夾,點擊進入wwwroot文件夾,隨后能看到域名文件夾,里面有一下初始內容,可以全部刪掉,留下 .user.ini 文件 點擊上傳,將…

一款免費易用且打造的全功能媒體播放器

zyfun[zyplayer]是一款免費易用且打造的全功能媒體播放器, 致力于提供流暢、高效的跨平臺娛樂體驗。 注意:播放源請自行查詢,或者聯系博主。 下載:軟件下載 在線體驗可暫時使用:https://tv.snowytime.cn 密碼為123456 🎉 功能亮點…