談一談直播平臺原始碼分散式事務的概念
基本概念
事務
由多個計算任務構成的一組具有明確邊界的工作集合。事務當中可能包括介面訪問、網路通訊、資料獲取和處理。直播平臺原始碼嚴格的事務實現應該具備具有原子性、一致性、隔離性、永續性四個特性。
原子性(Atomicity):一個事務中的任務要麼全部完成,要麼全部失敗。沒有中間狀態。
隔離性(Isolation):不同事務之間的操作互不影響,併發的事務其中間狀態對其他事務不可見。
永續性(Durability):事務一旦完成,則狀態永久有效。
一致性(Consistency):事務涉及的資源或者資料在事務前後遵循某種約束,事務的完成或失敗不會影響此狀態。
分散式事務
在分散式系統中,事務的訪問涉及的資源、參與計算的節點都部署在不同的節點上,這種情況下涉及到的事務稱為分散式事務。
從直播平臺原始碼整體的架構角度看,分散式事務涉及的場景可以分為兩類。第一類是,事務本身只涉及單個應用,但是涉及多個資料儲存,一筆交易需要訪問多個資料儲存才能最終完成。第二類,是事務本身涉及多個應用,同時每個應用可能連線著一個或者多個資料儲存,一筆交易需要協同多個獨立的應用訪問多個資料儲存最終才能完成。
一致性
嚴格地講,一致性並不是事務本身的特性。可以看到,一致性所討論的所謂“約束”是隨著業務場景變化而變化的。
一致性的保證,除了資料庫層面需要有相應的機制以外,應用層面首先需要進行相應的考慮。例如,對於典型的兩個賬戶轉賬的例子,應用需要保證在同一個事物裡面分別對轉出賬戶和轉入賬戶發起了減少和增加金額的操作,如果任何一個缺失,即使使用了事務,從業務角度看也是違反了一致性約束的。
在直播平臺原始碼應用層面確保了業務的正確性之後,再從資料庫層面進行審視。還是轉賬的例子,假設某一個資料庫的事務支援出現了問題,在一個事務當中發生某種故障之後,發現轉出賬戶上錢已經相應減少,而轉入賬戶上錢並沒有增加,那麼很明顯這裡違反了業務的一致性約束。但仔細辨析後會發現,從事務本身考慮,這個場景實際上首先是違反了事務的原子性的,即應該同時完成的任務只完成了一半。所以,這個場景下面,一致性的體現實際上最終是由原子性保證的。再比如,考慮同一筆賬戶上同時發生的兩筆轉賬交易,如果A事務扣減100元,B事務扣減50元,如果兩個事務都提交之後,發現賬戶實際扣減了50元而不是150元,那麼很明顯也違反了業務上的一致性約束。這種情況,實際上是由事務的隔離性保證的。
所以,總的來說,直播平臺原始碼一致性更多的是資料儲存之上的業務約束保證。其描述的特性,在事務角度是分別有原子性和隔離性兩種特性在不同場景下分別予以保證的。
宣告:本文由雲豹科技轉發,如有侵權請聯絡作者刪除
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70002045/viewspace-2843501/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 談談分散式事務原理分散式
- 分散式事務(一)—分散式事務的概念分散式
- 談談對分散式事務的一點理解和解決方案分散式
- 淺談ORACLE的分散式事務Oracle分散式
- 分散式事務 TCC-Transaction 原始碼分析 —— 運維平臺分散式原始碼運維
- 趁熱打鐵-再談分散式事務分散式
- 談談Java事務Java
- 分散式事務的概念和解決方案Seate分散式
- debezium官方分散式事務Saga案例原始碼分散式原始碼
- 由事務擴充套件開談一談套件
- 老生常談——利用訊息佇列處理分散式事務佇列分散式
- 淺談直播教育平臺開發成本
- 分散式事務 TCC-Transaction 原始碼解析 —— 事務儲存器分散式原始碼
- 談談最近做的一個自動化平臺
- Seata 分散式事務框架 TCC 模式原始碼分析分散式框架模式原始碼
- Seata分散式事務TA模式原始碼解讀分散式模式原始碼
- 談談LruCache原始碼原始碼
- 大型直播平臺應用架構淺談應用架構
- 直播平臺原始碼,Uniapp text 樣式設定原始碼APP
- [分散式][分散式鎖]淺談分散式鎖分散式
- 直播原始碼如何搭建一個屬於自己的直播平臺?原始碼
- 你男朋友是高可用麼? | 談分散式系統的概念分散式
- 分散式事務 TCC-Transaction 原始碼分析 —— Dubbo 支援分散式原始碼
- 直播平臺原始碼,可摺疊式選單欄原始碼
- Album++:分散式事務專輯-基礎概念分散式
- 短影片直播系統為什麼需要分散式部署,淺談分散式部署分散式
- 淺談分散式定時任務之quartz分散式quartz
- 細談Mysql事務MySql
- 曾奇:談談我所認識的分散式鎖分散式
- [原始碼解析] PyTorch 分散式(4)------分散式應用基礎概念原始碼PyTorch分散式
- 從 原始碼 談談 redux compose原始碼Redux
- 結合原始碼談談ThreadLocal!原始碼thread
- 談一談資料中臺的原罪
- 面試——談談你對Java 平臺的理解面試Java
- 談談MySQL InnoDB儲存引擎事務的ACID特性MySql儲存引擎
- 直播平臺原始碼,bmob_gudongStpeAdd原始碼
- PHP直播平臺原始碼搭建教程PHP原始碼
- 微服務分散式事務元件 Seata(一)微服務分散式元件