成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB分庫分表(4):多數據源的事務處理

數據庫
系統經sharding改造之后,原來單一的數據庫會演變成多個數據庫,如何確保多數據源同時操作的原子性和一致性是不得不考慮的一個問題。總體上看,目前對于一個分布式系統的事務處理有三種方式:分布式事務、基于Best Efforts 1PC模式的事務以及事務補償機制。我們下面對這三種處理方式一一進行分析。

[[197645]]

系統經sharding改造之后,原來單一的數據庫會演變成多個數據庫,如何確保多數據源同時操作的原子性和一致性是不得不考慮的一個問題。總體上看,目前對于一個分布式系統的事務處理有三種方式:分布式事務、基于Best Efforts 1PC模式的事務以及事務補償機制。我們下面對這三種處理方式一一進行分析。

分布式事務

這是最為人們所熟知的多數據源事務處理機制。本文并不打算對分布式事務做過多介紹,讀者可參考此文:關于分布式事務、兩階段提交、一階段提交、Best Efforts 1PC模式和事務補償機制的研究 。在這里只想對分布式事務的利弊作一下分析。

優勢:

1. 基于兩階段提交,***限度地保證了跨數據庫操作的“原子性”,是分布式系統下最嚴格的事務實現方式。

2. 實現簡單,工作量小。由于多數應用服務器以及一些獨立的分布式事務協調器做了大量的封裝工作,使得項目中引入分布式事務的難度和工作量基本上可以忽略不計。

劣勢:

系統“水平”伸縮的死敵。基于兩階段提交的分布式事務在提交事務時需要在多個節點之間進行協調,***限度地推后了提交事務的時間點,客觀上延長了事務的執行時間,這會導致事務在訪問共享資源時發生沖突和死鎖的概率增高,隨著數據庫節點的增多,這種趨勢會越來越嚴重,從而成為系統在數據庫層面上水平伸縮的”枷鎖”, 這是很多Sharding系統不采用分布式事務的主要原因。

基于Best Efforts 1PC模式的事務

與分布式事務采用的兩階段提交不同,Best Efforts 1PC模式采用的是一階段端提交,犧牲了事務在某些特殊情況(當機、網絡中斷等)下的安全性,卻獲得了良好的性能,特別是消除了對水平伸縮的桎酷。Distributed transactions in Spring, with and without XA一文對Best Efforts 1PC模式進行了詳細的說明,該文提供的Demo代碼更是直接給出了在Spring環境下實現一階段提交的多數據源事務管理示例。不過需要注意的是,原示例是基于spring 3.0之前的版本,如果你使用spring 3.0+,會得到如下錯誤:java.lang.IllegalStateException: Cannot activate transaction synchronization – already active,如果使用spring 3.0+,你需要參考spring-data-neo4j的實現。鑒于Best Efforts 1PC模式的性能優勢,以及相對簡單的實現方式,它被大多數的sharding框架和項目采用。

事務補償機制

對于那些對性能要求很高,但對一致性要求并不高的系統,往往并不苛求系統的實時一致性,只要在一個允許的時間周期內達到最終一致性即可,這使得事務補償機制成為一種可行的方案。事務補償機制最初被提出是在“長事務”的處理中,但是對于分布式系統確保一致性也有很好的參考意義。籠統地講,與事務在執行中發生錯誤后立即回滾的方式不同,事務補償是一種事后檢查并補救的措施,它只期望在一個容許時間周期內得到最終一致的結果就可以了。事務補償的實現與系統業務緊密相關,并沒有一種標準的處理方式。一些常見的實現方式有:對數據進行對帳檢查;基于日志進行比對;定期同標準數據來源進行同步,等等。

小結

分布式事務,最嚴格的事務實現,但性能是個大問題;Best Efforts 1PC模式,性能與事務可靠性的平衡,支持系統水平伸縮,大多數情況下是最合適的選擇;事務補償機制,只能適用于對事務性要求不高,允許數據“最終一致”即可的系統,犧牲實時一致性,獲得***的性能回報。 

責任編輯:龐桂玉 來源: 數據庫開發
相關推薦

2009-07-15 17:41:55

iBATIS事務處理

2009-09-14 19:55:03

LINQ事務處理

2011-04-27 15:55:16

2010-04-13 15:44:00

Oracle與SqlS

2014-01-22 13:37:53

2009-07-09 18:15:42

JDBC事務處理

2015-03-18 09:33:41

大數據分布式系統事務處理

2011-04-27 16:09:48

SQL ServerSSIS

2009-04-15 17:03:15

OracleSQL Server事務處理

2010-05-17 14:59:05

MySQL事務處理

2010-01-04 13:06:50

ADO.NET事務

2009-11-13 17:01:07

ADO.NET事務處理

2022-06-22 05:42:32

數據庫事務處理分析查詢

2011-03-15 10:22:42

SQL Server 聯機事務處理

2014-02-11 09:07:31

2017-04-10 13:30:47

Redis數據庫命令

2022-06-13 10:42:21

分布式事務數據庫

2009-11-04 15:05:45

ADO.NET事務

2022-12-19 07:21:35

Hutool-db數據庫JDBC

2015-03-16 14:38:16

大數據存儲分布式系統事務處理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久国产精品一区 | 日韩在线 | 国产电影一区二区 | 久久不卡| 久久久久久国产一区二区三区 | 欧美狠狠操| 日本一区二区三区四区 | 天天插天天操 | 亚洲精品 在线播放 | 国产午夜精品福利 | 第一av| 成人av片在线观看 | 日韩精品a在线观看图片 | 日韩一区二区av | 免费看国产精品视频 | 人人干人人干人人干 | 日日干日日色 | 日韩精品视频中文字幕 | 国产免费视频在线 | 精品九九 | 日本不卡高字幕在线2019 | 在线播放中文字幕 | 日韩一区不卡 | 欧美区在线| 精品国产一区二区在线 | 91在线观看| 最新国产福利在线 | 日日夜夜免费精品视频 | 日韩在线大片 | 毛片a级毛片免费播放100 | 亚洲欧美精品在线 | 亚洲福利av| 一级毛片色一级 | 人人操日日干 | 国产精品久久久久久久久久免费看 | 99re6在线 | 一级黄色淫片 | 精品欧美一区二区中文字幕视频 | 韩日在线视频 | 欧美一级全黄 | 亚洲欧洲中文日韩 |