談一談直播平臺原始碼分散式事務的概念

雲豹科技曉彤發表於2021-11-22

基本概念

事務

由多個計算任務構成的一組具有明確邊界的工作集合。事務當中可能包括介面訪問、網路通訊、資料獲取和處理。直播平臺原始碼嚴格的事務實現應該具備具有原子性、一致性、隔離性、永續性四個特性。

原子性(Atomicity):一個事務中的任務要麼全部完成,要麼全部失敗。沒有中間狀態。

隔離性(Isolation):不同事務之間的操作互不影響,併發的事務其中間狀態對其他事務不可見。

永續性(Durability):事務一旦完成,則狀態永久有效。

一致性(Consistency):事務涉及的資源或者資料在事務前後遵循某種約束,事務的完成或失敗不會影響此狀態。

分散式事務

在分散式系統中,事務的訪問涉及的資源、參與計算的節點都部署在不同的節點上,這種情況下涉及到的事務稱為分散式事務。

從直播平臺原始碼整體的架構角度看,分散式事務涉及的場景可以分為兩類。第一類是,事務本身只涉及單個應用,但是涉及多個資料儲存,一筆交易需要訪問多個資料儲存才能最終完成。第二類,是事務本身涉及多個應用,同時每個應用可能連線著一個或者多個資料儲存,一筆交易需要協同多個獨立的應用訪問多個資料儲存最終才能完成。

一致性

嚴格地講,一致性並不是事務本身的特性。可以看到,一致性所討論的所謂“約束”是隨著業務場景變化而變化的。

一致性的保證,除了資料庫層面需要有相應的機制以外,應用層面首先需要進行相應的考慮。例如,對於典型的兩個賬戶轉賬的例子,應用需要保證在同一個事物裡面分別對轉出賬戶和轉入賬戶發起了減少和增加金額的操作,如果任何一個缺失,即使使用了事務,從業務角度看也是違反了一致性約束的。

在直播平臺原始碼應用層面確保了業務的正確性之後,再從資料庫層面進行審視。還是轉賬的例子,假設某一個資料庫的事務支援出現了問題,在一個事務當中發生某種故障之後,發現轉出賬戶上錢已經相應減少,而轉入賬戶上錢並沒有增加,那麼很明顯這裡違反了業務的一致性約束。但仔細辨析後會發現,從事務本身考慮,這個場景實際上首先是違反了事務的原子性的,即應該同時完成的任務只完成了一半。所以,這個場景下面,一致性的體現實際上最終是由原子性保證的。再比如,考慮同一筆賬戶上同時發生的兩筆轉賬交易,如果A事務扣減100元,B事務扣減50元,如果兩個事務都提交之後,發現賬戶實際扣減了50元而不是150元,那麼很明顯也違反了業務上的一致性約束。這種情況,實際上是由事務的隔離性保證的。

所以,總的來說,直播平臺原始碼一致性更多的是資料儲存之上的業務約束保證。其描述的特性,在事務角度是分別有原子性和隔離性兩種特性在不同場景下分別予以保證的。

宣告:本文由雲豹科技轉發,如有侵權請聯絡作者刪除


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70002045/viewspace-2843501/,如需轉載,請註明出處,否則將追究法律責任。

相關文章