一种基于标签的分布式系统构件动态更新方法

文档序号:10488803阅读:332来源:国知局
一种基于标签的分布式系统构件动态更新方法
【专利摘要】本发明公开一种基于标签的分布式系统构件动态更新方法,包括以下步骤:发起更新请求,用户向分布式系统发送更新构件的请求,指名待更新构件的名称;添加事务标签,对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签: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日
【发明人】曹春, 马晓星, 刘华艇
【申请人】南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1