CN105843673A - 一种基于标签的分布式系统构件动态更新方法 - Google Patents
一种基于标签的分布式系统构件动态更新方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 13
- 238000012544 monitoring process Methods 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 abstract description 9
- 230000000977 initiatory effect Effects 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000007474 system interaction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring 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所述的基于标签的分布式系统构件动态更新方法,其特征在于,所述步骤四的具体过程为:加载用户提供的构件新版本,并投入使用。
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)
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)
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 | 南京大学 | 一种支持软件动态更新的服务构件架构方法 |
-
2016
- 2016-03-14 CN CN201610143247.8A patent/CN105843673A/zh active Pending
Patent Citations (3)
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)
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)
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 |