精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

@Transactional 竟也能解決分布式事務?

開發 前端
在Sharding-JDBC中明明只是簡單的使用@Transactional這個本地事務注解,為什么在跨庫插入數據時候卻能夠同時回滾?

前天朋友咨詢過我一個問題,大致內容如下:

圖片

這位讀者什么意思呢?簡單的總結下:在Sharding-JDBC中明明只是簡單的使用@Transactional這個本地事務注解,為什么在跨庫插入數據時候卻能夠同時回滾?

我們知道單數據節點的情況下保持事務是非常簡單的,只需要使用本地事務即可輕松解決,比如常用的注解:@Transactional。

但是在分庫后將會存在跨庫的事務,此時本地事務還能保證事務嗎?

這篇文章就以球友的提問來聊一下Sharding-JDBC中的本地事務。

本地事務

Sharding-JDBC中的本地事務可能會讓大家有一個誤解,還是以商品表為例:將商品表根據商品ID進行水平分庫,分為兩個庫,如下:

圖片

分庫的配置這里就不貼了,詳情看源碼。

此時向其中批量插入數據,偽代碼如下:

@Transactional
public int insertBatch(){
for(int i=0;i<10;i++){
insert(product);
.......
}
}

上述案例中使用了@Transactional?開啟了本地事務,但是內部在插入數據時,Sharding-JDB會根據product_id?這個分片鍵進行分庫,那么這個業務方法肯定是跨了DB1、DB2?這兩個庫,@Transactional這個注解能解決嗎?

假象:手動在內部模擬拋出異常,還真的是都rollback了。

此時很多人都迷糊了,Sharding-JDBC中的本地事務真的是可以保證分布式事務?

真實結論:Sharding-JDBC中的本地事務無法保證分布式事。

Sharding-JDBC中的本地事務在以下兩種情況是完全支持的:

  • 支持非跨庫事務,比如僅分表、在單庫中操作。
  • 支持因邏輯異常導致的跨庫事務,比如上述的操作,跨兩個庫插入數據,插入完成后拋出異常。

本地事務不支持的情況:

  • 不支持因網絡、硬件異常導致的跨庫事務;例如:同一事務中,跨兩個庫更新,更新完畢后、未提交之前,第一個庫宕機,則只有第二個庫數據提交。

對于因網絡、硬件異常導致的跨庫事務無法支持很好理解,在分布式事務中無論是兩階段還是三階段提交都是直接或者間接滿足以下兩個條件:

  • 有一個事務協調者
  • 事務日志記錄

本地事務并未滿足上述條件,自然是無法支持

為什么邏輯異常導致的跨庫事務能夠支持?

Spring的本地事務大家都很了解,也經常用,并不支持的跨庫事務,那么為什么Sharding-JDBC中卻能支持呢?

想要了解其中的貓膩必然需要從Sharding-JDBC的源碼入手,下圖是在Sharding-JDBC一條SQL處理的流程:

圖片

Sharding-JDBC中的一條SQL會經過改寫,拆分成不同數據源的SQL,比如一條select語句,會按照其中分片鍵拆分成對應數據源的SQL,然后在不同數據源中的執行,最終會提交或者回滾。

想要解釋上述的問題,只需要看ShardingConnection,這是Sharding-JDBC自定義實現的,繼承關系如下圖:

圖片

可以看到ShardingConnection?繼承了java.sql.Connection,這個類就不必多解釋了,在學習JDBC的時候應該都有所接觸,直接和數據庫打交道的一個類。

想要知道為什么支持跨庫事務的回滾,肯定要找到其中的rollback方法,如下:

@Override
public void rollback() throws SQLException {
//① 本地事務
f (TransactionType.LOCAL == transactionType) {
super.rollback();
} else {
//② 非本地事務
shardingTransactionManager.rollback();
}
}

rollback?的方法中區分了本地事務和分布式事務,如果是本地事務將調用父類的rollback方法,如下:

//父類:AbstractConnectionAdapter#rollback

@Override
public void rollback() throws SQLException {
//cachedConnections中存儲了數據源,這里是ds1/ds2
forceExecuteTemplate.execute(cachedConnections.values(), Connection::rollback);
}

這里是調用ForceExecuteTemplate#execute()?方法執行,其實內部就是遍歷數據源去執行對應的rollback方法,如下:

public void execute(final Collection<T> targets, final ForceExecuteCallback<T> callback) throws SQLException {
Collection<SQLException> exceptions = new LinkedList<>();
for (T each : targets) {
try {
callback.execute(each);
} catch (final SQLException ex) {
exceptions.add(ex);
}
}
throwSQLExceptionIfNecessary(exceptions);
}

看到這里已經很明了了,rollback? 在各個數據源中回滾且未記錄任何事務日志,因此在非硬件、網絡的情況下都是可以正常回滾的,一旦因為網絡、硬件故障,可能導致某個數據源rollback失敗,這樣即使程序恢復了正常,也無undo日志繼續進行rollback,因此這里就造成了數據不一致了。

總結

僅僅依靠Spring自帶的本地事務(@Transactional)是無法保證跨庫的分布式事務,不要被Sharding-JDBC的假象迷惑了。

當然Sharding-JDBC對于跨庫事務也是有一定的支持,大致分成三類:

  • 強一致性的XA協議事務
  • 基于Base的柔性事務
  • 通過SPI機制自定義擴展的分布式事務解決方案

本文只是拋磚引玉簡單的介紹下分庫分表后的事務處理,后文會針對以上三類方案詳細介紹一下。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2022-03-24 07:51:27

seata分布式事務Java

2025-04-29 04:00:00

分布式事務事務消息

2022-06-27 08:21:05

Seata分布式事務微服務

2022-06-14 10:47:00

分布式事務數據

2022-06-21 08:27:22

Seata分布式事務

2017-07-26 15:08:05

大數據分布式事務

2025-04-30 10:44:02

2023-09-14 15:44:46

分布式事務數據存儲

2024-10-09 14:14:07

2020-05-28 09:35:05

分布式事務方案

2019-10-10 09:16:34

Zookeeper架構分布式

2009-06-19 15:28:31

JDBC分布式事務

2021-09-29 09:07:37

分布式架構系統

2009-09-18 15:10:13

分布式事務LINQ TO SQL

2025-04-28 00:44:04

2020-12-09 09:14:57

SpringCloudSeata 分布式

2019-06-26 09:41:44

分布式事務微服務

2025-05-15 08:05:00

2019-01-11 18:22:07

阿里巴巴技術開源

2010-07-21 13:53:41

SQL Server分
點贊
收藏

51CTO技術棧公眾號

精品在线播放免费| 欧美视频免费看| 26uuu精品一区二区三区四区在线| 97免费视频在线| 日本少妇xxxx软件| 麻豆mv在线看| 中文字幕精品在线不卡| 91手机在线观看| 国产三级av片| 久久要要av| 亚洲国产中文字幕在线观看| 亚洲国产精品久久久久婷蜜芽| www.亚洲.com| 国产成人aaa| 国产精品欧美日韩久久| 午夜国产福利一区二区| 亚洲高清极品| 日韩欧美激情一区| 国产嫩草在线观看| aaa在线播放视频| 国产欧美一区二区精品婷婷 | 日韩欧美精品一区二区| 在线观看亚洲一区二区| 亚洲精品孕妇| 久久影视电视剧免费网站| 日本丰满少妇裸体自慰 | 国产精品一级久久久| 在线视频 91| 亚洲综合另类| 精品自在线视频| 亚洲高潮女人毛茸茸| 久久99国产精品久久99大师| 91麻豆精品国产| 亚洲人成无码www久久久| 九色91在线| 1区2区3区欧美| 日韩精品伦理第一区| 神马电影在线观看| av中文字幕不卡| av免费精品一区二区三区| 91 中文字幕| 水野朝阳av一区二区三区| 97在线免费视频| 国产在线视频第一页| 亚洲乱码精品| 精品国偷自产在线视频| 国产aaaaaaaaa| 欧美日韩高清| 中文字幕欧美国内| 国产1区2区在线观看| 精品国产一区二区三区小蝌蚪| 国产视频综合在线| 国产精品无码网站| 亚洲人成亚洲精品| 亚洲欧洲成视频免费观看| 日本aaa视频| 日韩欧美美女在线观看| 日韩av在线免费看| 蜜桃传媒一区二区亚洲av| 麻豆成人入口| 亚洲激情第一页| av在线播放网址| 成人在线视频你懂的| 制服丝袜亚洲播放| 亚洲女人在线观看| 麻豆精品国产| 亚洲精品在线一区二区| 欧类av怡春院| 要久久爱电视剧全集完整观看| 精品香蕉在线观看视频一| 女~淫辱の触手3d动漫| gogogo高清在线观看一区二区| 亚洲人成伊人成综合网久久久| 中文字幕丰满乱子伦无码专区| 尤物tv在线精品| 一区二区三区视频免费| 91麻豆精品久久毛片一级| 91视频精品| 超薄丝袜一区二区| 亚洲精品午夜久久久久久久| 亚洲在线成人| 国产精品久久9| 国产精品嫩草影院桃色| 国产.欧美.日韩| 久久av一区二区三区漫画| 暖暖视频在线免费观看| 国产精品欧美一级免费| 国产日韩视频在线播放| 国产盗摄在线视频网站| 一本到高清视频免费精品| 国产原创精品在线| 日本精品视频| 亚洲美女自拍视频| 911国产在线| 在线 亚洲欧美在线综合一区| 欧美一级电影久久| 一区二区三区日| 99精品欧美一区二区三区小说| 日本一区二区三区视频在线观看| 麻豆网在线观看| 狠狠色狠狠色综合日日小说| 污污的网站免费| 国产极品模特精品一二| 在线看欧美日韩| 国产一级aa大片毛片| 日韩黄色一级片| 99视频日韩| 国产福利电影在线| 亚洲一区二区三区自拍| 天天影视综合色| 91精品短视频| 神马国产精品影院av| 日本特黄一级片| 麻豆成人久久精品二区三区小说| 国产另类第一区| 免费大片在线观看www| 精品久久久精品| 伊人精品视频在线观看| 国产99精品| 久久久久久久影院| 国产精品特级毛片一区二区三区| 99久久久免费精品国产一区二区| 一区二区精品在线观看| 台湾佬中文娱乐网欧美电影| 欧美一级国产精品| 狂野欧美性猛交| 男女av一区三区二区色多| 99视频国产精品免费观看| 天堂资源在线中文| 色偷偷88欧美精品久久久| 岛国大片在线免费观看| 久久看人人摘| 国产999在线观看| 特级丰满少妇一级aaaa爱毛片| 中文字幕亚洲一区二区av在线| 日韩av在线综合| 日本三级久久| 5566成人精品视频免费| 国产小视频免费观看| 亚洲三级电影网站| 亚洲美女性囗交| 成人激情电影在线| 国产精品爱啪在线线免费观看| 亚洲av成人精品一区二区三区在线播放 | 91久久久一线二线三线品牌| 亚洲成人三级| 欧美在线一二三| 最近中文字幕在线mv视频在线| 99在线|亚洲一区二区| 国产精品一区二区不卡视频| 青青草原国产在线| 日韩精品一区二区三区三区免费 | 欧美成熟毛茸茸| 欧美日韩一区二区三区在线免费观看 | 伊人久久综合视频| 成人免费不卡视频| 男人添女人下面高潮视频| 欧美黑人巨大videos精品| 久久久久久这里只有精品| 欧美 中文字幕| 午夜精品久久久久久久99樱桃| 无码人妻精品一区二区三区99不卡| 欧美一区二区三区另类| 亚洲最大激情中文字幕| 女人天堂av在线播放| 精品久久久久久久久久久久久久久久久 | 在线观看av日韩| 国产精品成人一区二区不卡| 成人av资源在线播放| av毛片在线看| 精品国产91亚洲一区二区三区婷婷| 国产一级在线播放| 91看片淫黄大片一级在线观看| 日本成人黄色网| 色天天久久综合婷婷女18| 成人乱人伦精品视频在线观看| 99视频免费在线观看| 欧美不卡一二三| 韩国av中文字幕| 欧美激情一区二区| 黑人巨大猛交丰满少妇| 亚洲毛片一区| 水蜜桃一区二区| 日韩中文一区二区| 欧美性受xxx| 天天在线视频色| 精品美女一区二区三区| 成人在线免费看视频| 国产精品视频一区二区三区不卡| 欧美丝袜在线观看| 亚洲大片在线| 亚洲欧美日韩另类精品一区二区三区 | 99九九电视剧免费观看| 国产夫妻在线播放| 一区二区三区精品99久久| 国产乱淫片视频| 欧美日韩亚洲精品内裤| 国产精品国产三级国产传播| 成人av网站在线| 亚洲精品自拍网| 狠久久av成人天堂| 亚洲精品人成| 巨人精品**| 成人春色激情网| 亚洲十八**毛片| 欧美另类交人妖| 成人免费黄色网页| 亚洲国产成人久久综合| 91肉色超薄丝袜脚交一区二区| 亚洲综合在线视频| 国产精品久久久久久久av| 成人综合在线视频| 国产视频1区2区3区| 亚洲日本视频| 操bbb操bbb| 欧美艳星介绍134位艳星| 国偷自产av一区二区三区小尤奈| 日韩综合av| 国产精品第七影院| 免费高潮视频95在线观看网站| 久久久91精品| caoporn国产精品免费视频| 亚洲国产成人在线播放| 国产免费黄色网址| 欧美性受xxxx| 欧美精品韩国精品| 亚洲资源中文字幕| 北条麻妃在线观看视频| 国产亚洲欧美日韩日本| 朝桐光av一区二区三区| 国产电影精品久久禁18| 欧美午夜aaaaaa免费视频| 久久国产高清| 免费在线观看的av网站| 亚洲大片在线| 国产欧美精品aaaaaa片| 亚洲情侣在线| 一区二区三区欧美成人| 欧美一区2区| 欧美在线激情| 九九免费精品视频在线观看| 精品久久久久久中文字幕动漫| 伊人久久大香线蕉av超碰| 91日本视频在线| 91成人在线网站| 国产欧美一区二区三区视频 | 极品av少妇一区二区| 99热这里只有精品免费| 一区二区三区午夜视频| 黄色免费高清视频| 99久久亚洲精品蜜臀| 正义之心1992免费观看全集完整版| 欧美色婷婷久久99精品红桃| 日韩av电影在线观看| 精品一区欧美| 日韩免费电影一区二区| 欧美一区二区麻豆红桃视频| 亚洲精品国产精品久久| 91视频一区| 国产人妻互换一区二区| 欧美aⅴ99久久黑人专区| 国产经典久久久| 欧美日韩影院| 亚洲国产成人精品无码区99| 一本久道久久综合婷婷鲸鱼| 黄色一级片播放| 久久精品动漫| 欧美成人福利在线观看| 国产一区二区在线影院| 日韩精品――色哟哟| 99国产精品久久| 日韩av片在线| 亚洲人成网站影音先锋播放| 免费一级a毛片夜夜看| 午夜精品久久久久久久| 区一区二在线观看| 欧美日韩不卡在线| 亚洲国产精品欧美久久 | 在线日本中文字幕| 超碰精品一区二区三区乱码| 国产蜜臀av在线播放| 热re91久久精品国99热蜜臀| 日本久久一区| 福利视频一区二区三区| 亚洲小说图片| 中文字幕一区二区三区四区五区| 亚洲性色视频| 天天操天天爽天天射| 国产suv精品一区二区883| jlzzjizz在线播放观看| 国产精品免费av| 国产一级aa大片毛片| 欧洲国产伦久久久久久久| jlzzjlzzjlzz亚洲人| 精品夜色国产国偷在线| caopen在线视频| 欧美在线视频网| 久久久久久久久成人| 欧美精彩一区二区三区| 亚洲视频电影在线| 黄色动漫在线免费看| 极品少妇一区二区| 菠萝菠萝蜜网站| 亚洲欧美日韩中文播放| 五月婷婷激情视频| 欧美成人性战久久| seseavlu视频在线| 久久露脸国产精品| 亚洲男人在线| 欧美日韩中文国产一区发布 | 欧美激情国内偷拍| 福利精品一区| 久久日韩精品| 欧美视频福利| 国产精品入口免费软件| 大尺度一区二区| 亚洲一二三在线观看| 欧美性猛交xxxx乱大交极品| 国产成人精品免费看视频| 国产一区二区三区久久精品 | 性色av蜜臀av浪潮av老女人| 中文字幕亚洲精品在线观看 | 日韩精品一区第一页| 佐佐木明希电影| 中文字幕一区二区三区精华液| 无码人妻久久一区二区三区| 精品av综合导航| a篇片在线观看网站| 国产精品揄拍500视频| 伊人成综合网yiren22| 精品国偷自产一区二区三区| 极品少妇xxxx精品少妇偷拍| 日本免费www| 欧美性做爰猛烈叫床潮| 黄色在线网站| 欧美综合激情网| 欧美在线关看| 日韩精品 欧美| 成人精品一区二区三区四区| 欧美黄色aaa| 欧美精品高清视频| 自拍视频在线播放| 国产精品久久久久久久久久小说 | 99天天综合性| 日本三级欧美三级| 亚洲成人av在线播放| 草美女在线观看| 国产日韩一区二区三区| 日韩午夜电影| 久久久国产精品无码| 午夜伊人狠狠久久| 欧美一级淫片aaaaaa| 97国产精品视频人人做人人爱| 国产精品45p| 精品无码一区二区三区爱欲| 高清shemale亚洲人妖| 国产免费无码一区二区视频| 日韩一级高清毛片| 毛片网站在线看| 九九九久久久| 美女网站久久| 99久久久无码国产精品不卡| 欧美精品18+| 成年人视频免费在线播放| 久久99精品久久久水蜜桃| 久久精品亚洲一区二区| 亚洲午夜精品久久久久久高潮| 在线观看av一区| 免费网站免费进入在线| 5g影院天天爽成人免费下载| 精品av久久久久电影| 四虎永久免费在线观看| 欧美日韩一级二级三级| 在线看一级片| 久久久久久久久久久久久久久久av| 老司机久久99久久精品播放免费| 国产免费无遮挡吸奶头视频| 7777精品久久久大香线蕉| 欧美videos另类精品| 久久伦理网站| 久久国产婷婷国产香蕉| 麻豆一区产品精品蜜桃的特点| 国产丝袜一区二区三区免费视频| 日韩一区二区三区免费视频| 国产大尺度在线观看| jvid福利写真一区二区三区| 天天干天天操天天操| 日韩视频免费中文字幕| 国产精品jk白丝蜜臀av小说| 欧美一级黄色片视频| 国产精品久久久久9999吃药| 黄色小视频免费在线观看| 日产日韩在线亚洲欧美| 中文字幕一区二区av| 好吊一区二区三区视频| 宅男在线国产精品| 一级毛片久久久| 欧美少妇在线观看| 久久伊99综合婷婷久久伊| 国产欧美日韩成人|