本發明涉及計算機技術領域,特別是涉及一種分布式系統事務管理方法及裝置。
背景技術:
分布式系統是建立在網絡之上的系統,它可以將一個龐大復雜的系統分解為若干個小的服務模塊,各服務模塊之間通過遠程調用的方式互相通信,協同處理業務。隨著網絡系統架構的演進,基于分布式系統的靈活性和可插拔的特性,越來越受到開發者的青睞。
對于傳統的單節點網絡系統,由于是單節點部署,因此可以使用本地事務進行事務管理,來保證數據的一致性。而對于分布式系統,每一服務模塊作為一個獨立系統擁有自己的事務管理機制,當發生模塊和模塊之間的調用時,就必須解決因為其調用方執行發生異常被調用方需回滾自己數據,或者被調用方發生異常調用方需回滾數據的問題,否則會導致數據的不一致。舉例來說,服務a中的業務是在數據庫中插入一條數據,然后調用服務b的業務方法,服務b的業務也是在數據庫中插入一條數據。假設服務b的方法在執行過程中發生異常,那么服務a中之前插入的數據需要從數據庫中刪除,避免臟數據的出現。而整個過程中服務a和服務b是相互隔離的,如何通知服務a自動完成數據的回滾操作是需要解決的問題。
現有技術中,分布式系統主流采用的事務管理方案是兩階段提交和三階段提交,但這兩種方案都存在同步阻塞問題,導致實現復雜,還存在性能較差的弊端。
技術實現要素:
本發明的目的是提供一種分布式系統事務管理方法及裝置,實現了各服務模塊間數據的一致性,并可克服現有方法存在的弊端。
為解決上述技術問題,本發明提供如下技術方案:
一種分布式系統事務管理方法,包括:
監測參與業務活動的主服務模塊、各從服務模塊的操作是否正常,所述主服務模塊用于發起并完成整個業務活動,所述從服務模塊用于提供可被調用的業務方法;
若各服務模塊的操作都正常,則確認提交所述業務活動,控制各服務模塊執行確認操作;
若至少一個服務模塊的操作出現異常,則取消提交所述業務活動,控制各服務模塊執行取消操作。
可選地,還包括:對所述主服務模塊預配置確認操作方法和取消操作方法,對所述從服務模塊預配置確認操作方法和取消操作方法,所述確認操作方法指服務模塊執行業務活動要進行的處理邏輯,所述取消操作方法指服務模塊取消執行業務活動要進行的處理邏輯。
可選地,當監測到出現未預知的問題阻斷事務進行時,以預設方式恢復事務。
可選地,所述預設方式為:以預設時間間隔恢復事務,當恢復事務的次數達到預設最大次數時,停止恢復。
可選地,還包括:對所述主服務模塊與各所述從服務模塊之間進行調用的調用信息保存,并將所述調用信息展示給用戶。
一種分布式系統事務管理裝置,包括:
監測模塊,用于監測參與業務活動的主服務模塊、各從服務模塊的操作是否正常,所述主服務模塊用于發起并完成整個業務活動,所述從服務模塊用于提供可被調用的業務方法;
控制模塊,用于若各服務模塊的操作都正常,則確認提交所述業務活動,控制各服務模塊執行確認操作;若至少一個服務模塊的操作出現異常,則取消提交所述業務活動,控制各服務模塊執行取消操作。
可選地,還包括:
配置模塊,用于對所述主服務模塊預配置確認操作方法和取消操作方法,對所述從服務模塊預配置確認操作方法和取消操作方法,所述確認操作方法指服務模塊執行業務活動要進行的處理邏輯,所述取消操作方法指服務模塊取消執行業務活動要進行的處理邏輯。
可選地,還包括:
事務恢復模塊,用于當監測到出現未預知的問題阻斷事務進行時,以預設方式恢復事務。
可選地,所述預設方式為:以預設時間間隔恢復事務,當恢復事務的次數達到預設最大次數時,停止恢復。
可選地,還包括:
數據庫,用于對所述主服務模塊與各所述從服務模塊之間進行調用的調用信息保存;
控制臺,用于將所述調用信息展示給用戶。
由上述技術方案可知,本發明所提供的分布式系統事務管理方法及裝置,監測參與業務活動的主服務模塊、各從服務模塊的操作是否正常,若各服務模塊的操作都正常,則確認提交所述業務活動,控制各服務模塊執行確認操作;若至少一個服務模塊的操作出現異常,則取消提交所述業務活動,控制各服務模塊執行取消操作,取消已執行的業務,恢復數據,從而保證了各服務模塊之間數據的一致性。
本發明分布式系統事務管理方法及裝置,實現了各服務模塊間數據的一致性,與現有方法相比,克服了現有方法存在的實施復雜,性能較差的弊端。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的一種分布式系統事務管理方法的示意圖;
圖2為本發明實施例中分布式系統的示意圖;
圖3為本發明實施例提供的一種分布式系統事務管理裝置的示意圖;
圖4為本發明實施例中分布式系統事務管理裝置的連接示意圖。
具體實施方式
為了使本技術領域的人員更好地理解本發明中的技術方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
請參考圖1,本發明實施例提供的一種分布式系統事務管理方法,包括:
s10:監測參與業務活動的主服務模塊、各從服務模塊的操作是否正常,所述主服務模塊用于發起并完成整個業務活動,所述從服務模塊用于提供可被調用的業務方法。
可參考圖2,在分布式系統中,一個完整的業務活動由一個主服務模塊20和若干從服務模塊21組成,其中,主服務模塊20用于發起并完成整個業務活動,從服務模塊21用于提供可被調用的業務方法。
在主服務模塊20發起一個業務活動后,主服務模塊20和各從服務模塊21根據該業務活動進行相應的一些操作。
其中,從服務模塊21進行的操作包括:在主服務模塊20發起業務活動后,從服務模塊21為所述業務活動預留資源。
在此過程中,監測主服務模塊20、各從服務模塊21進行的操作,并日志記錄各服務模塊進行的操作。
優選的,可以將記錄的各服務模塊的操作日志記錄存儲在數據庫中。
s11:若各服務模塊的操作都正常,則確認提交所述業務活動,控制各服務模塊執行確認操作。
這里所說的確認操作是指確認執行業務活動。
若監測到各服務模塊,包括主服務模塊20和從服務模塊21,進行操作都正常,則確認提交所述業務活動,控制主服務模塊20、各從服務模塊21確認執行業務活動。這樣,在主服務模塊和各從服務模塊進行操作都正常時,保證各服務模塊都執行業務活動,使各服務模塊之間數據保持一致。
在具體實施時,會預先在主服務模塊20中配置確認操作方法,會預先在從服務模塊21中配置確認操作方法,確認操作方法指服務模塊執行業務活動要進行的處理邏輯。
s12:若至少一個服務模塊的操作出現異常,則取消提交所述業務活動,控制各服務模塊執行取消操作。
這里所說的取消操作是指取消執行業務活動。
若監測到各服務模塊,包括主服務模塊20和從服務模塊21中至少一個進行操作出現異常時,則取消提交所述業務活動,控制主服務模塊20、各從服務模塊21取消執行業務活動。這樣,當各服務模塊中至少一個操作出現異常,則對所有參與業務活動的服務模塊取消執行業務活動,保證所有服務模塊之間數據的一致性。
在具體實施時,會預先在主服務模塊20中配置取消操作方法,會預先在從服務模塊21中配置取消操作方法,取消操作方法指服務模塊取消執行業務活動要進行的處理邏輯。
可以看出,本實施例分布式系統事務管理方法,通過監測參與業務活動的主服務模塊、各從服務模塊的操作是否正常,當至少一個服務模塊的操作出現異常,則取消提交業務活動,各服務模塊執行取消操作。取消已執行的業務,恢復數據,從而保證各服務模塊之間數據的一致性。
在本分布式系統事務管理方法的又一實施例中,在上述實施例描述內容的基礎上,還包括:當監測到出現未預知的問題阻斷事務進行時,以預設方式恢復事務。這樣保證業務活動和數據的一致性。
在具體實施時,所述預設方式可以是:以預設時間間隔恢復事務,當恢復事務的次數達到預設最大次數時,停止恢復。
當監測到出現不可預知的問題,導致事務活動執行中斷時,會定期恢復事務,具體為以預設時間間隔定期恢復事務,并當恢復事務的次數達到預設最大次數時停止恢復,即在恢復事務的執行次數超過預設最大次數時不再進行恢復,示例性的,用戶可設置恢復事務的時間間隔以及預設最大次數,比如時間間隔為120s,預設最大次數為30次。
另外優選的,本方法中,開發人員可以不采用默認的恢復方式,如果想自定義恢復策略可以按照需求自行配置。
由此可見本實施例分布式系統事務管理方法提供了方案事務的安全保障。可以防止因為不可抗拒因素比如斷電導致的事務中斷。
進一步的,本方法還包括:對所述主服務模塊與各所述從服務模塊之間進行調用的調用信息保存,并將所述調用信息展示給用戶。
在本分布式系統中設置數據庫,將主服務模塊與各從服務模塊之間進行調用的調用信息存儲在數據庫中,成為本事務管理方案的數據基礎。
在本分布式系統中可設置控制臺,將主服務模塊與各從服務模塊之間的調用信息展示到控制臺,從而管理員可以通過控制臺查詢調用信息,查看事務的執行情況。并能夠人為干預事務的執行,能夠通過控制臺控制選擇某服務模塊作為主服務模塊,控制主服務模塊發起業務活動,并選擇被主服務模塊調用的從服務模塊。
因此,本實施例分布式系統事務管理方法對事務管理具有可視性,管理方便,使得在每次發起一次跨服務調用時,能夠在數據庫中保留調用記錄,方便管理、查看和干預。
相應的,請參考圖3,本發明實施例還提供一種分布式系統事務管理裝置,包括:
監測模塊30,用于監測參與業務活動的主服務模塊、各從服務模塊的操作是否正常,所述主服務模塊用于發起并完成整個業務活動,所述從服務模塊用于提供可被調用的業務方法;
控制模塊31,用于若各服務模塊的操作都正常,則確認提交所述業務活動,控制各服務模塊執行確認操作;若至少一個服務模塊的操作出現異常,則取消提交所述業務活動,控制各服務模塊執行取消操作。
可以看出,本實施例分布式系統事務管理裝置,包括監測模塊和控制模塊,監測參與業務活動的主服務模塊、各從服務模塊的操作是否正常,若各服務模塊的操作都正常,則確認提交所述業務活動,控制各服務模塊執行確認操作;若至少一個服務模塊的操作出現異常,則取消提交所述業務活動,控制各服務模塊執行取消操作,取消已執行的業務,恢復數據,從而保證了各服務模塊之間數據的一致性。因此,本實施例分布式系統事務管理裝置,實現了各服務模塊間數據的一致性,與現有方法相比,克服了現有方法存在的實施復雜,性能較差的弊端。
可參考圖2和圖4,在分布式系統中,一個完整的業務活動由一個主服務模塊20和若干從服務模塊21組成,其中,主服務模塊20用于發起并完成整個業務活動,從服務模塊21用于提供可被調用的業務方法。
在主服務模塊20發起一個業務活動后,主服務模塊20和各從服務模塊21根據該業務活動進行相應的一些操作。
在此過程中,分布式系統事務管理裝置監測模塊30監測主服務模塊20、各從服務模塊21進行的操作,并日志記錄各服務模塊進行的操作。
根據監測模塊30監測的情況,若各服務模塊的操作都正常,控制模塊31則確認提交所述業務活動,控制各服務模塊執行確認操作;若至少一個服務模塊的操作出現異常,控制模塊31則取消提交所述業務活動,控制各服務模塊執行取消操作。
本實施例裝置中,還包括:
配置模塊,用于對所述主服務模塊預配置確認操作方法和取消操作方法,對所述從服務模塊預配置確認操作方法和取消操作方法,所述確認操作方法指服務模塊執行業務活動要進行的處理邏輯,所述取消操作方法指服務模塊取消執行業務活動要進行的處理邏輯。
本實施例分布式系統事務管理裝置中,還包括:
事務恢復模塊,用于當監測到出現未預知的問題阻斷事務進行時,以預設方式恢復事務。
當監測到出現不可預知的問題,導致事務活動執行中斷時,會定期恢復事務,這樣保證業務活動和數據的一致性。
在具體實施時,預設方式可以是:以預設時間間隔恢復事務,當恢復事務的次數達到預設最大次數時,停止恢復。
當監測到出現不可預知的問題時,會定期恢復事務,以預設時間間隔定期恢復事務,并當恢復事務的次數達到預設最大次數時停止恢復,即在恢復事務的執行次數超過預設最大次數時不再進行恢復,示例性的,用戶可設置恢復事務的時間間隔以及預設最大次數,比如時間間隔為120s,預設最大次數為30次。
另外優選的,開發人員可以不采用默認的恢復方式,如果想自定義恢復策略可以按照需求自行配置。
進一步的,本實施例分布式系統事務管理裝置,還包括:
數據庫,用于對所述主服務模塊與各所述從服務模塊之間進行調用的調用信息保存;
控制臺,用于將所述調用信息展示給用戶。
將主服務模塊與各從服務模塊之間的調用信息展示到控制臺,使管理員可以通過控制臺查詢調用信息,查看事務的執行情況。并能夠人為干預事務的執行,能夠通過控制臺控制選擇某服務模塊作為主服務模塊,控制主服務模塊發起業務活動,并選擇調用的從服務模塊。
因此,本實施例分布式系統事務管理裝置對事務管理具有可視性,管理方便,使得在每次發起一次跨服務調用時,能夠在數據庫中保留調用記錄,方便管理、查看和干預。
以上對本發明所提供的一種分布式系統事務管理方法及裝置進行了詳細介紹。本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以對本發明進行若干改進和修飾,這些改進和修飾也落入本發明權利要求的保護范圍內。