事務,acid,cap,paxos隨筆

2022-04-13 08:38:54 字數 1369 閱讀 9478

事務acid四個特性:

a:原子性(atomicity)

c:一致性(consistency)

i:隔離性(isolation)

d:永續性(durability)

原子性:語句要麼全執行,要麼全不執行,是事務最核心的特性;基於redo log undo log實現。

永續性:保證事務提交後不會因為宕機等原因導致資料丟失;基於redo log實現。

隔離性:保證事務執行盡可能不受其他事務影響;通過鎖實現,加鎖粒度又受隔離級別影響。隔離級別越高鎖粒度越大,併發效能越差。innodb預設的隔離級別是rr,rr的實現主要基於鎖、mvcc和next-key lock演算法。

一致性:事務追求的最終目標,原子性、永續性和隔離性,都是為了保證資料庫狀態的一致性。此外,除了資料庫層面的保障,一致性的實現也需要應用層面進行保障。

cap定理是分布式領域非常著名的定理:

c:一致性在分布式系統中的所有資料副本,在同一時刻是否同樣的值。

a:可用性在集群中一部分節點故障後,集群整體是否還能響應客戶端的讀寫請求。

p:分割槽容錯性能容忍網路分割槽,在網路斷開的情況下,被分隔的節點仍能正常對外提供服務。

cap理論描述當前不可靠的物理與軟體環境下,分布式系統不能同時實現嚴格的線性一致性與嚴格的可用性。

分布式系統,無法捨棄p性質,那麼就只能在一致性和可用性上做平衡。

acid 與 cap 中的一致性的區別

acid的一致性是邏輯層面資料完整性,而cap的一致性是分布式多伺服器之間複製資料實現多個副本同一時刻資料一致。

paxos、raft分布式一致性演算法

既然cap理論在分布式系統中一致性和可用性只能選乙個。那paxos、raft等分布式一致性演算法是如何做到在保證一定的可用性的同時,對外提供強一致性呢。

首先,由於分割槽很少發生,那麼在系統不存在分割槽的情況下沒什麼理由犧牲c或a。

其次,c與a之間的取捨可以在同一系統內以非常細小的粒度反**生,而每一次的決策可能因為具體的操作,乃至因為牽涉到特定的資料或使用者而有所不同。

最後,這三種性質都可以在程度上衡量,並不是非黑即白的有或無。可用性顯然是在0%到100%之間連續變化的,一致性分很多級別,連分割槽也可以細分為不同含義,如系統內的不同部分對於是否存在分割槽可以有不一樣的認知。

所以一致性和可用性並不是水火不容,非此即彼的。paxos、raft等分布式一致性演算法就是在一致性和可用性之間做到了很好的平衡的見證。

拷貝

Linux Vim 隨用隨學隨記錄

一般模式 複製 yy 游標向上 k,10k 向上10行 游標向下 j,10j 向下10行 游標向左 h,5h 向前5行 游標向右 l,5l 向後5行 向下翻半頁 ctrl d ctrl down 向上翻半頁 ctrl u ctrl up 整頁上翻 ctrl d ctrl down 向上翻半頁 ctr...

RandomStringUtils生成隨機數

org.apache.commons.lang.randomstringutils 產生5位長度的隨機字串,中文環境下是亂碼 randomstringutils.random 5 使用指定的字元生成5位長度的隨機字串 randomstringutils.random 5,new char 生成指定長...

RandomStringUtils生成隨機數

org.apache.commons.lang.randomstringutils 產生5位長度的隨機字串,中文環境下是亂碼 randomstringutils.random 5 使用指定的字元生成5位長度的隨機字串 randomstringutils.random 5,new char 生成指定長...