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

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

Info

Publication number
CN105843673A
CN105843673A CN201610143247.8A CN201610143247A CN105843673A CN 105843673 A CN105843673 A CN 105843673A CN 201610143247 A CN201610143247 A CN 201610143247A CN 105843673 A CN105843673 A CN 105843673A
Authority
CN
China
Prior art keywords
component
label
affairs
updated
distributed system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610143247.8A
Other languages
English (en)
Inventor
曹春
马晓星
刘华艇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201610143247.8A priority Critical patent/CN105843673A/zh
Publication of CN105843673A publication Critical patent/CN105843673A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种基于标签的分布式系统构件动态更新方法,包括以下步骤:发起更新请求,用户向分布式系统发送更新构件的请求,指名待更新构件的名称;添加事务标签,对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO;等待更新条件满足,监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;加载新版本的构件,加载构件新版本,并处理事务。本发明实现过程简单易行,保证更新过程事务一致性,适用性广,具有广阔的市场前景。

Description

一种基于标签的分布式系统构件动态更新方法
技术领域
本发明涉及计算机应用领域,具体涉及一种基于标签的分布式系统构件动态更新方法。
背景技术
基于构件的分布式系统旨在利用可重用的软件构件来设计和构建分布式系统。组装成分布式系统的构件,需要进行功能升级或者修复缺陷,传统的做法是在停止系统运行的状况下,开展构件的升级或是修复。但现在许多业务系统,如银行系统、购物网站系统,需要提供24/7的服务,任何时刻停止运行的代价都是巨大的。因此,这样的系统就需要一种动态更新构件的方法,能够在线完成更新构件,并且不会停止事务的运行。
动态更新过程中,事务依然运行于各个构件,如果存在属于同一个分布式事务上下文的事务,它们既使用旧版本构件的服务,又使用新版本构件的服务,这样的一个分布式事务上下文就会被动态更新破坏事务的一致性。因此我们提供一种安全的更新机制,保证在更新过程中不破坏事务的一致性。
目前,工业界和学术界都有动态更新构件的解决方案,这些方法的原理和所采用的技术各不相同,有些方案要求用户提供动态更新达到安全点的约束条件,然而分布式事务并发环境下,这样的约束条件不容易人为确定;有些方案要求所有受关联的构件暂停运行直到更新完成,这无疑会增加动态更新对系统业务处理的干扰。
发明内容
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种基于标签的分布式系统构件动态更新方法。
技术方案:本发明的一种基于标签的分布式系统构件动态更新方法,包括以下步骤:
(1)发起更新请求:用户向分布式系统发送更新构件的请求,指名待更新构件的名称;
(2)添加事务标签:对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO。
(3)等待更新条件满足:监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;
(4)加载构件新版本:加载构件新版本,并处理事务。
进一步的,所述步骤(1)中用户需要指定待更新构件的名称,并提供与现有分布式系统兼容的待更新构件的新版本。
进一步的,所述步骤(2)中的判断标准为:
(21)如果一个分布式事务未在待更新构件上执行,则添加标签NO;
(22)如果一个分布式事务已在待更新构件上执行,则添加标签YES;
进一步的,所述步骤(3)中满足更新条件为:分布式系统中并行运行的分布式事务标签为YES的事务未来不会再次在待更新构件上执行;
进一步的,所述步骤(4)的具体过程为:加载用户提供的构件新版本,并投入使用。
有益效果:本发明可在开发者或者运维人员无任何动态更新构件经验的情况下,依据提供的分布式系统构件依赖关系,动态完成构件的更新;同时,本发明能够保证每一个分布式事务上下文的一致性;并且,因动态更新而产生的额外开销少于现有公开方法的开销。
另外,本发明充分考虑基于构件分布式的特点,将动态更新受关联范围缩小至一个局部,从而减少了对系统运行的干扰;本发明实现的更新方法,只需要对运行中的事务添加标签,不需要额外的框架或是系统支持,因此具有良好的适用性。
综上所述,本发明实现过程简单易行,适用性广,具有广阔的市场前景。
附图说明
图1为本发明的流程示意图;
图2为实施例中的购物网站后台业务处理系统架构图;
图3为实施例中的收集受待更新构件影响事务的过程示意图;
图4为实施例中的依赖构件传播解除依赖信息的过程示意图。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
如图1所示,本发明的一种基于标签的分布式系统构件动态更新方法,包括以下步骤:
(1)发起更新请求:用户向分布式系统发送更新构件的请求,指名待更新构件的名称;
(2)添加事务标签:对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO。
(3)等待更新条件满足:监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;
(4)加载构件新版本:加载构件新版本,并处理事务。
进一步的,所述步骤(1)中用户需要指定待更新构件的名称,并提供与现有分布式系统兼容的待更新构件的新版本。
进一步的,所述步骤(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根据变更的商品数量完成支付管理功能。
系统管理员在系统交互阶段指明需要更新的构件名称,本实例中假定要更新构件Cypher。
分析正在运行的事务,查看他们的历史执行信息,如果一个分布式事务已经在待更新构件上执行,则为其添上标签YES,否则添上标签NO。首先Cypher先分析本地运行事务集合LS中的事务,因为Cypher是待更新构件,所以Cypher本地运行事务集合LS中的事务均为YES类型,如图3所示,构件Cypher上运行的事务T3为YES类型。构件Sale分析本地运行事务集合LS,因为事务T2已经调用Cypher,事务T3正在调用Cypher,所以这两者都为YES类型,而事务T4没有调用Cypher,所以T4为NO类型。构件Payment分析本地运行事务集合LS,因为事务T1没有调用Cypher,所以T1为NO类型。构件Portal分析本地运行事务集合LS,因为T1已经调用构件Sale,而Sale会传播事务T1调用Cypher,因此事务T1为YES类型,而事务T2、T3、T4正在调用构件Sale,未曾结束,所以从构件Portal角度看,它们都是NO类型。综上所述,该实例在此时更新,已经在待更新构件执行的分布式事务集合为{T1,T2,T3}。
分布式系统的构件,若在其上运行的标签为YES的事务未来不会在待更新构件上执行,则向它的子构件传播confirm消息,表示其确定不再需要待更新构件旧版本。如图4所示,在事务运行一段时间后,Portal构件中标签为YES的事务{T1,T2,T3}均不再使用构件Sale,则向Sale传播confirm消息。在收到所有父构件的confirm消息后,检查本地运行的事务集合,若所有标签为YES的事务不再依赖该构件的子构件,则向它的子构件传播confirm消息,表示其确定不再需要更新待更新构件旧版本的服务。如图4所示,在Sale构件收到Portal传播来的confirm消息后,监控本地标签为YES的事务,当这些事务YS={T2,T3}不再调用构件Cypher的服务,则向Cypher构件传播confirm消息。
同理,如图4所示,在事务运行一段时间后,Portal构件中标签为YES的事务{T1,T2,T3}均不再使用构件Payment,则向Payment传播confirm消息。在Payment构件收到Portal传播来的confirm消息后,监控本地标签为YES的事务,当这些事务YS={T1}不再调用构件Cypher的服务,则向Cypher构件传播confirm消息。
当待更新构件得到所有依赖它的父构件的confirm消息后,待更新构件监控本地标签为YES的事务集合,当且仅当本地标签为YES的事务全部完成后,满足了更新条件。
当分布式系统达到更新条件后,加载待更新构件的新版本,开始执行新的事务。至此,完成了基于标签的分布式系统构件动态更新。
以上结合附图和具体实施例对本发明的实施方法作了详细的说明,但是本发明不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种常规变化,但均在本发明权利要求书的保护范围之内。

Claims (5)

1.一种基于标签的分布式系统构件动态更新方法,其特征在于,包括以下步骤:
步骤一、发起更新请求:用户向分布式系统发送更新构件的请求,指名待更新构件的名称;
步骤二、添加事务标签:对正在运行的事务进行分析,如果一个事务已经调用了待更新的构件,则为该事务添上标签:YES;否则为该事务添上标签:NO;
步骤三、等待更新条件满足:监控正在运行的事务,当所有标签为YES的事务不再使用待更新构件的旧版本时,更新构件的条件满足;
步骤四、加载构件新版本:加载构件新版本,并处理事务。
2.根据权利要求1所述的基于标签的分布式系统构件动态更新方法,其特征在于:所述步骤一中用户需要指定待更新构件的名称,并提供与现有分布式系统兼容的待更新构件的新版本。
3.根据权利要求1所述的基于标签的分布式系统构件动态更新方法,其特征在于,所述步骤二中的判断标准为:
步骤21、如果一个分布式事务未在待更新构件上执行,则添加标签NO;
步骤22、如果一个分布式事务已在待更新构件上执行,则添加标签YES。
4.根据权利要求1所述的基于标签的分布式系统构件动态更新方法,其特征在于,所述步骤三中满足更新条件为:分布式系统中并行运行的分布式事务标签为YES的事务未来不会再次在待更新构件上执行。
5.根据权利要求1所述的基于标签的分布式系统构件动态更新方法,其特征在于,所述步骤四的具体过程为:加载用户提供的构件新版本,并投入使用。
CN201610143247.8A 2016-03-14 2016-03-14 一种基于标签的分布式系统构件动态更新方法 Pending CN105843673A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610143247.8A CN105843673A (zh) 2016-03-14 2016-03-14 一种基于标签的分布式系统构件动态更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610143247.8A CN105843673A (zh) 2016-03-14 2016-03-14 一种基于标签的分布式系统构件动态更新方法

Publications (1)

Publication Number Publication Date
CN105843673A true CN105843673A (zh) 2016-08-10

Family

ID=56586987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610143247.8A Pending CN105843673A (zh) 2016-03-14 2016-03-14 一种基于标签的分布式系统构件动态更新方法

Country Status (1)

Country Link
CN (1) CN105843673A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843969A (zh) * 2017-01-23 2017-06-13 北京晶海科技有限公司 一种在持续服务中更新软件的方法及系统
CN108121574A (zh) * 2016-11-29 2018-06-05 阿里巴巴集团控股有限公司 一种内核模块的热升级方法、装置及虚拟机系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673323B1 (en) * 1998-10-28 2010-03-02 Bea Systems, Inc. System and method for maintaining security in a distributed computer network
CN101963913A (zh) * 2010-11-04 2011-02-02 南京大学 一种基于事务的构件在线演化方法
CN103500084A (zh) * 2013-07-11 2014-01-08 南京大学 一种支持软件动态更新的服务构件架构方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673323B1 (en) * 1998-10-28 2010-03-02 Bea Systems, Inc. System and method for maintaining security in a distributed computer network
CN101963913A (zh) * 2010-11-04 2011-02-02 南京大学 一种基于事务的构件在线演化方法
CN103500084A (zh) * 2013-07-11 2014-01-08 南京大学 一种支持软件动态更新的服务构件架构方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHUN CAO; HUATING LIU; ZILING LU; PING YU: "《2015 Asia-Pacific Software Engineering Conference (APSEC)》", 4 December 2015, HTTPS://IEEEXPLORE.IEEE.ORG/XPLS/ICP.JSP?ARNUMBER=7467282 *
任国超 王姜 马晓星: "ConUp:一个支持构件动态更新的SCA中间件系统", 《计算机科学》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121574A (zh) * 2016-11-29 2018-06-05 阿里巴巴集团控股有限公司 一种内核模块的热升级方法、装置及虚拟机系统
CN108121574B (zh) * 2016-11-29 2021-09-24 阿里巴巴集团控股有限公司 一种内核模块的热升级方法、装置及虚拟机系统
CN106843969A (zh) * 2017-01-23 2017-06-13 北京晶海科技有限公司 一种在持续服务中更新软件的方法及系统
CN106843969B (zh) * 2017-01-23 2020-01-17 北京晶海科技有限公司 一种在持续服务中更新软件的方法及系统

Similar Documents

Publication Publication Date Title
US6954220B1 (en) User context component in environment services patterns
US8448132B2 (en) Systems and methods for modifying code generation templates
US9830135B2 (en) Declarative and pluggable business logic for systems management
US8589909B2 (en) Techniques for reducing down time in updating applications with metadata
US10656971B2 (en) Agile framework for vertical application development and delivery
US20150220308A1 (en) Model-based development
US20070168926A1 (en) Software customization framework
US20110078667A1 (en) Static code analysis for packaged application customization
KR20080087802A (ko) 작업 흐름에 대한 객체 모델
US20090288069A1 (en) Dynamic Declarative Application Description
CN101286212A (zh) 业务流程执行方法、业务流程引擎及其部署方法
CN107239313A (zh) Spring应用服务的升级方法和存储介质
US9063753B2 (en) Scripting framework for business objects
US9626251B2 (en) Undo configuration transactional compensation
CN102007756A (zh) 用于数据处理环境中的动态供应的方法和装置
CN105843673A (zh) 一种基于标签的分布式系统构件动态更新方法
US9836288B2 (en) Eager and optimistic evaluation of promises
US20060015867A1 (en) Business productivity pack
US9898262B2 (en) User interface event orchestration
CN113778388A (zh) 程序开发方法和装置
CN109582330A (zh) 数据模型升级方法、装置、设备及可读存储介质
CN109976730A (zh) 一种数据传递的方法及装置
US20230289209A1 (en) Fault-tolerant no code workflows
EP1574949A1 (en) Method for modifying the software configuration of a computer system
van Merode Pipeline Implementation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160810