一種基于標簽的分布式系統構件動態更新方法
【專利摘要】本發明公開一種基于標簽的分布式系統構件動態更新方法,包括以下步驟:發起更新請求,用戶向分布式系統發送更新構件的請求,指名待更新構件的名稱;添加事務標簽,對正在運行的事務進行分析,如果一個事務已經調用了待更新的構件,則為該事務添上標簽:YES;否則為該事務添上標簽:NO;等待更新條件滿足,監控正在運行的事務,當所有標簽為YES的事務不再使用待更新構件的舊版本時,更新構件的條件滿足;加載新版本的構件,加載構件新版本,并處理事務。本發明實現過程簡單易行,保證更新過程事務一致性,適用性廣,具有廣闊的市場前景。
【專利說明】
一種基于標簽的分布式系統構件動態更新方法
技術領域
[0001]本發明涉及計算機應用領域,具體涉及一種基于標簽的分布式系統構件動態更新方法。
【背景技術】
[0002]基于構件的分布式系統旨在利用可重用的軟件構件來設計和構建分布式系統。組裝成分布式系統的構件,需要進行功能升級或者修復缺陷,傳統的做法是在停止系統運行的狀況下,開展構件的升級或是修復。但現在許多業務系統,如銀行系統、購物網站系統,需要提供24/7的服務,任何時刻停止運行的代價都是巨大的。因此,這樣的系統就需要一種動態更新構件的方法,能夠在線完成更新構件,并且不會停止事務的運行。
[0003]動態更新過程中,事務依然運行于各個構件,如果存在屬于同一個分布式事務上下文的事務,它們既使用舊版本構件的服務,又使用新版本構件的服務,這樣的一個分布式事務上下文就會被動態更新破壞事務的一致性。因此我們提供一種安全的更新機制,保證在更新過程中不破壞事務的一致性。
[0004]目前,工業界和學術界都有動態更新構件的解決方案,這些方法的原理和所采用的技術各不相同,有些方案要求用戶提供動態更新達到安全點的約束條件,然而分布式事務并發環境下,這樣的約束條件不容易人為確定;有些方案要求所有受關聯的構件暫停運行直到更新完成,這無疑會增加動態更新對系統業務處理的干擾。
【發明內容】
[0005]發明目的:本發明的目的在于解決現有技術中存在的不足,提供一種基于標簽的分布式系統構件動態更新方法。
[0006]技術方案:本發明的一種基于標簽的分布式系統構件動態更新方法,包括以下步驟:
[0007](I)發起更新請求:用戶向分布式系統發送更新構件的請求,指名待更新構件的名稱;
[0008](2)添加事務標簽:對正在運行的事務進行分析,如果一個事務已經調用了待更新的構件,則為該事務添上標簽:YES;否則為該事務添上標簽:NO。
[0009](3)等待更新條件滿足:監控正在運行的事務,當所有標簽為YES的事務不再使用待更新構件的舊版本時,更新構件的條件滿足;
[0010](4)加載構件新版本:加載構件新版本,并處理事務。
[0011]進一步的,所述步驟(I)中用戶需要指定待更新構件的名稱,并提供與現有分布式系統兼容的待更新構件的新版本。
[0012]進一步的,所述步驟(2)中的判斷標準為:
[0013](21)如果一個分布式事務未在待更新構件上執行,則添加標簽NO;
[0014](22)如果一個分布式事務已在待更新構件上執行,則添加標簽YES;
[0015]進一步的,所述步驟(3)中滿足更新條件為:分布式系統中并行運行的分布式事務標簽為YES的事務未來不會再次在待更新構件上執行;
[0016]進一步的,所述步驟(4)的具體過程為:加載用戶提供的構件新版本,并投入使用。
[0017]有益效果:本發明可在開發者或者運維人員無任何動態更新構件經驗的情況下,依據提供的分布式系統構件依賴關系,動態完成構件的更新;同時,本發明能夠保證每一個分布式事務上下文的一致性;并且,因動態更新而產生的額外開銷少于現有公開方法的開銷。
[0018]另外,本發明充分考慮基于構件分布式的特點,將動態更新受關聯范圍縮小至一個局部,從而減少了對系統運行的干擾;本發明實現的更新方法,只需要對運行中的事務添加標簽,不需要額外的框架或是系統支持,因此具有良好的適用性。
[0019]綜上所述,本發明實現過程簡單易行,適用性廣,具有廣闊的市場前景。
【附圖說明】
[0020]圖1為本發明的流程示意圖;
[0021]圖2為實施例中的購物網站后臺業務處理系統架構圖;
[0022]圖3為實施例中的收集受待更新構件影響事務的過程示意圖;
[0023]圖4為實施例中的依賴構件傳播解除依賴信息的過程示意圖。
【具體實施方式】
[0024]下面對本發明技術方案進行詳細說明,但是本發明的保護范圍不局限于所述實施例。
[0025]如圖1所示,本發明的一種基于標簽的分布式系統構件動態更新方法,包括以下步驟:
[0026](I)發起更新請求:用戶向分布式系統發送更新構件的請求,指名待更新構件的名稱;
[0027](2)添加事務標簽:對正在運行的事務進行分析,如果一個事務已經調用了待更新的構件,則為該事務添上標簽:YES;否則為該事務添上標簽:NO。
[0028](3)等待更新條件滿足:監控正在運行的事務,當所有標簽為YES的事務不再使用待更新構件的舊版本時,更新構件的條件滿足;
[0029 ] (4)加載構件新版本:加載構件新版本,并處理事務。
[0030]進一步的,所述步驟(I)中用戶需要指定待更新構件的名稱,并提供與現有分布式系統兼容的待更新構件的新版本。
[0031]進一步的,所述步驟(2)中的判斷標準為:
[0032](21)如果一個分布式事務未在待更新構件上執行,則添加標簽NO;
[0033](22)如果一個分布式事務已在待更新構件上執行,則添加標簽YES;
[0034]進一步的,所述步驟(3)中滿足更新條件為:分布式系統中并行運行的分布式事務標簽為YES的事務未來不會再次在待更新構件上執行;
[0035]進一步的,所述步驟(4)的具體過程為:加載用戶提供的構件新版本,并投入使用。
[0036]實施例
[0037]如圖2所示,本實施例中的購物網站后臺業務處理系統包括五個構件:購物網站后臺業務處理系統入口構件Portal,商品數量管理構件Sale,支付管理構件Payment,數據加密解密構件Cypher,數據存儲構件DB。每一次的后臺業務處理,Portal創建本次業務的分布式事務上下文,然后調用Sale服務,Sale構件更新商品數量,并請求Cypher對數據加密,Sale把加密后的數據存入構件DB;完成商品數量更新后,Portal調用Payment服務,構件Payment從構件DB取出加密的數據,并請Cypher對其進行解密,最后Payment根據變更的商品數量完成支付管理功能。
[0038]系統管理員在系統交互階段指明需要更新的構件名稱,本實例中假定要更新構件Cypher0
[0039]分析正在運行的事務,查看他們的歷史執行信息,如果一個分布式事務已經在待更新構件上執行,則為其添上標簽YES,否則添上標簽NO。首先Cypher先分析本地運行事務集合LS中的事務,因為Cypher是待更新構件,所以Cypher本地運行事務集合LS中的事務均為YES類型,如圖3所示,構件Cypher上運行的事務T3為YES類型。構件Sale分析本地運行事務集合LS,因為事務T2E經調用Cypher,事務T3正在調用Cypher,所以這兩者都為YES類型,而事務T4沒有調用Cypher,所以T4為NO類型。構件Payment分析本地運行事務集合LS,因為事務!^沒有調用Cypher,所以T1SNO類型。構件Portal分析本地運行事務集合LS,因為T1已經調用構件Sale,而Sale會傳播事務Ti調用Cypher,因此事務Ti為YES類型,而事務T2、T3、T4正在調用構件Sale,未曾結束,所以從構件Portal角度看,它們都是NO類型。綜上所述,該實例在此時更新,已經在待更新構件執行的分布式事務集合為IT1, T2,T3}。
[0040]分布式系統的構件,若在其上運行的標簽為YES的事務未來不會在待更新構件上執行,則向它的子構件傳播confirm消息,表示其確定不再需要待更新構件舊版本。如圖4所示,在事務運行一段時間后,Portal構件中標簽為YES的事務{HT3}均不再使用構件Sale,則向Sale傳播confirm消息。在收到所有父構件的confirm消息后,檢查本地運行的事務集合,若所有標簽為YES的事務不再依賴該構件的子構件,則向它的子構件傳播confirm消息,表示其確定不再需要更新待更新構件舊版本的服務。如圖4所示,在Sale構件收到Portal傳播來的confirm消息后,監控本地標簽為YES的事務,當這些事務YS= {T2J3}不再調用構件Cypher的服務,則向Cypher構件傳播conf irm消息。
[0041 ] 同理,如圖4所示,在事務運行一段時間后,Portal構件中標簽為YES的事務{T1,T2,T3}均不再使用構件Payment,則向Payment傳播conf irm消息。在Payment構件收到Portal傳播來的conf irm消息后,監控本地標簽為YES的事務,當這些事務YS= {Ti}不再調用構件Cypher的服務,則向Cypher構件傳播conf irm消息。
[0042]當待更新構件得到所有依賴它的父構件的confirm消息后,待更新構件監控本地標簽為YES的事務集合,當且僅當本地標簽為YES的事務全部完成后,滿足了更新條件。
[0043]當分布式系統達到更新條件后,加載待更新構件的新版本,開始執行新的事務。至此,完成了基于標簽的分布式系統構件動態更新。
[0044]以上結合附圖和具體實施例對本發明的實施方法作了詳細的說明,但是本發明不限于上述實施方式,在所屬技術領域普通技術人員所具備的知識范圍內,還可以在不脫離本發明宗旨的前提下做出各種常規變化,但均在本發明權利要求書的保護范圍之內。
【主權項】
1.一種基于標簽的分布式系統構件動態更新方法,其特征在于,包括以下步驟: 步驟一、發起更新請求:用戶向分布式系統發送更新構件的請求,指名待更新構件的名稱; 步驟二、添加事務標簽:對正在運行的事務進行分析,如果一個事務已經調用了待更新的構件,則為該事務添上標簽:YES;否則為該事務添上標簽:NO; 步驟三、等待更新條件滿足:監控正在運行的事務,當所有標簽為YES的事務不再使用待更新構件的舊版本時,更新構件的條件滿足; 步驟四、加載構件新版本:加載構件新版本,并處理事務。2.根據權利要求1所述的基于標簽的分布式系統構件動態更新方法,其特征在于:所述步驟一中用戶需要指定待更新構件的名稱,并提供與現有分布式系統兼容的待更新構件的新版本。3.根據權利要求1所述的基于標簽的分布式系統構件動態更新方法,其特征在于,所述步驟二中的判斷標準為: 步驟21、如果一個分布式事務未在待更新構件上執行,則添加標簽NO; 步驟22、如果一個分布式事務已在待更新構件上執行,則添加標簽YES。4.根據權利要求1所述的基于標簽的分布式系統構件動態更新方法,其特征在于,所述步驟三中滿足更新條件為:分布式系統中并行運行的分布式事務標簽為YES的事務未來不會再次在待更新構件上執行。5.根據權利要求1所述的基于標簽的分布式系統構件動態更新方法,其特征在于,所述步驟四的具體過程為:加載用戶提供的構件新版本,并投入使用。
【文檔編號】G06F9/46GK105843673SQ201610143247
【公開日】2016年8月10日
【申請日】2016年3月14日
【發明人】曹春, 馬曉星, 劉華艇
【申請人】南京大學