盤點:關於分布式系統的經典基礎理論

2020-11-24 IT168

  【IT168 評論】分布式系統設計理念

  分布式系統架構的第一原則是不要分布!這句話看似矛盾實則揭露了分布式系統的很多特徵。

  分布式系統的目標與要素

  分布式系統的目標是提升系統的整體性能和吞吐量另外還要儘量保證分布式系統的容錯性(假如增加10臺伺服器才達到單機運行效果2倍左右的性能,那麼這個分布式系統就根本沒有存在的意義)。

  即使採用了分布式系統,我們也要盡力運用並發編程、高性能網絡框架等等手段提升單機上的程序性能。

  分布式系統設計兩大思路:中心化和去中心化

  1)中心化設計:

  兩個角色: 中心化的設計思想很簡單,分布式集群中的節點機器按照角色分工,大體上氛圍兩種角色: 「領導」 和 「幹活的」

  角色職責: 「領導」通常負責分發任務並監督「幹活的」,發現誰太閒了,就想發設法地給其安排新任務,確保沒有一個「幹活的」能夠偷懶,如果「領導」發現某個「幹活的」因為勞累過度而病倒了,則是不會考慮先嘗試「醫治」他的,而是一腳踢出去,然後把他的任務分給其他人。其中微服務架構 Kubernetes 就恰好採用了這一設計思路。

  中心化設計的問題:

  中心化的設計存在的最大問題是「領導」的安危問題,如果「領導」出了問題,則群龍無首,整個集群就奔潰了。但我們難以同時安排兩個「領導」以避免單點問題。

  中心化設計還存在另外一個潛在的問題,既「領導」的能力問題:可以領導10個人高效工作並不意味著可以領導100個人高效工作,所以如果系統設計和實現得不好,問題就會卡在「領導」身上。

  領導安危問題的解決辦法: 大多數中心化系統都採用了主備兩個「領導」的設計方案,可以是熱備或者冷備,也可以是自動切換或者手動切換,而且越來越多的新系統都開始具備自動選舉切換「領導」的能力,以提升系統的可用性。

  2)去中心化設計

  終生地位平等: 在去中心化的設計裡,通常沒有「領導」和「幹活的」這兩種角色的區分,大家的角色都是一樣的,地位是平等的,全球網際網路就是一個典型的去中心化的分布式系統,聯網的任意節點設備宕機,都只會影響很小範圍的功能。

  「去中心化」不是不要中心,而是由節點來自由選擇中心。 (集群的成員會自發的舉行「會議」選舉新的「領導」主持工作。最典型的案例就是ZooKeeper及Go語言實現的Etcd)

  去中心化設計的問題: 去中心化設計裡最難解決的一個問題是 「腦裂」問題 ,這種情況的發聲概率很低,但影響很大。腦裂問題,這種情況的發生概率很低,但影響很大。腦裂指一個集群猶豫網絡的故障,被分為至少兩個彼此無法通信的單獨集群,此時如果兩個集群都各自工作,則可能會產生眼中的數據衝突何錯誤。一般的設計思路是,當集群半段發聲了腦裂問題是,規模較小的集群就「自殺」或者拒絕服務。

  分布式與集群的區別是什麼?

  分布式: 一個業務分拆多個子業務,部署在不同的伺服器上

  集群: 同一個業務,部署在多個伺服器上。比如之前做電商網站搭的redis集群以及solr集群都是屬於將redis伺服器提供的緩存服務以及solr伺服器提供的搜索服務部署在多個伺服器上以提高系統性能、並發量解決海量存儲問題。

  CAP定理

  在理論計算機科學中,CAP定理(CAP theorem),又被稱作布魯爾定理(Brewer's theorem),它指出對於一個分布式計算系統來說,不可能同時滿足以下三點:

  一致性(Consistence) :所有節點訪問同一份最新的數據副本

  可用性(Availability):每次請求都能獲取到非錯的響應——但是不保證獲取的數據為最新數據

  分區容錯性(Partition tolerance) : 分布式系統在遇到某節點或網絡分區故障的時候,仍然能夠對外提供滿足一致性和可用性的服務。

  CAP僅適用於原子讀寫的NOSQL場景中,並不適合資料庫系統。

  注意:不是所謂的3選2(不要被網上大多數文章誤導了):

  現實生活中,大部分人解釋這一定律時,常常簡單的表述為:「一致性、可用性、分區容忍性三者你只能同時達到其中兩個,不可能同時達到」。實際上這是一個非常具有誤導性質的說法,而且在CAP理論誕生12年之後,CAP之父也在2012年重寫了之前的論文。

  當發生網絡分區的時候,如果我們要繼續服務,那麼強一致性和可用性只能2選1。也就是說當網絡分區之後P是前提,決定了P之後才有C和A的選擇。也就是說分區容錯性(Partition tolerance)我們是必須要實現的。

  我在網上找了很多文章想看一下有沒有文章提到這個不是所謂的3選2,用百度半天沒找到了一篇,用谷歌搜索找到一篇比較不錯的,如果想深入學習一下CAP就看這篇文章把,我這裡就不多BB了:《分布式系統之CAP理論》 : http://www.cnblogs.com/hxsyl/p/4381980.html

  BASE理論

  BASE理論由eBay架構師Dan Pritchett提出,在2008年上被分表為論文,並且eBay給出了他們在實踐中總結的基於BASE理論的一套新的分布式事務解決方案。

  BASE 是 Basically Available(基本可用) 、Soft-state(軟狀態) 和 Eventually Consistent(最終一致性) 三個短語的縮寫。BASE理論是對CAP中一致性和可用性權衡的結果,其來源於對大規模網際網路系統分布式實踐的總結,是基於CAP定理逐步演化而來的,它大大降低了我們對系統的要求。

  BASE理論的核心思想

  即使無法做到強一致性,但每個應用都可以根據自身業務特點,採用適當的方式來使系統達到最終一致性。也就是犧牲數據的一致性來滿足系統的高可用性,系統中一部分數據不可用或者不一致時,仍需要保持系統整體「主要可用」。

  針對資料庫領域,BASE思想的主要實現是對業務數據進行拆分,讓不同的數據分布在不同的機器上,以提升系統的可用性,當前主要有以下兩種做法:

  按功能劃分資料庫

  分片(如開源的Mycat、Amoeba等)。

  由於拆分後會涉及分布式事務問題,所以eBay在該BASE論文中提到了如何用最終一致性的思路來實現高性能的分布式事務。

  BASE理論三要素

  1. 基本可用

  基本可用是指分布式系統在出現不可預知故障的時候,允許損失部分可用性。但是,這絕不等價於系統不可用。

  比如:

  響應時間上的損失:正常情況下,一個在線搜尋引擎需要在0.5秒之內返回給用戶相應的查詢結果,但由於出現故障,查詢結果的響應時間增加了1~2秒

  系統功能上的損失:正常情況下,在一個電子商務網站上進行購物的時候,消費者幾乎能夠順利完成每一筆訂單,但是在一些節日大促購物高峰的時候,由於消費者的購物行為激增,為了保護購物系統的穩定性,部分消費者可能會被引導到一個降級頁面

  2. 軟狀態

  軟狀態指允許系統中的數據存在中間狀態,並認為該中間狀態的存在不會影響系統的整體可用性,即允許系統在不同節點的數據副本之間進行數據同步的過程存在延時

  3. 最終一致性

  最終一致性強調的是系統中所有的數據副本,在經過一段時間的同步後,最終能夠達到一個一致的狀態。因此,最終一致性的本質是需要系統保證最終數據能夠達到一致,而不需要實時保證系統數據的強一致性。

  總結

  本文主要是簡單的介紹了三個常見的概念: 分布式系統設計理念 、 CAP定理 、 BASE理論 ,關於分布式系統的還有很多很多東西。



相關焦點

  • 聊聊分布式系統的數據一致性
    進入公司以來,先後參與了分布式資料庫、分布式文件系統、NOS對象存儲雲服務等多個大型存儲系統的開發工作。保證各個數據副本間的一致性,是評價存儲系統優劣的核心指標,也是貫穿整個開發過程中的討論重點。以前都是碰到問題見招拆招,看一些分布式系統中偏理論的研究時也是覺得雲裡霧裡,所以也想趁這次機會好好梳理一下,整理出的內容也希望能夠對大家以後的開發工作起到幫助。數據多副本間的一致性存儲系統是千差萬別的,可以拿來存放視頻這種動輒幾個G的大文件,也可以存放幾KB的KV鍵值對數據,還可能是MySQL這種關係型的資料庫。
  • 深入解析:分布式系統的事務處理經典問題及模型
    Paxos 算法解決的問題是在一個可能發生上述異常的分布式系統中如何就某個值達成一致,保證不論發生以上任何異常,都不會破壞決議的一致性。一個典型的場景是,在一個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性算法」以保證每個節點看到的指令一致。
  • Apache分布式日誌系統:高通量、低延遲
    網絡設備、系統及服務程序等,在運作時都會產生一個叫log的事件記錄;每一行日誌都記載著日期、時間、使用者及動作等相關操作的描述。它存在於大家每天的工作中,是一組只追加,嚴格有序的記錄序列。日誌是一種很有效的數據結構,可用來解決很多分布式系統的問題。
  • 馬克思主義基礎理論及其學科建設研究
    因此,我們不能簡單地以學院化的研究方式去理解和闡釋馬克思主義及其基礎理論,必須沿著馬克思主義創始人所承擔的歷史使命及其開闢的理論道路去研究馬克思主義。從這個指導思想出發,在本項目成果中,我們把關於馬克思主義基礎理論的研究,集中在關於馬克思的「兩大發現」的研究。
  • IPFS紅岸智能周雪松:分布式文件系統
    紅岸智能 周雪松新系列知識點針對這幾種不同的數據類型,分布式存儲系統適合處理不同的類型的數據,將分布式存儲系統劃分為以下幾種:分布式文件系統:>處理非結構化的數據,將非結構化的數據都當做文件形式的存儲對象,處理對象是文件,形成一個分布式文件系統。
  • 分布式直流電阻測試系統,解決直流系統接地故障
    發電廠和變電站的直流系統架構複雜,直流系統接地故障經常發生,對於運行環境差,運行時間長的設備,發生故障的機會更多,而且往往會同時出現幾個接地點,查找起來顯得非常困難。分布式直流接地檢測系統可解決這一問題。作者對分布直流電阻測試系統的應用進行了深入分析。
  • 聯方雲天曾旭東:分布式電源系統的深耕者
    曾旭東 聯方雲天創始人及執行長分布式電源系統的優勢聯方雲天2012年在北京註冊,專注於新一代分布式電源系統,目前以軟體定義能源系統為主軸,同時基於微電網技術的能源虛擬化,發展出一系列的數據中心基礎設施,其中新一代數據中心分布式電源系統是聯方雲天完全擁有自主智慧財產權的創新性產品。
  • 分布式光纖測溫系統在電力系統中的應用
    一、引言  隨著我國經濟的發展,電力系統正在朝著超高壓、大電網、大容量、自動化的方向發展,一旦發生事故便會對國民經濟造成巨大損失。如何對正在運行的電力設備進行在線監測並進行安全預測和溫度變化趨勢分析?如何通過實時數據對設備質量、運行環境、運行方式、設備老化、負荷不平衡等進行科學分析?
  • 分布式電源系統DPS的特點、優缺點及前景分析
    分布式電源系統DPS的特點DPS分布式電源產品是為機房伺服器等設備提供不間斷供電系統的轉換電源設備,兩路市電輸入,內置大容量電池組,確保為伺服器提供不間斷供電。DPS分布式電源系統不再使用統一的直流電源給系統供電,而是對系統中不同設備、不同電路板、甚至對同一電路板上不同的電路採用不同的電源供電。系統中低頻電路和高頻電路,小電流負載和大負載供電線路完全分離。
  • 分布式電源系統的的供電方式應用及發展趨勢
    分布式電源系統的的供電方式應用及發展趨勢。近年來,我國各地分布式電源系統發展迅速。分布式電源的出現,是對傳統UPS供電技術的探索和創新,能夠徹底解決傳統模式建築中電源容量不足、電源利用率低,改造困難等問題,最大程度降低數據中心的建設成本和運營成本。
  • 分布式發電技術及和它對電力系統的影響
    微型燃氣輪機的特點是體積小、重量輕、發電效率高、汙染小、運行維護簡單,它是目前最成熟,最具有商業競爭力的分布式電源之一。3分布式發電對電力系統的影響由於分布式發電日益與大電網聯合運行,給現代電力系統運行與控制帶來了巨大的影響。
  • 正在使用區塊鏈分布式分類帳技術的六大社交網絡盤點
    打開APP 正在使用區塊鏈分布式分類帳技術的六大社交網絡盤點 工程師周亮 發表於 2018-08-31 14:30:00 就擾亂社會媒體來說,各種項目聲稱區塊鏈將有助於一勞永逸地擾亂這些集中的生態系統。下列按字母順序排列的公司正為此目的使用分布式分類帳。 1.Indorse 似乎很少有人知道Indorse項目,儘管它試圖使用區塊鏈技術提供與LinkedIn類似的功能。它基於以太坊技術,以客觀的方式驗證用戶的技能。
  • 中電觀察:關於發展分布式發電的幾點思考
    朱明 方竹   一、分布式發電發展基本情況  (一)分布式發電的定義根據國家發展改革委2013年發布的《分布式發電管理暫行辦法》,分布式發電是指在所在場地或附近建設安裝、運行方式以用戶端自發自用為主、多餘電量上網,且在配電網系統平衡調節為特徵的發電設施或有電力輸出的能量綜合梯級利用多聯供設施
  • 儲能技術融合分布式可再生能源的現狀及發展趨勢
    中國電力科學研究院的研究人員李建林、馬會萌、惠東指出,分布式發電能夠充分利用可再生能源實現節能減排,是集中式發電的有效補充,利用儲能系統的雙向功率能力和靈活調節特性可以提高系統對分布式電源的接納能力,具有廣闊的應用前景。
  • 看完這篇,保證你真正明白:分布式系統的CAP理論、CAP如何三選二
    CAP 理論是分布式設計中最基礎最重要的理論,不懂它,你可能連分析一套分布式系統的核心設計理念都做不到。關於 CAP 為何你讀了那麼多文章都還是搞不明白呢?因為 CAP 理論來自學術界,而解讀 CAP 理論的人嘗試用工程師的方式去闡述它,這本身就有了問題。CAP 本身基於狀態,基於瞬態,是一個描述性的理論,它並不解決工程問題。
  • 分布式光纖測溫系統原理及傳感過程
    三、分布式光纖測溫系統的傳感過程  如圖1所示,分布式光纖測溫系統的傳感過程為:計算機控制同步脈衝發生器產生具有一定重複頻率的脈衝,這個脈衝一方面調製脈衝雷射器,使之產生一系列大功率光脈衝,另一方面向高速數據採集卡提供同步脈衝,進入數據採集狀態。
  • 分布式環形飛機配電系統設計方案
    飛機配電系統是飛機供電系統的一個重要組成部分,由電網、配電裝置和電網保護裝置組成,其功能是實現電能的傳輸、分配和管理。 電氣多路傳輸系統是一種計算機控制的分布式配電系統,它由數據處理機、總線、發電機控制裝置、匯流條管理器、負載管理中心、遠置終端、固態功率控制器、控制顯示負載裝置等部件組成。
  • 阿里開源otter:分布式資料庫同步系統
    本周一(8月19日),阿里巴巴宣布開源分布式資料庫同步系統otter。負責otter項目的阿里巴巴技術專家七鋒(@agapple0002)介紹,otter是異地雙A機房的資料庫同步系統,解決長距離機房同步、雙A的數據一致性問題。  otter的誕生是由異地資料庫同步需求決定的。
  • 華為分布式技術構建美好家庭生態系統
    其實這樣的「超級設備」早就已經出現在我們的生活中,只是並不是以一款設備的形式存在,或者可以這樣理解,這個能為生活提供「加速」服務的「超級設備」,是一個全能系統——集合1(手機)+8(車機、音箱、耳機、手錶/手環、平板、大屏、PC、AR/VR)+N(泛IOT設備)打造的全場景體驗。
  • 亂花漸欲迷人眼:淺談關於分布式存儲的五大「謊言」
    要說近幾年存儲這條街最靚的仔,莫過於分布式存儲了。  自誕生以來,分布式存儲就被視為存儲的未來,被萬眾期待。然而分布式存儲起步於寒門,最早應用於網際網路日誌、企業備份歸檔、開發測試等場景,追求極致成本,性能和可靠性卻不敢恭維。