掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
作者:翟飛 2020-03-31 08:05:23
前端
分布式 在分布式系統(tǒng)中,為了保證數(shù)據(jù)的高可用,通常,我們會將數(shù)據(jù)保留多個副本(replica),這些副本會放置在不同的物理的機器上。為了對用戶提供正確的 CRUD 等語義,我們需要保證這些放置在不同物理機器上的副本是一致的。分布式事務(wù)在現(xiàn)在遍地都是分布式部署的系統(tǒng)中幾乎是必要的。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)公司的服務(wù)宗旨!把網(wǎng)站當作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
在分布式系統(tǒng)中,為了保證數(shù)據(jù)的高可用,通常,我們會將數(shù)據(jù)保留多個副本(replica),這些副本會放置在不同的物理的機器上。為了對用戶提供正確的 CRUD 等語義,我們需要保證這些放置在不同物理機器上的副本是一致的。分布式事務(wù)在現(xiàn)在遍地都是分布式部署的系統(tǒng)中幾乎是必要的。
我們先聊一下啥是事務(wù)?
分布式事務(wù)、事務(wù)隔離級別、ACID我相信大家這些東西都耳熟能詳了,那什么是事務(wù)呢?
概念:
一般是指要做的或所做的事情。
指作為單個邏輯工作單元執(zhí)行的一系列操作,要么全部執(zhí)行,要么全部不執(zhí)行。
簡單的說,事務(wù)就是并發(fā)控制的單位,是用戶定義的一個操作序列。
特性:
事務(wù)是恢復(fù)和并發(fā)控制的基本單位。
事務(wù)應(yīng)該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。
那什么是分布式事務(wù)呢?
這里舉個簡單的例子:大家可以想一下,你下單流程可能涉及到10多個環(huán)節(jié),你下單付錢都成功了,但是你優(yōu)惠券扣減失敗了,積分新增失敗了,前者公司會被薅羊毛,后者用戶會不開心,
但是這些都在不同的服務(wù)怎么保證大家都成功呢? 分布式事務(wù)。
分布式事務(wù)是指會涉及到操作多個數(shù)據(jù)庫的事務(wù)。其實就是將對同一庫事務(wù)的概念擴大到了對多個庫的事務(wù)。目的是為了保證分布式系統(tǒng)中的數(shù)據(jù)一致性。分布式事務(wù)處理的關(guān)鍵是必須有一種方法可以知道事務(wù)在任何地方所做的所有動作,提交或回滾事務(wù)的決定必須產(chǎn)生統(tǒng)一的結(jié)果(全部提交或全部回滾)
比較著名的分布式事務(wù)有:
這里我就介紹下最簡單的2pc(兩段式),以及大家以后可能比較常用的半消息事務(wù)也就是最終一致性,別的事務(wù)都大同小異,都有很多優(yōu)點。
當然也都有種種弊端:
例如長時間鎖定數(shù)據(jù)庫資源,導(dǎo)致系統(tǒng)的響應(yīng)不快,并發(fā)上不去。
網(wǎng)絡(luò)抖動出現(xiàn)腦裂情況,導(dǎo)致事物參與者,不能很好地執(zhí)行協(xié)調(diào)者的指令,導(dǎo)致數(shù)據(jù)不一致。
單點故障:例如事物協(xié)調(diào)者,在某一時刻宕機,雖然可以通過選舉機制產(chǎn)生新的Leader,但是這過程中,必然出現(xiàn)問題,而TCC,只有強悍的技術(shù)團隊,才能支持開發(fā),成本太高。
開始介紹這個兩個事物吧。
2pc(兩段式提交) :
第一階段:準備階段(投票階段) 和第二階段:提交階段(執(zhí)行階段)
2pc(兩段式提交)可以說是分布式事務(wù)的最開始的樣子了,像極了媒婆,就是通過消息中間件或者全部事務(wù)管理來協(xié)調(diào)多個系統(tǒng),在兩個系統(tǒng)操作事務(wù)的時候都鎖定資源但是不提交事務(wù),等兩者都準備好了,告訴消息中間件或者全部事務(wù)管理者,然后再分別提交事務(wù)。不管最后結(jié)果如何,第二階段都會結(jié)束當前事務(wù)
但是問題所在是,如果A系統(tǒng)事務(wù)提交成功了,但是B系統(tǒng)在提交的時候網(wǎng)絡(luò)波動或者各種原因提交失敗了,其實還是會失敗的。
最終一致性:
整個流程中,我們能保證是:
【本文是51CTO專欄機構(gòu)“AiChinaTech”的原創(chuàng)文章,微信公眾號( id: tech-AI)”】

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流