分布式理論筆記(一)

2022-09-06 04:42:09 字數 2758 閱讀 8549

分布式系統是乙個硬體或軟體元件分布在不同的網路計算機上,彼此之間過訊息傳遞進行通訊和協調的系統

tip:分布式和集群的區別

集群:多個人在一起做同樣的事

分布式:多個人在一起做不同的事

分布式系統的特點
分布性、對等性、併發性、缺乏全域性時鐘、故障總會發生

分布式系統的演變

階段一:單應用架構

把所有軟體和應用都部署在一台機器上,這樣就完成乙個簡單系統的搭建,這個時候講究的是效率。

階段二:應用伺服器與資料庫分離

增加機器的主要目的是將web伺服器和資料庫伺服器拆分,這樣不僅提高了單機的負載能力,也提高了容災能力。

階段三:應用伺服器集群

通過應用伺服器集群將使用者請求分流到各個伺服器中,從而繼續增加負載能力。此時多台應用伺服器之間沒有直接的互動,他們都是依賴資料庫各自對外提供服務。

階段四:應用伺服器負載均衡

解決了請求的負載均衡問題,可以採用nginx進行輪詢或 ip_hash或設定權重進行請求。

階段五:資料庫讀寫分離

資料庫請求分別負載到兩台資料庫伺服器上,那麼一定會造成資料庫不統一的問題,所以我們一般優先考慮讀寫分離的方式。

階段六:新增索引和搜尋引擎緩解讀庫壓力

使用搜尋引擎能夠大大提高我們的查詢速度,但是同時也會帶來一些附加的問題,比如維護索引的構建

階段七:新增快取機制緩解資料庫的壓力

對於一些熱點資料,沒必要每次都從資料庫讀取,我們可以使用快取技術,比如memcache、redis來作為我們應用層的快取

階段八:資料庫水平/垂直拆分

水平拆分:把資料庫中不同業務資料拆分到不同的資料庫(秒殺業務有自己的一套資料表,普通業務有自己的資料表)

垂直拆分:把同乙個表中的資料拆分到兩個甚至多個的資料庫中,水平拆分的原因是某些業務資料量已經達到了單個資料庫

的瓶頸,這時可以採取將表拆分到多個資料庫中。

階段九:應用拆分

將應用拆分,按照領域模型將使用者、商品、交易拆分成多個子系統。(可能會有一些相同**,如使用者操作)

階段十:服務化

相同的操作一定是要抽象出來,通過走服務化路線的方式來解決。

演變過程學習參考

分布式系統的問題

通訊異常:分布式系統無法順利進行一次網路通訊

網路分割槽:分布式系統出現區域性小集群

節點故障:組成分布式的伺服器節點出現宕機或「僵死」現象,每個節點都有可能發生

三態:分布式系統每一次請求與響應存在特有的「三態」概念,即成功、失敗和超時。

一致性

分布式一致性,指的是資料在多份副本中儲存時,各副本的資料是一致的。因為同步的過程會有延遲。

一致性分類:

強一致性(系統寫入什麼,讀出來的也會是什麼,使用者體驗好,單強一致性很難實現)

弱一致性(系統寫入成功後,不承諾可以讀到寫入的值,也不承諾多久資料能達到一致)

單調讀一致性:本次讀到的資料不能比上次讀到的舊。(使用hash演算法同一使用者永遠對映到同一機器上)

因果一致性:如果節點a在更新資料後通知節點b,節點b之後對該資料的訪問和修改都基於a更新後的值,同時,和a節點無因果關係的節點c的資料訪問沒有這樣的限制。

最終一致性:不考慮所有中間狀態的影響,只保證當沒有新的更新之後,經過一段時間後,系統內所所有資料是正確的。最長車高度上保證系統併發能力。

cap定理

cap定理

2000 年7月的時候,加州大學伯克利分校的eric brewer 教授提出了 cap 猜想,2年後,被 來自於麻省理工的seth gilbert 和 nancy lynch 從理論上證明了猜想的可能性,從此,cap 定理正式在學術上成為了分布式計算領域的公認定理。並深深的影響了分布式計算的發展。

這三個基本需求,最多只能同時滿足其中2個

選項

描述c一致性

(consistency)

分布式系統當中的一致性指的是所有節點的資料一致,或者說是所有副本的資料一致

a可用性

(**ailability)

reads and writes always succeed. 也就是說系統一直可用,而且服務一直保持正常

p分割槽容錯性

(partition tolerance)

系統在遇到一些節點或者網路分割槽故障的時候,仍然能夠提供滿足一致性和可用性的服務

分布式理論 分布式事務

資料庫事務 事務的基本特性 事務有4個非常重要的特性,即我們常說的 acid atomicity 原子性 是說事務是乙個不可分割的整體,所有操作要麼全做,要麼全不做 只要事務中有乙個操作出錯,回滾到事務開始前的狀態的話,那麼之前已經執行的所有操作都是無效的,都應該回滾到開始前的狀態。consiste...

分布式理論

拜占庭將軍問題 byzantine failures 是由萊斯利 蘭伯特提出的點對點通訊中的基本問題。含義是在存在訊息丟失的不可靠通道上試圖通過訊息傳遞的方式達到一致性是不可能的。因此對一致性的研究一般假設通道是可靠的,或不存在本問題。萊斯利 蘭波特在其 中描述了如下問題 一組拜占庭將軍分別各率領一...

分布式理論 BASE理論

根據cap定理,我們在分布式系統最多只能在 一致性 可用性 分割槽容錯性 中三選二。那能不能解決3選2的問題呢?想要解決3選2的問題,首先需要思考分割槽是百分之百出現的嗎?如果不出現分割槽,那麼就能夠同時滿足cap。如果出現了分割槽,可以根據策略進行調整。比如c不必使用那麼強的一致性,可以先將資料存...