事务连接中断_一文搞懂分布式事务-CAP理论
互聯網系統中,分布式事務是無法避免的,目前多數解決方案是BASE理論,最終一致性,結合事務補償。
1.什么是CAP理論。
CAP理論,又稱為布魯爾定理,是加州大學伯克利分校的計算機科學家埃里克.布魯爾(Eric Brewer)在2000年的ACM PODC提出的猜想。2年后,麻省理工學院的Seth Gilbert和Nancy Lynch從理論上證明了CAP。Robert Greiner的發表的兩篇博文更容易理解,第一篇已經被自己標識為過時。
CAP是一致性(Consistence)、可用性(Availability)、分區容錯性(Partition tolerance)三個字母的首字母。
- 一致性(Consistence)對于指定節點,讀操作保證能返回最新的寫操作結果。注意,這里不是同一時刻都能看到相同的數據。因為事務過程中,系統處于一個不一致狀態,不同的節點的數據并不完全一致。比如,client無法讀取到未提交的事務的數據,也不會讀到事務中間寫入的數據。
- 可用性(Availability)非故障節點在合理的時間內返回合理的響應(不是錯誤和超時響應)。不能是錯誤或者是超時,結果是合理的,并不是一定是"正確"的結果。
- 分區容錯性(Partition tolerance)當出現網絡分區后,系統能夠繼續“履行職責”。發生分區現象,不管什么原因,可能是丟包、連接中斷、阻塞等,系統都應該能夠繼續“履行職責”。總結:網絡分區后,節點之間就出現隔離。要提高分區容忍性,就要把數據多分布在各個節點中,分區容忍性就提高了。各節點復制數據,就會帶來數據不一致的問題。數據分布的節點數越多,容忍性越高,復制數據帶來不一致的問題發生的概率就越高,總之,是需要一個權衡的問題。2. CAP為什么不能同時滿足?假如現在兩個節點A、B同時滿足CAP理論,C:AB節點數據同時更新。A:AB同時保證可用性。P:當出現網絡分區時,必須保證對外可用。現在假如出現網絡分區,A 肯定滿足不了,AB不能互相通信,得不到最新的數據。假如必須滿足C,就必須同時停止A和B,這時候A就滿足不了。總結:分布式系統中,必然選擇P,也是選擇AP或CP。如果不選擇P,當發生網絡分區時,為了滿足C,系統需要禁止寫入,當寫入請求時,系統會返回error,這和A沖突了。正常運行情況下,不存在CP和AP的選擇,可以同時滿足CA。CAP理論說只能選擇CP或者AP,前提是系統發生了分區現象。如果沒發生分區,我們沒必要放棄C和A。也就是說,設計架構時,既要考慮分區發生時選擇CP和AP,也要考慮分區沒有發生時如何保證CA。
2. CAP為什么不能同時滿足?
假如現在兩個節點A、B同時滿足CAP理論,C:AB節點數據同時更新。A:AB同時保證可用性。P:當出現網絡分區時,必須保證對外可用。
現在假如出現網絡分區,A 肯定滿足不了,AB不能互相通信,得不到最新的數據。假如必須滿足C,就必須同時停止A和B,這時候A就滿足不了。
總結:分布式系統中,必然選擇P,也是選擇AP或CP。如果不選擇P,當發生網絡分區時,為了滿足C,系統需要禁止寫入,當寫入請求時,系統會返回error,這和A沖突了。
正常運行情況下,不存在CP和AP的選擇,可以同時滿足CA。CAP理論說只能選擇CP或者AP,前提是系統發生了分區現象。如果沒發生分區,我們沒必要放棄C和A。也就是說,設計架構時,既要考慮分區發生時選擇CP和AP,也要考慮分區沒有發生時如何保證CA。
總結
以上是生活随笔為你收集整理的事务连接中断_一文搞懂分布式事务-CAP理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux-Ubuntu安装QQ 微信
- 下一篇: Java秒杀业务架构设计之路