亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

智能啟用分布式事務的方法

文檔序號:6379575閱讀:506來源:國知局

專利名稱::智能啟用分布式事務的方法
技術領域
:本發(fā)明涉及一種計算機技術,具體地說是一種智能啟用分布式事務的方法。
背景技術
:事務提供一種機制將一個活動涉及的所有操作納入到一個不可分割的執(zhí)行單元,組成事務的所有操作只有在所有操作均能正常執(zhí)行的情況下方能提交,只要其中任一操作執(zhí)行失敗,都將導致整個事務的回滾。對于一個分布式事務(DistributedTransaction)來講,事務的參與者分布于網絡環(huán)境中的不同的節(jié)點。參與者、支持事務的服務器、資源服務器以及事務管理器分別位于不同的分布式系統(tǒng)的不同節(jié)點之上。由于分布式事務的邏輯更加復雜,涉及到更多組件。微軟.NET框架對分布式事務提供了支持,包括顯式事務、隱式事務、顯式分布式事務、隱式分布式事務。微軟的分布式事務基于MSDTC組件。該組件的穩(wěn)定性、可用性受環(huán)境影響程度較高。在一個業(yè)務軟件系統(tǒng)中,包含許多業(yè)務組件,在運行期,這些業(yè)務組件可以對應不同的數據訪問層組件實例。在一個業(yè)務處理中,這些業(yè)務組件按照一定的流程進行編排。這樣多個數據訪問層實例就需要協(xié)同工作,保證數據的完整、一致。要實現(xiàn)這個目標,數據庫本地事務就無法滿足需求。因為每個組件都處于一個“隱式”的調用環(huán)境中,組件的數據訪問層不能與特定的調用場景耦合。因此必須采用分布式事務才能達到目標。這樣,就帶來一個問題如果所有的組件的訪問層都與同一個數據庫通訊,那么實際的分布式事務可以簡化為數據庫、應用服務器兩個參與者。TransactionScope在文檔中宣稱只在“必要”情況下才提升事務級別(多數據庫時才使用分布式事務,如果是同一個數據庫,最好使用SqlTransaction),但是事實上不是這樣。在TransactionScope內,只要你用不同的SqlConnection對象操作DB—次以上(不管你的目標是不是同一個實例、同一個庫),都會提升事務級別到分布式事務,無疑會大大增加系統(tǒng)負擔,降低服務器性能。
發(fā)明內容本發(fā)明的技術任務是針對上述現(xiàn)有技術的不足,提供智能啟用分布式事務的方法。利用該方法可以有效解決在單數據庫場景下,因為使用分布式事務而帶來的配置、部署的復雜性,并提升系統(tǒng)性能。本發(fā)明的技術任務是按以下方式實現(xiàn)的智能啟用分布式事務的方法,對微軟.NET的分布式事務接口進行透明封裝,多個數據訪問層協(xié)同工作時,如果后臺數據庫為同一實例時,自動啟用數據庫事務,若是多個數據庫實例,則自動啟用分布式事務,并且把已經啟用的數據庫事務與分布式事務融合。上述方法的具體實現(xiàn)方法包含數據庫連接管理及分布式事務代理兩部分。I)數據庫連接管理實現(xiàn)一個數據庫連接工廠GSF1DatabaseFactory,以數據庫連接工廠GSPDatabaseFactory實現(xiàn)對數據源創(chuàng)建的管理,倉ll建數據庫連接成功后放入內部連接池;數據庫連接工廠GSF1DatabaseFactory根據連接字符串形成連接信息字段列表,再根據當前線程上下文Token形成一個索引值,根據這個索引值在內部連接池中檢索可用的數據庫連接;數據庫連接工廠GSF1DatabaseFactory的GetDatabase方法返回一個接口IGSPDatabase有執(zhí)行SQL語句的接口方法和開啟、關閉數據庫的方法,在不啟用分布式事務的情況下,由數據庫連接工廠GSF1DatabaseFactory智能管理數據庫連接的開啟和關閉;2)分布式事務代理實現(xiàn)一個虛擬分布式事務協(xié)調器=VirtualDTC,初次調用下述代碼,初始化當前調用上下文中的虛擬分布式事務作用域,VirtualTransactionScopescopel=newVirtualTransactionScope(TransactionScopeOption.Required);當前調用堆棧繼續(xù)調用上面代碼,根據TransactionScopeOption參數的值來確定虛擬分布式事務如何融合,虛擬分布式事務協(xié)調器記錄當前管理的數據庫連接,如果后續(xù)創(chuàng)建的數據庫連接與連接池中的連接信息相同,則直接使用連接池中的連接,接著比較當前正在使用的數據庫連接是否就是匹配的連接如果相同,并且事務屬性是Required,則前后兩次數據庫連接進行合并,并且增加引用計數;外部調用代碼后續(xù)試圖關閉數據庫時,由數據庫連接管理器負責減少引用計數;如果連接信息相同,但是事務屬性是RequiredNew,則內部創(chuàng)建一個顯式的分布式事務,并且把管理的內部數據庫連接登記到該顯式事務中;如果與堆棧上連接信息不同,則直接啟動顯式分布式事務,并把現(xiàn)有數據庫連接登記到分布式事務。與現(xiàn)有技術相比,本發(fā)明的智能啟用分布式事務的方法解決了在單一數據庫的環(huán)境下,由于各個數據訪問層為了保證數據的一致,而必須使用分布式事務帶來的性能損失問題。在升級為多數據庫實例時,各個數據訪問層的事務處理無需任何修改,即可自動啟用分布式事務。這樣,在單一數據庫部署架構下,就大大降低了對MSDTC組件的依賴,大大提高系統(tǒng)的穩(wěn)定性、可靠性。附圖I是本發(fā)明智能啟用分布式事務的方法中虛擬分布式事務的算法邏輯圖。具體實施例方式參照說明書附圖以具體實施例對本發(fā)明的智能啟用分布式事務的方法作以下詳細地說明。實施例本發(fā)明智能啟用分布式事務的方法的具體實現(xiàn)方案包括1)數據庫連接管理、2)分布式事務代理。I、數據庫連接管理。通常的數據庫連接創(chuàng)建代碼如下DBConnectionmyConnection=newSqlConnection(myConnString);本方法實現(xiàn)一個數據庫連接工廠GSF1DatabaseFactory,實現(xiàn)對數據源創(chuàng)建的管理,倉1J建數據庫連接成功后放入內部連接池。IGSPDatabase=GSPDatabaseFactory.GetDatabase(myConnString);這個GSF1DatabaseFactory根據連接字符串形成連接信息字段列表,再根據當前線程上下文Token形成一個索引值,根據這個索引值在內部連接池中檢索可用的數據庫連接。工廠類GSF1DatabaseFactory的GetDatabase方法返回一個接口IGSPDatabase有執(zhí)行SQL語句的接口方法和開啟、關閉數據庫的方法。在不啟用分布式事務的情況下,由GSPDatabaseFactory智能管理數據庫連接的開啟和關閉。2、分布式事務代理。分布式事務代理實現(xiàn)一個虛擬分布式事務協(xié)調器VirtualDTC。初次在調用下面代碼,初始化當前調用上下文中的虛擬分布式事務作用域。VirtualTransactionScopescopel=newVirtualTransactionScope(TransactionScopeOption.Required);如附圖I所示,當前調用堆棧繼續(xù)調用上面代碼,則會根據TransactionScopeOption參數的值來確定虛擬分布式事務如何融合。虛擬分布式事務協(xié)調器記錄當前管理的數據庫連接,如果后續(xù)創(chuàng)建的數據庫連接與連接池中的連接信息相同,則直接使用連接池中的連接,接著比較當前正在使用的數據庫連接是否就是匹配的連接如果相同,并且事務屬性是Required,則前后兩次數據庫連接進行合并,并且增加引用計數。外部調用代碼后續(xù)試圖關閉數據庫時,由數據庫連接管理器負責減少引用計數;如果連接信息相同,但是事務屬性是RequiredNew,則內部創(chuàng)建一個顯式的分布式事務;CommittableTransactionInternaltran=newCommittableTransaction();并且調用下面代碼把管理的內部數據庫連接登記到該顯式事務中InternalLocalconn.EnlistTransaction(Internaltran);如果與堆棧上連接信息不同,則直接采取上述方式,即啟動顯式分布式事務,并把現(xiàn)有數據庫連接登記到分布式事務。權利要求1.智能啟用分布式事務的方法,其特征在于對微軟.NET的分布式事務接口進行透明封裝,多個數據訪問層協(xié)同工作時,如果后臺數據庫為同一實例時,自動啟用數據庫事務,若是多個數據庫實例,則自動啟用分布式事務,并且把已經啟用的數據庫事務與分布式事務融合。2.根據權利要求I所述的智能啟用分布式事務的方法,其特征在于具體實現(xiàn)方法包含數據庫連接管理及分布式事務代理兩部分數據庫連接管理實現(xiàn)一個數據庫連接工廠GSF1DatabaseFactory,以數據庫連接工廠GSPDatabaseFactory實現(xiàn)對數據源創(chuàng)建的管理,倉Il建數據庫連接成功后放入內部連接池;數據庫連接工廠GSF1DatabaseFactory根據連接字符串形成連接信息字段列表,再根據當前線程上下文Token形成一個索引值,根據這個索引值在內部連接池中檢索可用的數據庫連接;數據庫連接工廠GSF1DatabaseFactory的GetDatabase方法返回一個接口IGSPDatabase有執(zhí)行SQL語句的接口方法和開啟、關閉數據庫的方法,在不啟用分布式事務的情況下,由數據庫連接工廠GSF1DatabaseFactory智能管理數據庫連接的開啟和關閉;分布式事務代理實現(xiàn)一個虛擬分布式事務協(xié)調器=VirtualDTC,初次調用下述代碼,初始化當前調用上下文中的虛擬分布式事務作用域,VirtualTransactionScopescopel=newVirtualTransactionScope(TransactionScopeOption.Required);當前調用堆棧繼續(xù)調用上述代碼,根據TransactionScopeOption參數的值來確定虛擬分布式事務如何融合,虛擬分布式事務協(xié)調器記錄當前管理的數據庫連接,如果后續(xù)創(chuàng)建的數據庫連接與連接池中的連接信息相同,則直接使用連接池中的連接,接著比較當前正在使用的數據庫連接是否就是匹配的連接如果相同,并且事務屬性是Required,則前后兩次數據庫連接進行合并,并且增加引用計數;外部調用代碼后續(xù)試圖關閉數據庫時,由數據庫連接管理器負責減少引用計數;如果連接信息相同,但是事務屬性是RequiredNew,則內部創(chuàng)建一個顯式的分布式事務,并且把管理的內部數據庫連接登記到該顯式事務中;如果與堆棧上連接信息不同,則直接啟動顯式分布式事務,并把現(xiàn)有數據庫連接登記到分布式事務。全文摘要本發(fā)明公開了一種智能啟用分布式事務的方法,屬于計算機領域。該方法對微軟NET的分布式事務接口進行透明封裝,多個數據訪問層協(xié)同工作時,如果后臺數據庫為同一實例時,自動啟用數據庫事務,若是多個數據庫實例,則自動啟用分布式事務,并且把已經啟用的數據庫事務與分布式事務融合。與現(xiàn)有技術相比,本發(fā)明的智能啟用分布式事務的方法具有結構清晰、應用方便、兼容標準事務接口等特點,廣泛應用于分布式數據訪問架構之中,具有很好的推廣應用價值。文檔編號G06F17/30GK102945264SQ201210408530公開日2013年2月27日申請日期2012年10月24日優(yōu)先權日2012年10月24日發(fā)明者趙啟杰申請人:浪潮集團山東通用軟件有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1