成人免费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事務處理

2011-04-27 15:55:16

2009-09-14 19:55:03

LINQ事務處理

2009-07-09 18:15:42

JDBC事務處理

2010-04-13 15:44:00

Oracle與SqlS

2014-01-22 13:37:53

2011-04-27 16:09:48

SQL ServerSSIS

2015-03-18 09:33:41

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

2010-01-04 13:06:50

ADO.NET事務

2009-04-15 17:03:15

OracleSQL Server事務處理

2010-05-17 14:59:05

MySQL事務處理

2009-11-13 17:01:07

ADO.NET事務處理

2022-06-22 05:42:32

數據庫事務處理分析查詢

2011-03-15 10:22:42

SQL Server 聯機事務處理

2017-04-10 13:30:47

Redis數據庫命令

2014-02-11 09:07:31

2022-06-13 10:42:21

分布式事務數據庫

2009-11-04 15:05:45

ADO.NET事務

2022-12-19 07:21:35

Hutool-db數據庫JDBC

2009-10-09 16:47:44

Oracle數據庫事務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 看羞羞视频免费 | 狠狠色香婷婷久久亚洲精品 | 成人精品一区二区 | 天天做日日做 | 亚洲一区二区精品视频 | 精品视频一区二区三区在线观看 | 欧美一区在线视频 | 中文字幕不卡在线88 | 欧美自拍另类 | 亚洲成人精品久久 | 国产一级电影网 | 欧美一区二区三区 | 一级黄色片一级黄色片 | 男人天堂色 | 国产精品mv在线观看 | 国产高清在线观看 | 午夜性色a√在线视频观看9 | 国产精品久久久久久久久久妇女 | www.久久久久久久久久久 | 成人福利 | 日本不卡免费新一二三区 | 欧美一区免费 | 日本一区二区三区四区 | 男女羞羞网站 | 91激情电影| 国产精品国产亚洲精品看不卡15 | 国产精品一区二区视频 | 日本福利在线观看 | 在线免费观看a级片 | 免费一级做a爰片久久毛片潮喷 | 在线观看欧美一区 | 操操日| 91精品久久久久 | 欧美一区不卡 | 欧美激情一区二区三级高清视频 | 中文字幕在线观看 | 精品日韩一区二区 | 久草视频网站 | 久久久久一区 | 一二三在线视频 | 天天天操 |