五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

聊一聊數(shù)據(jù)庫事務(wù)

2021-08-04 23:00 作者:做架構(gòu)師不做框架師  | 我要投稿

事務(wù)(Transaction)是由一系列對系統(tǒng)中數(shù)據(jù)進(jìn)行訪問與更新的操作所組成的一個(gè)程序執(zhí)行邏輯單元(Unit),狹義上的事務(wù)特指數(shù)據(jù)庫事務(wù),本文講的主要是數(shù)據(jù)庫事務(wù)。

ACID特性

事務(wù)具有四個(gè)特征,分別是原子性(Atomicity)、一致性(Consistency)、隔離性(lsolation)和持久性(Durability),簡稱為事務(wù)的ACID特性。

  • 原子性:指事務(wù)是一個(gè)整體來執(zhí)行,要么全部執(zhí)行成功,要么全部執(zhí)行失敗。一損俱損,一榮俱榮。

  • 一致性:一個(gè)事物在執(zhí)行之前和執(zhí)行之后,數(shù)據(jù)節(jié)點(diǎn)都必須處于一致的狀態(tài)。

  • 隔離性:在并發(fā)情況下,并發(fā)的事務(wù)是相互隔離的,一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)所干擾。

  • 持久性:把已提交的事物數(shù)據(jù)狀態(tài)永久地保存下來,數(shù)據(jù)節(jié)點(diǎn)主要就是干這個(gè)的。

幾乎所有的成熟的關(guān)系型數(shù)據(jù)庫都提供了對本地事務(wù)的原生支持。但是現(xiàn)在的互聯(lián)網(wǎng)公司都在擁抱微服務(wù),在這種環(huán)境下,越來越多的應(yīng)用場景要求多個(gè)數(shù)據(jù)節(jié)點(diǎn)能在同一個(gè)事務(wù)當(dāng)中,所以就出現(xiàn)了與分布式應(yīng)用環(huán)境對應(yīng)的分布式事務(wù)。

關(guān)系型數(shù)據(jù)庫雖然對本地事務(wù)提供了ACID原生支持。但在分布式的場景下,它卻成為系統(tǒng)性能的桎梏。如何讓數(shù)據(jù)節(jié)點(diǎn)在分布式場景下滿足事務(wù)特性或找尋相應(yīng)的替代方案,這就是分布式事務(wù)的要做到的。

本地事務(wù)

在每一個(gè)數(shù)據(jù)節(jié)點(diǎn)中,事務(wù)僅限于對他們自己的資源控制,與其他數(shù)據(jù)節(jié)點(diǎn)沒有協(xié)調(diào)以及通信的能力,也并不互相知曉其他數(shù)據(jù)節(jié)點(diǎn)事務(wù)的是否成功。

兩階段提交

XA協(xié)議最早的分布式事務(wù)模型是由 X/Open 國際聯(lián)盟提出的 X/Open Dirtributed Transaction Processing (DTP) 模型,簡稱 XA 協(xié)議。

基于XA協(xié)議實(shí)現(xiàn)的分布式事務(wù)對業(yè)務(wù)侵入很小。它最大的優(yōu)勢就是對使用方透明,用戶可以像使用本地事務(wù)一樣使用基于XA協(xié)議的分布式事務(wù)。XA協(xié)議能夠嚴(yán)格保障事務(wù) ACID 特性。

嚴(yán)格保障事務(wù) ACID 特性是一把雙刃劍。事務(wù)執(zhí)行在過程中需要將所需資源全部鎖定,它更加適用于執(zhí)行時(shí)間確定的短事務(wù)。

對于長事務(wù)來說,整個(gè)事務(wù)進(jìn)行期間對數(shù)據(jù)的獨(dú)占,將導(dǎo)致對熱點(diǎn)數(shù)據(jù)依賴的業(yè)務(wù)系統(tǒng)并發(fā)性能衰退明顯。因此,在高并發(fā)的性能至上的場景中,基于XA協(xié)議的分布式事務(wù)并不是最佳選擇。

軟事務(wù)

如果把實(shí)現(xiàn)了 ACID 的特性的事務(wù)稱為硬事務(wù),那么基于 BASE 事務(wù)要素的事務(wù)則稱為軟事務(wù)。 BASE是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個(gè)短語的簡寫。

  • 基本可用:是指分布式系統(tǒng)在出現(xiàn)不可預(yù)知的故障時(shí),允許損失部分可用性-注意,這絕不等價(jià)于系統(tǒng)不可用。

  • 軟狀態(tài):是指允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并認(rèn)為該中間狀態(tài)的存在不會影響系統(tǒng)的整體可用性,即允許系統(tǒng)在不同節(jié)點(diǎn)的數(shù)據(jù)副本之間進(jìn)行數(shù)據(jù)同步的過程存在延時(shí)。

  • 最終一致性:強(qiáng)調(diào)的是系統(tǒng)中所有的數(shù)據(jù)副本,在經(jīng)過一段時(shí)間的同步后,最終能夠達(dá)到一個(gè)一致的狀態(tài)。

在 ACID 事務(wù)中對隔離性的要求很高,在事務(wù)執(zhí)行過程中,必須將所有的資源鎖定。軟事務(wù)的則是通過業(yè)務(wù)邏輯將互斥鎖操作從資源層面上移至業(yè)務(wù)層面。通過放寬對強(qiáng)一致性要求,來換取系統(tǒng)吞吐量的提升。

基于 ACID 的強(qiáng)一致性事務(wù)和基于 BASE 的最終一致性事務(wù)都不是銀彈,只有在最適合的場景中才能發(fā)揮它們的最大長處??赏ㄟ^下表詳細(xì)對比它們之間的區(qū)別,以幫助我們進(jìn)行技術(shù)選型。

要思考

由于系統(tǒng)的場景不同,需要我們能夠合理的在性能與功能之間權(quán)衡各種分布式事務(wù)。

基于 ACID 的事務(wù)與基于 Base 的事務(wù)并不相同,所以在開發(fā)的設(shè)計(jì)階段,我們就需要考慮該用哪種事務(wù)來處理。

基于ACID的事物使用相對來說簡單些,但是無法應(yīng)對高并發(fā)或復(fù)雜業(yè)務(wù)的長事務(wù)場景;

基于Base的事務(wù)則需要我們對業(yè)務(wù)代碼進(jìn)行改造,需要考慮資源的鎖定和補(bǔ)償機(jī)制等等。業(yè)界比較流行的就是Seata。

寫在最后

好兄弟可以點(diǎn)贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。


聊一聊數(shù)據(jù)庫事務(wù)的評論 (共 條)

分享到微博請遵守國家法律
怀化市| 承德市| 梓潼县| 浦县| 阳山县| 荔浦县| 中方县| 介休市| 尉氏县| 大渡口区| 景谷| 金昌市| 永川市| 宁晋县| 天津市| 平阴县| 新野县| 石家庄市| 从江县| 缙云县| 杭锦旗| 阿勒泰市| 南召县| 阳江市| 双辽市| 师宗县| 新巴尔虎右旗| 西藏| 漳州市| 禄丰县| 武乡县| 鹤峰县| 买车| 句容市| 综艺| 遂昌县| 运城市| 白银市| 新泰市| 康定县| 日喀则市|