你應(yīng)該知道的首字符縮寫

ACID

原子性(Atomicity)
整個事務(wù)中的所有操作,要么全部完成,要么全部不完成,不可能停滯在中間某個環(huán)節(jié)。事務(wù)在執(zhí)行過程中發(fā)生錯誤,會被回滾到事務(wù)開始前的狀態(tài),就像這個事務(wù)從來沒有執(zhí)行過一樣。
一致性(Consistency)
一個事務(wù)可以封裝狀態(tài)改變(除非它是一個只讀的)。事務(wù)必須保證系統(tǒng)始終處于一致的狀態(tài),不管在任何給定的時間里,并發(fā)事務(wù)有多少。
隔離性(Isolation)
在并發(fā)環(huán)境中,并發(fā)的事務(wù)是相互隔離的,一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。
持久性(Durability)
在事務(wù)完成以后,該事務(wù)對數(shù)據(jù)所作的更改便持久的保存,并不會被回滾。

CAP

任何一個分布式系統(tǒng)都無法同時滿足一致性(Consistency)、可用性(Availability)和分區(qū)容錯性(Partition tolerance),最多只能同時滿足兩項。


CAP

BASE

BASE理論是Basically Available(基本可用),Soft State(軟狀態(tài))和Eventually Consistent(最終一致性)三個短語的縮寫。
其核心思想是:

既是無法做到強(qiáng)一致性(Strong consistency),但每個應(yīng)用都可以根據(jù)自身的業(yè)務(wù)特點,采用適當(dāng)?shù)姆绞絹硎瓜到y(tǒng)達(dá)到最終一致性(Eventual consistency)。

CAS

Compare and Swap,即比較再交換。
CAS是一種無鎖算法,CAS有3個操作數(shù),內(nèi)存值V,舊的預(yù)期值A(chǔ),要修改的新值B。當(dāng)且僅當(dāng)預(yù)期值A(chǔ)和內(nèi)存值V相同時,將內(nèi)存值V修改為B,否則什么都不做。

ABA

因為CAS需要在操作值的時候檢查下值有沒有發(fā)生變化,如果沒有發(fā)生變化則更新,但是如果一個值原來是A,變成了B,又變成了A,那么使用CAS進(jìn)行檢查時會發(fā)現(xiàn)它的值沒有發(fā)生變化,但是實際上卻變化了。ABA問題的解決思路就是使用版本號。在變量前面追加上版本號,每次變量更新的時候把版本號加一,那么A-B-A 就會變成1A-2B-3A。
從Java1.5開始JDK的atomic包里提供了一個類AtomicStampedReference來解決ABA問題。這個類的compareAndSet方法作用是首先檢查當(dāng)前引用是否等于預(yù)期引用,并且當(dāng)前標(biāo)志是否等于預(yù)期標(biāo)志,如果全部相等,則以原子方式將該引用和該標(biāo)志的值設(shè)置為給定的更新值。

Saga

1987年普林斯頓大學(xué)的Hector Garcia-Molina和Kenneth Salem發(fā)表了一篇Paper Sagas,講述的是如何處理long lived transaction(長活事務(wù))。Saga是一個長活事務(wù)可被分解成可以交錯運行的子事務(wù)集合。其中每個子事務(wù)都是一個保持?jǐn)?shù)據(jù)庫一致性的真實事務(wù)。

TCC

Try-Confirm-Cancel
Try階段:
完成所有業(yè)務(wù)檢查(一致性),預(yù)留業(yè)務(wù)資源(準(zhǔn)隔離性)
回顧上面航班預(yù)定案例的階段1,機(jī)票就是業(yè)務(wù)資源,所有的資源提供者(航空公司)預(yù)留都成功,try階段才算陳宮
Confirm階段:
確認(rèn)執(zhí)行業(yè)務(wù)操作,不做任何業(yè)務(wù)檢查, 只使用Try階段預(yù)留的業(yè)務(wù)資源。回顧上面航班預(yù)定案例的階段2,美團(tuán)APP確認(rèn)兩個航空公司機(jī)票都預(yù)留成功,因此向兩個航空公司分別發(fā)送確認(rèn)購買的請求。
Cancel階段:
取消Try階段預(yù)留的業(yè)務(wù)資源?;仡櫳厦婧桨囝A(yù)定案例的階段2,如果某個業(yè)務(wù)方的業(yè)務(wù)資源沒有預(yù)留成功,則取消所有業(yè)務(wù)資源預(yù)留請求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容