偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

分布式事務(wù)淺析及簡(jiǎn)單實(shí)現(xiàn)

開(kāi)發(fā) 開(kāi)發(fā)工具 前端 分布式
在分布式系統(tǒng)中,為了保證數(shù)據(jù)的高可用,通常,我們會(huì)將數(shù)據(jù)保留多個(gè)副本(replica),這些副本會(huì)放置在不同的物理的機(jī)器上。為了對(duì)用戶(hù)提供正確的 CRUD 等語(yǔ)義,我們需要保證這些放置在不同物理機(jī)器上的副本是一致的。分布式事務(wù)在現(xiàn)在遍地都是分布式部署的系統(tǒng)中幾乎是必要的。

 在分布式系統(tǒng)中,為了保證數(shù)據(jù)的高可用,通常,我們會(huì)將數(shù)據(jù)保留多個(gè)副本(replica),這些副本會(huì)放置在不同的物理的機(jī)器上。為了對(duì)用戶(hù)提供正確的 CRUD 等語(yǔ)義,我們需要保證這些放置在不同物理機(jī)器上的副本是一致的。分布式事務(wù)在現(xiàn)在遍地都是分布式部署的系統(tǒng)中幾乎是必要的。

[[320427]]

我們先聊一下啥是事務(wù)?

分布式事務(wù)、事務(wù)隔離級(jí)別、ACID我相信大家這些東西都耳熟能詳了,那什么是事務(wù)呢?

概念:

一般是指要做的或所做的事情。

指作為單個(gè)邏輯工作單元執(zhí)行的一系列操作,要么全部執(zhí)行,要么全部不執(zhí)行。

簡(jiǎn)單的說(shuō),事務(wù)就是并發(fā)控制的單位,是用戶(hù)定義的一個(gè)操作序列。

特性:

事務(wù)是恢復(fù)和并發(fā)控制的基本單位。

事務(wù)應(yīng)該具有4個(gè)屬性:原子性、一致性、隔離性、持久性。這四個(gè)屬性通常稱(chēng)為ACID特性。

  • 原子性(atomicity):一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的操作要么都做,要么都不做。
  • 一致性(consistency):事務(wù)必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
  • 隔離性(isolation):一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。
  • 持久性(durability):持久性也稱(chēng)永久性(permanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其有任何影響。

那什么是分布式事務(wù)呢?

這里舉個(gè)簡(jiǎn)單的例子:大家可以想一下,你下單流程可能涉及到10多個(gè)環(huán)節(jié),你下單付錢(qián)都成功了,但是你優(yōu)惠券扣減失敗了,積分新增失敗了,前者公司會(huì)被薅羊毛,后者用戶(hù)會(huì)不開(kāi)心,

但是這些都在不同的服務(wù)怎么保證大家都成功呢? 分布式事務(wù)。

分布式事務(wù)是指會(huì)涉及到操作多個(gè)數(shù)據(jù)庫(kù)的事務(wù)。其實(shí)就是將對(duì)同一庫(kù)事務(wù)的概念擴(kuò)大到了對(duì)多個(gè)庫(kù)的事務(wù)。目的是為了保證分布式系統(tǒng)中的數(shù)據(jù)一致性。分布式事務(wù)處理的關(guān)鍵是必須有一種方法可以知道事務(wù)在任何地方所做的所有動(dòng)作,提交或回滾事務(wù)的決定必須產(chǎn)生統(tǒng)一的結(jié)果(全部提交或全部回滾)

比較著名的分布式事務(wù)有:

  • 2pc(兩段式提交)
  • 3pc(三段式提交)
  • TCC(Try、Confirm、Cancel)
  • 半消息/最終一致性(RocketMQ)

這里我就介紹下最簡(jiǎn)單的2pc(兩段式),以及大家以后可能比較常用的半消息事務(wù)也就是最終一致性,別的事務(wù)都大同小異,都有很多優(yōu)點(diǎn)。

當(dāng)然也都有種種弊端:

例如長(zhǎng)時(shí)間鎖定數(shù)據(jù)庫(kù)資源,導(dǎo)致系統(tǒng)的響應(yīng)不快,并發(fā)上不去。

網(wǎng)絡(luò)抖動(dòng)出現(xiàn)腦裂情況,導(dǎo)致事物參與者,不能很好地執(zhí)行協(xié)調(diào)者的指令,導(dǎo)致數(shù)據(jù)不一致。

單點(diǎn)故障:例如事物協(xié)調(diào)者,在某一時(shí)刻宕機(jī),雖然可以通過(guò)選舉機(jī)制產(chǎn)生新的Leader,但是這過(guò)程中,必然出現(xiàn)問(wèn)題,而TCC,只有強(qiáng)悍的技術(shù)團(tuán)隊(duì),才能支持開(kāi)發(fā),成本太高。

開(kāi)始介紹這個(gè)兩個(gè)事物吧。

2pc(兩段式提交) :

第一階段:準(zhǔn)備階段(投票階段) 和第二階段:提交階段(執(zhí)行階段)

2pc(兩段式提交)可以說(shuō)是分布式事務(wù)的最開(kāi)始的樣子了,像極了媒婆,就是通過(guò)消息中間件或者全部事務(wù)管理來(lái)協(xié)調(diào)多個(gè)系統(tǒng),在兩個(gè)系統(tǒng)操作事務(wù)的時(shí)候都鎖定資源但是不提交事務(wù),等兩者都準(zhǔn)備好了,告訴消息中間件或者全部事務(wù)管理者,然后再分別提交事務(wù)。不管最后結(jié)果如何,第二階段都會(huì)結(jié)束當(dāng)前事務(wù)

但是問(wèn)題所在是,如果A系統(tǒng)事務(wù)提交成功了,但是B系統(tǒng)在提交的時(shí)候網(wǎng)絡(luò)波動(dòng)或者各種原因提交失敗了,其實(shí)還是會(huì)失敗的。

最終一致性:

整個(gè)流程中,我們能保證是:

  • 業(yè)務(wù)主動(dòng)方本地事務(wù)提交失敗,業(yè)務(wù)被動(dòng)方不會(huì)收到消息的投遞。
  • 只要業(yè)務(wù)主動(dòng)方本地事務(wù)執(zhí)行成功,那么消息服務(wù)一定會(huì)投遞消息給下游的業(yè)務(wù)被動(dòng)方,并最終保證業(yè)務(wù)被動(dòng)方一定能成功消費(fèi)該消息(消費(fèi)成功或失敗,即最終一定會(huì)有一個(gè)最終態(tài))。
  • 不過(guò)呢技術(shù)就是這樣,各種極端的情況我們都需要考慮,也很難有完美的方案,所以才會(huì)有這么多的方案三段式、TCC、最大努力通知等等分布式事務(wù)方案,大家只需要知道為啥要做,做了有啥好處,有啥壞處,在實(shí)際開(kāi)發(fā)的時(shí)候都注意下就好了,系統(tǒng)都是根據(jù)業(yè)務(wù)場(chǎng)景設(shè)計(jì)出來(lái)的,離開(kāi)業(yè)務(wù)的技術(shù)沒(méi)有意義,離開(kāi)技術(shù)的業(yè)務(wù)沒(méi)有底氣。

【本文是51CTO專(zhuān)欄機(jī)構(gòu)“AiChinaTech”的原創(chuàng)文章,微信公眾號(hào)( id: tech-AI)”】

戳這里,看該作者更多好文

 

 

責(zé)任編輯:華軒 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2009-06-19 15:28:31

JDBC分布式事務(wù)

2022-06-27 08:21:05

Seata分布式事務(wù)微服務(wù)

2024-06-07 08:06:36

2017-07-26 15:08:05

大數(shù)據(jù)分布式事務(wù)

2022-06-21 08:27:22

Seata分布式事務(wù)

2023-09-14 15:44:46

分布式事務(wù)數(shù)據(jù)存儲(chǔ)

2023-11-06 13:15:32

分布式事務(wù)Seata

2019-10-10 09:16:34

Zookeeper架構(gòu)分布式

2025-06-11 08:01:06

2021-09-29 09:07:37

分布式架構(gòu)系統(tǒng)

2009-09-18 15:10:13

分布式事務(wù)LINQ TO SQL

2013-12-06 09:37:49

分布式系統(tǒng)Travis CI

2022-06-10 10:39:44

分布式事務(wù)模式

2021-06-10 06:57:39

Redis存儲(chǔ)數(shù)據(jù)庫(kù)

2021-12-09 10:45:19

分布式事務(wù)框架

2023-01-06 09:19:12

Seata分布式事務(wù)

2025-05-13 02:10:00

2019-06-26 09:41:44

分布式事務(wù)微服務(wù)

2025-04-29 04:00:00

分布式事務(wù)事務(wù)消息

2022-03-24 07:51:27

seata分布式事務(wù)Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)