java 分布式事务_Java核心知识 Spring原理十五 JPA 原理
1. 事務(wù)
事務(wù)是計(jì)算機(jī)應(yīng)用中不可或缺的組件模型,它保證了用戶操作的原子性 ( Atomicity )、一致性
( Consistency )、隔離性 ( Isolation ) 和持久性 ( Durabilily )。
2. 本地事務(wù)
緊密依賴于底層資源管理器(例如數(shù)據(jù)庫(kù)連接 ),事務(wù)處理局限在當(dāng)前事務(wù)資源內(nèi)。此種事務(wù)處理
方式不存在對(duì)應(yīng)用服務(wù)器的依賴,因而部署靈活卻無法支持多數(shù)據(jù)源的分布式事務(wù)。在數(shù)據(jù)庫(kù)連
接中使用本地事務(wù)示例如下:
分布式事務(wù)
Java 事務(wù)編程接口(JTA:Java Transaction API)和 Java 事務(wù)服務(wù) (JTS;Java Transaction
Service) 為 J2EE 平臺(tái)提供了分布式事務(wù)服務(wù)。分布式事務(wù)(Distributed Transaction)包括事務(wù)
管理器(Transaction Manager)和一個(gè)或多個(gè)支持 XA 協(xié)議的資源管理器 ( Resource
Manager )。我們可以將資源管理器看做任意類型的持久化數(shù)據(jù)存儲(chǔ);事務(wù)管理器承擔(dān)著所有事務(wù)
參與單元的協(xié)調(diào)與控制。
兩階段提交
兩階段提交主要保證了分布式事務(wù)的原子性:即所有結(jié)點(diǎn)要么全做要么全不做,所謂的兩個(gè)階段
是指:第一階段:準(zhǔn)備階段;第二階段:提交階段。
1 準(zhǔn)備階段
事務(wù)協(xié)調(diào)者(事務(wù)管理器)給每個(gè)參與者(資源管理器)發(fā)送 Prepare 消息,每個(gè)參與者要么直接返回
失敗(如權(quán)限驗(yàn)證失敗),要么在本地執(zhí)行事務(wù),寫本地的 redo 和 undo 日志,但不提交,到達(dá)一
種“萬事俱備,只欠東風(fēng)”的狀態(tài)。
2 提交階段:
如果協(xié)調(diào)者收到了參與者的失敗消息或者超時(shí),直接給每個(gè)參與者發(fā)送回滾(Rollback)消息;否則,
發(fā)送提交(Commit)消息;參與者根據(jù)協(xié)調(diào)者的指令執(zhí)行提交或者回滾操作,釋放所有事務(wù)處理過
程中使用的鎖資源。(注意:必須在最后階段釋放鎖資源)
將提交分成兩階段進(jìn)行的目的很明確,就是盡可能晚地提交事務(wù),讓事務(wù)在提交前盡可能地完成
所有能完成的工作。
總結(jié)
以上是生活随笔為你收集整理的java 分布式事务_Java核心知识 Spring原理十五 JPA 原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: les物流执行系统_【精益运营】立足智慧
- 下一篇: c 结构体在声明时赋值_C/C++编程笔