本发明专利技术公开一种基于标签的分布式系统构件动态更新方法,包括以下步骤:发起更新请求,用户向分布式系统发送更新构件的请求,指名待更新构件的名称;添加事务标签,对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO;等待更新条件满足,监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;加载新版本的构件,加载构件新版本,并处理事务。本发明专利技术实现过程简单易行,保证更新过程事务一致性,适用性广,具有广阔的市场前景。
【技术实现步骤摘要】
【专利摘要】本专利技术公开,包括以下步骤:发起更新请求,用户向分布式系统发送更新构件的请求,指名待更新构件的名称;添加事务标签,对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO;等待更新条件满足,监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;加载新版本的构件,加载构件新版本,并处理事务。本专利技术实现过程简单易行,保证更新过程事务一致性,适用性广,具有广阔的市场前景。【专利说明】
本专利技术涉及计算机应用领域,具体涉及。
技术介绍
基于构件的分布式系统旨在利用可重用的软件构件来设计和构建分布式系统。组装成分布式系统的构件,需要进行功能升级或者修复缺陷,传统的做法是在停止系统运行的状况下,开展构件的升级或是修复。但现在许多业务系统,如银行系统、购物网站系统,需要提供24/7的服务,任何时刻停止运行的代价都是巨大的。因此,这样的系统就需要一种动态更新构件的方法,能够在线完成更新构件,并且不会停止事务的运行。动态更新过程中,事务依然运行于各个构件,如果存在属于同一个分布式事务上下文的事务,它们既使用旧版本构件的服务,又使用新版本构件的服务,这样的一个分布式事务上下文就会被动态更新破坏事务的一致性。因此我们提供一种安全的更新机制,保证在更新过程中不破坏事务的一致性。目前,工业界和学术界都有动态更新构件的解决方案,这些方法的原理和所采用的技术各不相同,有些方案要求用户提供动态更新达到安全点的约束条件,然而分布式事务并发环境下,这样的约束条件不容易人为确定;有些方案要求所有受关联的构件暂停运行直到更新完成,这无疑会增加动态更新对系统业务处理的干扰。
技术实现思路
专利技术目的:本专利技术的目的在于解决现有技术中存在的不足,提供。技术方案:本专利技术的,包括以下步骤:(I)发起更新请求:用户向分布式系统发送更新构件的请求,指名待更新构件的名称;(2)添加事务标签:对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO。(3)等待更新条件满足:监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;(4)加载构件新版本:加载构件新版本,并处理事务。进一步的,所述步骤(I)中用户需要指定待更新构件的名称,并提供与现有分布式系统兼容的待更新构件的新版本。进一步的,所述步骤(2)中的判断标准为:(21)如果一个分布式事务未在待更新构件上执行,则添加标签NO;(22)如果一个分布式事务已在待更新构件上执行,则添加标签YES;进一步的,所述步骤(3)中满足更新条件为:分布式系统中并行运行的分布式事务标签为YES的事务未来不会再次在待更新构件上执行;进一步的,所述步骤(4)的具体过程为:加载用户提供的构件新版本,并投入使用。有益效果:本专利技术可在开发者或者运维人员无任何动态更新构件经验的情况下,依据提供的分布式系统构件依赖关系,动态完成构件的更新;同时,本专利技术能够保证每一个分布式事务上下文的一致性;并且,因动态更新而产生的额外开销少于现有公开方法的开销。另外,本专利技术充分考虑基于构件分布式的特点,将动态更新受关联范围缩小至一个局部,从而减少了对系统运行的干扰;本专利技术实现的更新方法,只需要对运行中的事务添加标签,不需要额外的框架或是系统支持,因此具有良好的适用性。综上所述,本专利技术实现过程简单易行,适用性广,具有广阔的市场前景。【附图说明】图1为本专利技术的流程示意图;图2为实施例中的购物网站后台业务处理系统架构图;图3为实施例中的收集受待更新构件影响事务的过程示意图;图4为实施例中的依赖构件传播解除依赖信息的过程示意图。【具体实施方式】下面对本专利技术技术方案进行详细说明,但是本专利技术的保护范围不局限于所述实施例。如图1所示,本专利技术的,包括以下步骤:(I)发起更新请求:用户向分布式系统发送更新构件的请求,指名待更新构件的名称;(2)添加事务标签:对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO。(3)等待更新条件满足:监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足; (4)加载构件新版本:加载构件新版本,并处理事务。进一步的,所述步骤(I)中用户需要指定待更新构件的名称,并提供与现有分布式系统兼容的待更新构件的新版本。进一步的,所述步骤(2)中的判断标准为:(21)如果一个分布式事务未在待更新构件上执行,则添加标签NO;(22)如果一个分布式事务已在待更新构件上执行,则添加标签YES;进一步的,所述步骤(3)中满足更新条件为:分布式系统中并行运行的分布式事务标签为YES的事务未来不会再次在待更新构件上执行;进一步的,所述步骤(4)的具体过程为:加载用户提供的构件新版本,并投入使用。实施例如图2所示,本实施例中的购物网站后台业务处理系统包括五个构件:购物网站后台业务处理系统入口构件Portal,商品数量管理构件Sale,支付管理构件Payment,数据加密解密构件Cypher,数据存储构件DB。每一次的后台业务处理,Portal创建本次业务的分布式事务上下文,然后调用Sale服务,Sale构件更新商品数量,并请求Cypher对数据加密,Sale把加密后的数据存入构件DB;完成商品数量更新后,Portal调用Payment服务,构件Payment从构件DB取出加密的数据,并请Cypher对其进行解密,最后Payment根据变更的商品数量完成支付管理功能。系统管理员在系统交互阶段指明需要更新的构件名称,本实例中假定要更新构件Cypher0分析正在运行的事务,查看他们的历史执行信息,如果一个分布式事务已经在待更新构件上执行,则为其添上标签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}。分布式系统的构件,若在其上运行的标签为YES的事务未来不会在待更新构件上执行,则向它的子构件传播confirm消息,表示其确定不再需要待更新构件旧版本。如图4所示,在事务运行一段时间后,Portal构件中标签为YES的事务{HT3}均不再使用构件Sale,则向Sale传播confi本文档来自技高网...
【技术保护点】
一种基于标签的分布式系统构件动态更新方法,其特征在于,包括以下步骤:步骤一、发起更新请求:用户向分布式系统发送更新构件的请求,指名待更新构件的名称;步骤二、添加事务标签:对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO;步骤三、等待更新条件满足:监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;步骤四、加载构件新版本:加载构件新版本,并处理事务。
【技术特征摘要】
【专利技术属性】
技术研发人员:曹春,马晓星,刘华艇,
申请(专利权)人:南京大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。