CN113791799A - 系统升级方法及装置、计算机可读存储介质、电子设备 - Google Patents
系统升级方法及装置、计算机可读存储介质、电子设备 Download PDFInfo
- Publication number
- CN113791799A CN113791799A CN202110012699.3A CN202110012699A CN113791799A CN 113791799 A CN113791799 A CN 113791799A CN 202110012699 A CN202110012699 A CN 202110012699A CN 113791799 A CN113791799 A CN 113791799A
- Authority
- CN
- China
- Prior art keywords
- service
- version
- target
- information
- selector
- 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 93
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000002513 implantation Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000002955 isolation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 229940004975 interceptor Drugs 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
本公开涉及互联网技术领域,提供了一种系统升级方法、装置、计算机可读存储介质及电子设备,该方法包括:利用独立进程创建升级服务版本信息对应的升级服务版本,并将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表;响应服务请求,服务请求包括目标服务标识和用户信息,在服务注册中心查询与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识,并将服务请求发送至与目标服务版本标识对应的目标服务实例中。本公开能够在不改变历史服务版本的情况下,完成对系统的升级。
Description
技术领域
本公开涉及互联网技术领域,特别涉及一种系统升级方法、系统升级装置、计算机可读存储介质及电子设备。
背景技术
随着互联网技术的发展,大型互联网公司的服务系统在运行一段时间之后,随着业务的运营与发展,往往需要对系统进行更新升级。
在现有技术中,采用直接修改历史业务逻辑代码或基于拦截器的变更代码植入,实现对服务系统的升级。但是,现有技术的变更业务逻辑代码和历史业务逻辑代码只能采用同一种编码技术,运行在同一个进程中,导致技术选型开放性差。
鉴于此,本领域亟需开发一种新的系统升级方法及装置。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种系统升级方法、系统升级装置、计算机可读存储介质及电子设备,进而至少在一定程度上提高系统更新效率。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种系统升级方法,所述方法包括:利用独立进程创建升级服务版本信息对应的升级服务版本,并将所述升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,所述升级服务版本信息和所述历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;响应服务请求,所述服务请求包括目标服务标识和用户信息,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与所述用户信息对应的目标服务版本标识,并将所述服务请求发送至与所述目标服务版本标识对应的目标服务实例中。
在本公开的一些示例性实施例中,所述方法还包括:分别配置与各所述服务标识对应的第一版本选择器,并将所述第一版本选择器对应的第一版本选择器信息登记至所述服务注册中心中的版本选择器列表,所述版本选择器列表包括所述服务标识和所述第一版本选择器信息。
在本公开的一些示例性实施例中,所述方法还包括:在所述升级服务版本中配置与各所述服务实例标识对应的版本选择器,并在各所述服务实例标识对应的版本选择器中确定第二版本选择器;在将所述升级服务版本信息与所述历史服务版本信息登记至所述服务版本信息列表的同时,将所述第二版本选择器对应的第二版本选择器信息登记至所述服务版本信息列表。
在本公开的一些示例性实施例中,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息,包括:通过服务访问端向所述服务注册中心发送服务查询指令,所述服务查询指令包括所述目标服务标识,以使所述服务注册中心根据所述服务查询指令输出与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息。
在本公开的一些示例性实施例中,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息,包括:在所述服务版本信息列表中查询与所述目标服务标识对应的所述目标服务版本信息,以及在版本选择器列表中查询与所述目标服务标识对应的第一版本选择器信息,并将所述第一版本选择器信息配置为所述目标版本选择器信息。
在本公开的一些示例性实施例中,所述方法还包括:若所述版本选择器列表中不存在与所述目标服务标识对应的第一版本选择器信息,则在所述服务版本信息列表中查询与所述目标服务标识对应的第二版本选择器信息,并将所述第二版本选择器信息配置为所述目标版本选择器信息。
在本公开的一些示例性实施例中,运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与所述用户信息对应的目标服务版本标识,包括:通过所述目标版本选择器判断所述用户信息是否满足预设条件;若是,则判定所述目标服务版本标识为所述升级服务版本对应的服务版本标识;若否,则判定所述目标服务版本标识为历史服务版本对应的服务版本标识。
在本公开的一些示例性实施例中,所述升级服务版本信息和所述历史服务版本信息中还包括所述服务实例标识对应的服务实例地址;将所述服务请求发送至与所述目标服务版本标识对应的目标服务实例中,包括:获取与所述目标服务版本标识对应的多个所述服务实例标识,根据负载均衡策略在多个所述服务实例标识中确定目标服务实例标识,并所述目标服务实例标识对应的服务实例地址,将所述服务请求发送至所述目标服务实例中。
根据本公开的一个方面,提供一种系统升级装置,所述系统升级装置包括:登记模块,用于利用独立进程创建升级服务版本信息对应的升级服务版本,并将所述升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,所述升级服务版本信息和所述历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;查询模块,用于响应服务请求,所述服务请求包括目标服务标识和用户信息,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息列表,以及目标版本选择器信息;运行模块,用于运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与所述用户信息对应的目标服务版本标识,并将所述服务请求发送至与所述目标服务版本标识对应的目标服务实例中。
根据本公开的一个方面,提供一种服务系统,所述服务系统包括升级服务提供方、历史服务提供方、服务注册中心和服务访问端,其中:所述升级服务提供方,用于根据升级服务版本信息创建升级服务版本,并向所述服务注册中心登记所述升级服务版本信息,所述升级服务版本信息包括升级服务标识、升级服务版本标识、升级服务实例标识;所述历史服务提供方,用于根据历史服务版本信息创建历史服务版本,并将所述服务注册中心登记所述历史服务版本信息,所述历史服务版本信息包括历史服务标识、历史服务版本标识、历史服务实例标识;所述服务注册中心,用于将所述升级服务版本信息和所述历史服务版本信息存储至服务版本信息列表中;所述服务访问端,用于响应服务请求,根据所述服务请求确定目标服务版本信息,以及目标版本选择器信息,并运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与所述用户信息对应的目标服务版本标识。
在本公开的一些示例性实施例中,所述服务访问端包括信息查询单元和脚本运行单元,其中:所述信息查询单元,用于响应服务请求,所述服务请求包括用户信息和目标服务标识,根据所述目标服务标识在所述服务注册中心中查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;所述脚本运行单元,用于运行所述目标版本选择器,通过所述目标版本选择器通过所述目标版本选择器判断所述用户信息是否满足预设条件,并根据判断结果确定所述目标服务版本标识。
根据本公开的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的系统升级方法。
根据本公开的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的系统升级方法。
由上述技术方案可知,本公开示例性实施例中的系统升级方法及装置、计算机可读存储介质、电子设备至少具备以下优点和积极效果:
本公开的系统升级方法,首先利用独立进程创建升级服务版本信息对应的升级服务版本,并将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,升级服务版本信息和历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;其次,响应服务请求,服务请求包括目标服务标识和用户信息,在服务注册中心查询与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;最后,运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识,并将服务请求发送至与目标服务版本标识对应的目标服务实例中。本公开中的系统升级方法一方面通过独立进程创建升级服务版本,将升级服务版本的代码逻辑与历史服务版本中的代码逻辑分离,以使升级服务版本的代码逻辑可独立实现,也避免了对历史服务版本的改变,即在不改变历史服务版本的情况下,完成了服务系统的升级;另一方面,将服务请求与升级服务版本和历史服务版本作为输入,通过目标版本选择器,得到最终的目标服务版本,将现有分流器的决策因素分离,实现了动态分发服务请求。
本公开应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出了根据本公开的一实施例的基于分流器模型的系统升级方法的流程示意图;
图2示意性示出了根据本公开的一实施例的系统升级方法的流程示意图;
图3示意性示出了根据本公开的一实施例的查询结果的结构示意图;
图4示意性示出了根据本公开的一实施例的具体实施例的系统升级方法的流程示意图;
图5示意性示出了根据本公开的一实施例的系统升级装置的结构框图;
图6示意性示出了根据本公开的一实施例的服务系统的结构框图;
图7示意性示出了根据本公开的一实施例的对服务系统进行升级的统一建模语言UML示意图;
图8示意性示出了根据本公开的一实施例的电子设备的模块示意图;
图9示意性示出了根据本公开的一实施例的程序产品示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在本公开的相关实施例中,将服务系统的升级抽象为分流器模型,图1示出了基于分流器模型的系统升级方法的流程示意图,如图1所示,在步骤S110中,服务系统接收到服务请求;在步骤S120中,判断使用升级前或使用升级后的业务逻辑代码,其中,通过分流器进行判断;在步骤S130中,若判断结果为使用升级前的业务逻辑代码,则将服务请求发送至与升级前的业务逻辑代码对应的服务器中,以使该服务器响应该服务请求;在步骤S140中,若判断结果为使用升级后的业务逻辑代码,则将服务请求发送至与升级后的业务逻辑代码对应的服务器中,以使该服务器响应该服务请求。
但是,上述基于分流器模型的系统升级方法需要两个关键要素,一个是编写升级后的业务逻辑代码,以实现升级后的业务逻辑或系统性能提升;另一个是编写分流器模型代码,以实现升级后的业务逻辑代码与升级前的业务逻辑代码的切换。针对编写分流器模型代码,存在两个关键要素,一个是决策因素,即在什么条件下,执行升级后的业务逻辑代码,决策因素是可以将服务请求中的所有属性作为定义域,值域为是或否的决策函数关系;另一个是植入点位,即上述的决策函数运行的上下文环境,比如,硬编码的一个分支与拦截器等。
其中,通常采用直接修改相关业务逻辑代码或拦截器的变更代码植入,比如,采用Servlet的Filter机制、Struts2的Interceptor机制和Spring的各类AOP机制。但是,首先,该实施例的技术选型开放性差。当新的编码技术出现时,无法用新的编码技术重构老的业务逻辑代码,比如,在一个服务系统中,有些模块可能更适合用Java11或Go语言编写,但是其他模块适合现有的Java6,本实施例无法在系统升级中混用两种不同的编码技术,限制了新的编码技术的选型和应用;其次,该实施例的业务侵入性强,隔离性差。本实施例将未经生产验证的升级后的业务逻辑代码,直接发布到生产环境的同一个进程,只用If/Else或拦截器做轻隔离。若升级后的业务逻辑代码中存在诸如锁资源长时间占用、内存泄露、网络连接泄露等这些不会被检测出的问题,就会影响生产进程,可能导致线上事故。另外,本实施例在决策因素和植入点位存在硬编码,将分支决策代码与业务处理代码耦合在一起,未做很好的隔离,导致难以做单元测试、降低代码的正确性和后期维护成本。最后,本实施例的应用层回滚性差,因为决策因素没有确定出决策函数,若升级上线过程中出现问题,应用层回滚需要撤销或注释部分代码,给回滚增加不确定性。
基于上述实施例中存在的问题,在本公开的一个实施例中提出了一种系统升级方法。图2示出了系统升级方法的流程示意图,如图2所示,该系统升级方法至少包括以下步骤:
步骤S210:利用独立进程创建升级服务版本信息对应的升级服务版本,并将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,升级服务版本信息和历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;
步骤S220:响应服务请求,服务请求包括目标服务标识和用户信息,在服务注册中心查询与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;
步骤S230:运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识,并将服务请求发送至与目标服务版本标识对应的目标服务实例中。
本公开实施例中的系统升级方法,一方面通过独立进程创建升级服务版本,将升级服务版本的代码逻辑与历史服务版本中的代码逻辑分离,以使升级服务版本的代码逻辑可独立实现,也避免了对历史服务版本的改变,即在不改变历史服务版本的情况下,完成了服务系统的升级;另一方面,将服务请求与升级服务版本和历史服务版本作为输入,通过目标版本选择器,得到最终的目标服务版本,将现有分流器的决策因素分离,实现了动态分发服务请求。
需要说明的是,本公开示例性实施方式的系统升级方法可以由服务器执行,系统升级方法对应的系统升级装置也可以被配置在该服务器中。此外,应当理解的是,终端设备(例如,手机、平板等)也可以实现系统升级方法的各个步骤,对应的系统升级装置也可以配置在终端设备中。
为了使本公开的技术方案更清晰,接下来对系统升级方法的各步骤进行说明。
在步骤S210中,利用独立进程创建升级服务版本信息对应的升级服务版本,并将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,升级服务版本信息和历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识。
在本公开的示例性实施例中,根据升级服务版本信息创建的升级服务版本表示升级后的服务版本,根据历史服务版本信息创建的历史服务版本表示升级前的服务版本。升级服务版本信息和历史服务版本信息可以用三元组(S,V,I)表示,其中,三元组(S,V,I)具体包括:S(ServiceName)表示服务标识,每个服务标识唯一寻址一个业务服务,相同的业务服务具有相同的服务标识,不同的业务服务具有不同的服务标识。比如,在电商平台中,订单交易是一个业务服务,对应一个服务标识,而售后是另一个业务服务,对应另一个服务标识;V(VersionNum)表示业务服务的服务版本标识,在同一个业务服务下,可以包括一个或多个服务版本,每个服务版本对应一个服务版本标识,不同的服务版本的服务处理逻辑不同。
比如,在订单交易业务服务下,针对第一场景是一个服务版本,针对第二场景又是另一个服务版本,第一场景和第二场景不属于同一场景;I(InstanceName)表示服务版本对应的服务实例标识,每个服务实例标识对应一个服务实例。该升级服务版本信息和历史服务版本信息还包括服务实例地址,服务实例地址可以由主机地址和端口号组成。其中,一个服务标识可以包括一个或多个服务版本标识,一个服务版本标识可以包括一个或多个服务实例标识,一个服务实例标识对应一个服务实例地址。
具体地,升级服务版本信息包括升级服务标识、升级服务版本标识、升级服务实例标识、升级服务实例地址,历史服务版本信息包括历史服务标识、历史服务版本标识、历史服务实例标识、历史服务地址。其中,升级服务标识和历史服务标识可以相同,也可以不同,若升级服务标识和历史服务标识相同,则表明针对同一业务服务进行升级服务版本,若升级服务标识和历史服务标识不同,则表明创建一新的业务服务。
在本公开的示例性实施例中,创建独立进程,利用单独的程序和进程独立编写升级服务版本,该升级服务版本对应的升级服务版本信息包括升级服务标识、升级服务版本标识、升级服务实例标识、升级服务地址。历史服务版本信息对应历史服务版本,该历史服务版本和升级服务版本对应同一业务服务。
在本公开的示例性实施例中,该升级服务版本可以采用任一技术编写,比如,可以采用Java语言、C语言、Go语言等,本公开对此不作具体限定。在借助RPC框架发布该升级服务版本时,升级服务版本发布与具有同一服务标识的历史服务版本相兼容的语言客户端。实现升级服务版本对新技术开放,又可以与历史服务版本的体系相联通。
在本公开的示例性实施例中,将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,服务注册中心可以将该升级服务版本信息与历史服务版本信息保存至服务版本信息列表。由于历史服务版本已在当前时刻之前,在服务注册中心登记过一次,服务注册中心的服务版本信息列表中已经保存有与历史服务版本对应的历史版本信息。因此,在将升级服务版本信息与历史服务版本信息登记至服务注册中心时,服务注册中心查询与历史服务版本信息对应的服务版本信息列表,并将升级服务版本信息保存至与历史服务版本信息对应的服务版本信息列表中。
举例而言,业务服务的服务标识为“服务S#甲”的服务版本信息列表如表1所示,在表1中,历史服务版本信息中的历史服务标识包括“服务S#甲”,历史服务版本标识包括“版本V#A”,历史服务实例标识包括“实例I#1”、“实例I#2”、“实例I#3”,该“实例I#1”对应的服务实例地址包括“10.10.1.1:3030”,该“实例I#2”对应的服务实例地址包括“10.10.1.2:3030”,该“实例I#3”对应的服务实例地址包括“10.10.1.3:3030”。
升级服务版本信息中的服务标识包括“服务S#甲”,升级服务版本标识包括“版本V#B”,升级服务实例标识包括“实例I#4”、“实例I#5”,该“实例I#4”对应的服务实例地址包括“10.10.1.4:3030”,该“实例I#5”对应的服务实例地址包括“10.10.1.5:3030”。
表1服务标识为“服务S#甲”的服务版本信息列表
1 | 服务标识 | 服务版本标识 | 服务实例标识 | 服务实例地址 |
2 | 服务S#甲 | 版本V#A | 实例I#1 | 10.10.1.1:3030 |
3 | 服务S#甲 | 版本V#A | 实例I#2 | 10.10.1.2:3030 |
4 | 服务S#甲 | 版本V#A | 实例I#3 | 10.10.1.3:3030 |
5 | 服务S#甲 | 版本V#B | 实例I#4 | 10.10.1.4:3030 |
6 | 服务S#甲 | 版本V#B | 实例I#5 | 10.10.1.5:3030 |
在本公开的示例性实施例中,版本选择器信息的登记包括两种方式,另一种是通过版本选择器列表独立登记的方式,该方式有利用直接对版本选择器进行修改和方便后期使用该版本选择器;一种是与服务实例伴随登记的方式,该方式可以将升级服务版本与版本选择器一同创建,节省服务版本升级时间。
具体地,独立登记方式如下所示:
在本公开的示例性实施例中,分别配置与各服务标识对应的第一版本选择器,并将第一版本选择器对应的第一版本选择器信息登记至服务注册中心中的版本选择器列表,版本选择器列表中包括一个或多个服务标识,以及与各服务标识对应的第一版本选择器信息。其中,该第一版本选择器可以是分流器,可以包括分流逻辑代码和预设条件,该第一版本选择器信息可以是第一版本选择器脚本地址。比如,服务注册中心的版本选择器列表如表2所示,服务标识为“服务S#甲”的第一版本选择器信息可以是“http://jarstore/sjia-selector.jar”,服务标识为“服务S#乙”的第一版本选择器信息可以是“http://jarstore/syi-selector.jar”。第一版本选择器可以由工程师提前配置,并将配置好的第一版本选择器存储在第一版本选择器脚本地址中。
表2版本选择器列表
1 | 服务标识 | 第一版本选择器信息 |
2 | 服务S#甲 | http://jarstore/sjia-selector.jar |
3 | 服务S#乙 | http://jarstore/syi-selector.jar |
另外,伴随登记方式如下所示:
在本公开的示例性实施例中,在升级服务版本中配置与各服务实例标识对应的版本选择器,并在各服务实例标识对应的版本选择器中确定第二版本选择器;在将升级服务版本信息与历史服务版本信息登记至服务版本信息列表的同时,将第二版本选择器对应的第二版本选择器信息登记至服务版本信息列表。
其中,在创建升级服务版本的同时,在升级服务版本中配置与升级服务版本中的各服务实例对应的版本选择器,即每一个服务实例均对应一个可选的版本选择器。当然,在历史服务版本创建的同时,也会在历史服务版本中配置与历史服务版本中的各服务实例对应的版本选择器。
为了避免版本选择器脚本在多个服务实例间的不一致性,在各服务实例标识对应的版本选择器中确定第二版本选择器,具体地,确定各服务实例标识中的最大服务实例标识,将最大服务实例标识对应的版本选择器作为第二版本选择器。其中,最大服务实例标识包括该服务实例的注册时间与当前时间最接近的服务实例标识。比如,登记有第二版本选择器的服务版本信息列表如表3所示,在表3中,在服务标识为“服务S#甲”的服务版本信息列表中,分别包括“实例I#1”、“实例I#2”、“实例I#3”、“实例I#4”、“实例I#5”5个服务实例,该5个服务实例对应登记有相同的第二版本选择器信息“http://jarstore/version-selector.jar”。
表3登记有第二版本选择器的服务版本信息列表
在本公开的示例性实施例中,可以只配置第一版本选择器,也可以只配置第二版本选择器,还可以既配置第一版本选择器,又配置第二版本选择器,将配置好的第一版本选择器和第二版本选择器分别存储在第一版本选择器脚本地址和第二版本选择器脚本地址中。并且,配置该第一版本选择器和第二版本选择器可以是在创建升级服务版本之前,也可以是在创建升级服务版本之后,本公开对此不作具体限定。
在步骤S220中,响应服务请求,服务请求包括目标服务标识和用户信息,在服务注册中心查询与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息。
在本公开的示例性实施例中,服务请求可以是根据用户在服务访问端上的触发操作所形成的,服务请求包括目标服务标识和用户信息,用户信息可以包括账号、昵称、年龄、性别、联系方式、住址等信息,本公开对此不作具体限定。
在本公开的示例性实施例中,响应服务请求,通过服务访问端向服务注册中心发送服务查询指令,服务查询指令包括目标服务标识,以使服务注册中心根据服务查询指令输出与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息。其中,目标服务版本信息包括与该目标服务标识对应的升级服务版本信息和历史服务版本信息,目标版本选择器信息包括第一版本选择器信息或第二版本选择器信息。比如,图3示出了查询结果的结构示意图,如图3所示,服务查询指令中的目标服务标识为“服务S#甲”,查询结果中包括目标服务版本信息(VersionListing),以及目标版本选择器信息(VersionSelector)。
在本公开的示例性实施例中,在服务版本信息列表中查询与目标服务标识对应的目标服务版本信息,以及在版本选择器列表中查询与目标服务标识对应的第一版本选择器信息,并将第一版本选择器信息配置为目标版本选择器信息。
具体地,将目标服务标识与版本选择器列表中的服务标识进行匹配,若版本选择器列表中存在与目标服务标识相匹配的服务标识,则根据目标服务标识获取相对应的第一版本选择器信息,并将第一版本选择器信息配置为目标版本选择器信息;若版本选择器列表中不存在与目标服务标识相匹配的服务标识,即,版本选择器列表中不存在与目标服务标识对应的第一版本选择器信息,则在服务版本信息列表中查询与目标服务标识对应的第二版本选择器信息,并将第二版本选择器信息配置为目标版本选择器信息。
在本公开的示例性实施例中,还可以在服务版本信息列表中查询与目标服务标识对应的目标服务版本信息,以及第二版本选择器信息,将第二版本选择器信息作为目标版本选择器信息。
在步骤S230中,运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识,并将服务请求发送至与目标服务版本标识对应的目标服务实例中。
在本公开的示例性实施例中,服务访问端根据目标版本选择器信息动态加载目标版本选择器,运行目标版本选择器信息对应的目标版本选择器,并执行该目标版本选择器逻辑。
在本公开的示例性实施例中,通过目标版本选择器确定与用户信息对应的目标服务版本标识,包括:通过目标版本选择器判断用户信息是否满足预设条件;若该用户信息满足该预设条件,则判定目标服务版本标识为升级服务版本对应的服务版本标识;若该用户想信息不满足该预设条件,则判定目标服务版本标识为历史服务版本对应的服务版本标识。
其中,该预设条件可以根据实际情况进行设定,比如,该预设条件可以设定为:该用户的年龄小于等于25岁;该预设条件还可以设定为:该用户的住址在北京、上海或广州等等,本公开对预设条件不作具体限定。
另外,还可以是若用户信息满足该预设条件,则判定目标服务版本标识为历史服务版本对应的服务版本标识;若该用户信息不满足该预设条件,则判定该目标服务版本标识为升级服务版本对应的服务版本标识。
在本公开的一具体实施例中,运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识,这一技术特征可以用任一技术编码实现,本公开对此不作具体限定。比如,用类Java伪代码实现动态加载目标版本选择器,伪代码描述如下:
String loadAndSelect(LookupResponse lookup,RpcRequest rpcRequest){
String jarUrl=lookup.getVersionSelector();
//注释:借助JDK的URLClassLoader下载指定URL下的Jar包,并查询和加载动态加载目标版本选择器
URLClassLoader loader=new URLClassLoader(new URL[]{new URL(jarUrl)});
Class<?>selectClass=loader.loadClass(VersionSelector.class);
VersionSelector selector=selectClass.getConstructor().newInstance();
//注释:执行目标版本选择器逻辑
return selector.select(rpcRequest,lookup.getVersionListing());
}//注释:返回目标服务版本标识
在本公开的示例性实施例中,获取与目标服务版本标识对应的多个服务实例标识,根据负载均衡策略在多个服务实例标识中确定目标服务实例标识,并目标服务实例标识对应的服务实例地址,将服务请求发送至目标服务实例中。其中,负载均衡策略可以是任一可以在多个服务实例中确定目标服务实例的策略,比如,获取多个服务实例的当前运行文件数量,将当前运行文件数量最小的服务实例作为目标服务实例,本公开对此不作具体限定。
在本公开的一具体实施例中,服务访问端的伪代码如下:
SelectorClient{
private LookupRespone lookup;
RpcResponse doRPC(Instance[]instances,RpcService,RpcRequest){
//注释:确定目标版本标识
String version=AppletRuntime.loadAndSelect(lookup,rpcRequest);
Instance[]instances=lookup.getVersionListing().get(version);
//注释:复用现有服务访问端的调用,包括负载均衡策略
return RpcClient.doRPC(instances,RpcService,RpcRequest);}
}
在本公开的示例性实施例中,服务访问端会收到目标服务实例对服务请求的响应,通常历史服务版本和升级服务版本对应的服务实例对服务请求作出的响应也是不同。
在本公开的一具体实施例中,图4示出了具体实施例的系统升级方法的流程示意图,如图4所示,该流程至少包括步骤S410至步骤S490,详细介绍如下:
在步骤S410中,利用独立进程创建升级服务版本。
在本公开的示例性实施例中,创建独立进程,利用单独的程序和进程独立编写升级服务版本,升级服务版本可以采用任一技术编写,比如,可以采用Java语言、C语言、Go语言等,本公开对此不作具体限定。
在步骤S420中,将升级服务版本信息和历史服务版本信息登记至服务注册中心。
在本公开的示例性实施例中,将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,该升级服务版本对应的升级服务版本信息包括升级服务标识、升级服务版本标识、升级服务实例标识、升级服务地址。历史服务版本信息对应历史服务版本,该历史服务版本信息包括,历史服务标识、历史服务版本标识、历史服务实例标识、历史服务地址。其中,该历史服务标识和升级服务标识相同,表征同一业务服务。
在步骤S430中,配置版本选择器,并将版本选择器登记至服务注册中心。
在本公开的示例性实施例中,分别配置与各服务标识对应的第一版本选择器,并将第一版本选择器对应的第一版本选择器信息登记至服务注册中心中的版本选择器列表,版本选择器列表中包括一个或多个服务标识,以及与各服务标识对应的第一版本选择器信息。
在本公开的示例性实施例中,在创建升级服务版本的同时,在升级服务版本中配置与升级服务版本中的各服务实例对应的版本选择器,即每一个服务实例均对应一个可选的版本选择器。在可选的版本选择器中确定第二版本选择器;在将升级服务版本信息与历史服务版本信息登记至服务版本信息列表的同时,将第二版本选择器对应的第二版本选择器信息登记至服务版本信息列表。
在步骤S440中,响应服务请求,根据目标服务标识查询目标服务版本信息,以及目标版本选择器信息。
在本公开的示例性实施例中,服务请求包括目标服务标识和用户信息,响应服务请求,通过服务访问端向服务注册中心发送服务查询指令,服务查询指令包括目标服务标识;服务注册中心根据目标服务标识在服务版本信息列表中查询与目标服务标识对应的目标服务版本信息,以及在版本选择器列表中查询与目标服务标识对应的第一版本选择器信息,并将第一版本选择器信息作为目标版本选择器信息;若版本选择器列表中不存在与目标服务标识对应的第一版本选择器信息,则在服务版本信息列表中查询与目标服务标识对应的第二版本选择器信息,并将第二版本选择器信息作为目标版本选择器信息。
在步骤S450中,运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器判断用户信息是否满足预设条件。
在本公开的示例性实施例中,服务访问端根据目标版本选择器信息动态加载目标版本选择器,运行目标版本选择器信息对应的目标版本选择器,并执行该目标版本选择器逻辑。
在步骤S460中,若该用户信息满足该预设条件,则判定目标服务版本标识为升级服务版本对应的服务版本标识。
在本公开的示例性实施例中,该预设条件可以根据实际情况进行设定,本公开对预设条件不作具体限定。
在步骤S470中,若该用户想信息不满足该预设条件,则判定目标服务版本标识为历史服务版本对应的服务版本标识。
在本公开的示例性实施例中,还可以是若用户信息满足该预设条件,则判定目标服务版本标识为历史服务版本对应的服务版本标识;若该用户信息不满足该预设条件,则判定该目标服务版本标识为升级服务版本对应的服务版本标识。
在步骤S480中,将服务请求发送至目标服务版本标识对应的目标服务实例中。
在本公开的示例性实施例中,获取目标服务版本对应的多个服务实例,根据负载均衡策略在多个服务实例中确定目标服务实例,并将服务请求发送至目标服务实例中。
在步骤S490中,服务访问端接收到目标服务实例针对服务请求作出的响应。
本公开实施例中的系统升级方法的设计原理遵循面向对象的单一职责和里氏替换原则,实现了三个分离:
第一,将升级服务版本的变更代码与历史服务版本的线上代码分离,以便变更代码可独立实现,具体,变更代码不受线上代码的约束,具体变更代码的编码语言和运行环境可以采用任一技术实现。
第二,分流器的决策因素分离,本实施例以服务请求与历史服务版本和升级服务版本作为输入,以目标服务版本作为输出,将版本选择器抽象成了独立的决策函数。该决策函数用伪代码描述为:
public interface VersionSelector
{
String select(RpcRequest request,List<String>versions);
}
其中,输入参数RpcRequest表示服务请求,从中可提取服务访问端的目标服务标识以及用户信息;输入参数List<String>versions表示当前可供选择的服务版本号列表,即,包括升级服务版本标识和历史服务版本标识;返回值是目标服务版本标识,目标服务版本标识为历史服务版本标识和升级服务版本标识中的一个。
第三,分流器的植入点位分离,通过查询目标服务版本信息,以及目标版本选择器信息,并运行目标版本选择器信息对应的目标版本选择器。
本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
以下介绍本公开的装置实施例,可以用于执行本公开上述的系统升级方法。对于本公开装置实施例中未披露的细节,请参照本公开上述的系统升级方法的实施例。
图5示意性示出了根据本公开的一个实施例的系统升级装置的框图。
参照图5所示,根据本公开的一个实施例的系统升级装置500,系统升级装置500包括:登记模块501、查询模块502和运行模块503,具体地:
登记模块501,用于利用独立进程创建升级服务版本信息对应的升级服务版本,并将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,升级服务版本信息和历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;
查询模块502,用于响应服务请求,服务请求包括目标服务标识和用户信息,在服务注册中心查询与目标服务标识对应的目标服务版本信息列表,以及目标版本选择器信息;
运行模块503,用于运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识,并将服务请求发送至与目标服务版本标识对应的目标服务实例中。
在本公开的示例性实施例中,登记模块501还可以用于分别配置与各服务标识对应的第一版本选择器,并将第一版本选择器对应的第一版本选择器信息登记至服务注册中心中的版本选择器列表,版本选择器列表包括服务标识和第一版本选择器信息。
在本公开的示例性实施例中,登记模块501还可以用于在升级服务版本中配置与各服务实例标识对应的版本选择器,并在各服务实例标识对应的版本选择器中确定第二版本选择器;
在将升级服务版本信息与历史服务版本信息登记至服务版本信息列表的同时,将第二版本选择器对应的第二版本选择器信息登记至服务版本信息列表。
在本公开的示例性实施例中,查询模块502还可以用于通过服务访问端向服务注册中心发送服务查询指令,服务查询指令包括目标服务标识,以使服务注册中心根据服务查询指令输出与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息。
在本公开的示例性实施例中,查询模块502还可以用于在服务版本信息列表中查询与目标服务标识对应的目标服务版本信息,以及在版本选择器列表中查询与目标服务标识对应的第一版本选择器信息,并将第一版本选择器信息配置为目标版本选择器信息。
在本公开的示例性实施例中,查询模块502还可以用于若版本选择器列表中不存在与目标服务标识对应的第一版本选择器信息,则在服务版本信息列表中查询与目标服务标识对应的第二版本选择器信息,并将第二版本选择器信息配置为目标版本选择器信息。
在本公开的示例性实施例中,运行模块503还可以用于通过目标版本选择器判断用户信息是否满足预设条件;
若是,则判定目标服务版本标识为升级服务版本对应的服务版本标识;
若否,则判定目标服务版本标识为历史服务版本对应的服务版本标识。
在本公开的示例性实施例中,运行模块503还可以用于获取与目标服务版本标识对应的多个服务实例标识,根据负载均衡策略在多个服务实例标识中确定目标服务实例标识,并目标服务实例标识对应的服务实例地址,将服务请求发送至目标服务实例中,其中,升级服务版本信息和历史服务版本信息中还包括服务实例标识对应的服务实例地址。
在本公开的示例性实施例中,系统升级装置500还可以包括选择器登记模块(图中未示出),该选择器登记模块用于分别配置与各服务标识对应的第一版本选择器,并将第一版本选择器对应的第一版本选择器信息登记至服务注册中心中的版本选择器列表,版本选择器列表包括服务标识和第一版本选择器信息。
在本公开的示例性实施例中,该选择器登记模块还可以用于在升级服务版本中配置与各服务实例标识对应的版本选择器,并在各服务实例标识对应的版本选择器中确定第二版本选择器;
在将升级服务版本信息与历史服务版本信息登记至服务版本信息列表的同时,将第二版本选择器对应的第二版本选择器信息登记至服务版本信息列表。
上述各系统升级装置的具体细节已经在对应的系统升级方法中进行了详细的描述,因此此处不再赘述。
图6示意性示出了根据本公开的一个实施例的服务系统的框图。
参照图6所示,根据本公开的一个实施例的服务系统600,服务系统600包括:升级服务提供方610、历史服务提供方620、服务注册中心630和服务访问端640,具体地:
升级服务提供方610,用于根据升级服务版本信息创建升级服务版本,并向服务注册中心登记升级服务版本信息,升级服务版本信息包括升级服务标识、升级服务版本标识、升级服务实例标识;
历史服务提供方620,用于根据历史服务版本信息创建历史服务版本,并将服务注册中心登记历史服务版本信息,历史服务版本信息包括历史服务标识、历史服务版本标识、历史服务实例标识;
服务注册中心630,用于将升级服务版本信息和历史服务版本信息存储至服务版本信息列表中;
服务访问端640,用于响应服务请求,根据服务请求确定目标服务版本信息,以及目标版本选择器信息,并运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识。
在本公开的示例性实施例中,服务访问端640包括信息查询单元和脚本运行单元,其中:
信息查询单元,用于响应服务请求,服务请求包括用户信息和目标服务标识,根据目标服务标识在服务注册中心中查询与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;
脚本运行单元,用于运行目标版本选择器,通过目标版本选择器通过目标版本选择器判断用户信息是否满足预设条件,并根据判断结果确定目标服务版本标识。
在本公开的示例性实施例中,服务注册中心630还可以用于将与各服务标识对应的第一版本选择器信息保存至版本选择器列表中,版本选择器列表包括服务标识和第一版本选择器信息。
在本公开的示例性实施例中,服务注册中心630还可以用于将根据各服务实例标识对应的版本选择器确定的第二版本选择器信息保存至服务版本信息列表中。
在本公开的示例性实施例中,信息查询单元还可以用于向服务注册中心630发送服务查询指令,服务查询指令包括目标服务标识,以使服务注册中心根据服务查询指令输出与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息。
在本公开的示例性实施例中,信息查询单元还可以用于在服务版本信息列表中查询与目标服务标识对应的目标服务版本信息,以及在版本选择器列表中查询与目标服务标识对应的第一版本选择器信息,并将第一版本选择器信息配置为目标版本选择器信息。
在本公开的示例性实施例中,信息查询单元还可以用于若版本选择器列表中不存在与目标服务标识对应的第一版本选择器信息,则在服务版本信息列表中查询与目标服务标识对应的第二版本选择器信息,并将第二版本选择器信息配置为目标版本选择器信息。
在本公开的示例性实施例中,图7示出了对本服务系统进行升级的统一建模语言UML示意图,如图7所示,该流程至少包括步骤S710至步骤S770,详细介绍如下:
在步骤S710中,升级服务提供方610将升级服务版本信息登记至服务注册中心630中,历史服务提供方620将历史服务版本信息登记至服务注册中心630中。
其中,升级服务版本信息包括:S#甲.V#B.I#4、S#甲.V#B.I#5;历史服务版本信息包括:S#甲.V#A.I#1、S#甲.V#A.I#2、S#甲.V#A.I#3。
另外,分别配置与各服务标识对应的第一版本选择器,并将第一版本选择器对应的第一版本选择器信息登记至服务注册中心630。
在步骤S720中,服务注册中心630将升级服务版本信息和历史服务版本信息保存至服务版本信息列表中。
在步骤S730中,信息查询单元641根据服务请求向服务注册中心630发送查询指令,查询与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息。
在步骤S740中,服务注册中心630向服务访问端640返回目标服务版本信息和目标版本选择器信息。
在步骤S750中,脚本运行单元642运行该目标版本选择器信息对应的目标版本选择器,通过目标版本选择器通过目标版本选择器判断用户信息是否满足预设条件,并根据判断结果确定目标服务版本标识。
在步骤S760中,若目标服务版本标识为升级服务版本,则将服务请求发送至升级服务提供方610。
在步骤S770中,若目标服务版本标识为历史服务版本,则将服务请求发送至历史服务提供方620。
上述各服务系统的具体细节已经在对应的系统升级方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图8来描述根据本发明的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图2中所示的步骤S210,利用独立进程创建升级服务版本信息对应的升级服务版本,并将升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,升级服务版本信息和历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;步骤S220,响应服务请求,服务请求包括目标服务标识和用户信息,在服务注册中心查询与目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;步骤S230,运行目标版本选择器信息对应的目标版本选择器,通过目标版本选择器确定与用户信息对应的目标服务版本标识,并将服务请求发送至与目标服务版本标识对应的目标服务实例中。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备1000(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得观众能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
参考图9所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品900,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。
Claims (13)
1.一种系统升级方法,其特征在于,包括:
利用独立进程创建升级服务版本信息对应的升级服务版本,并将所述升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,所述升级服务版本信息和所述历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;
响应服务请求,所述服务请求包括目标服务标识和用户信息,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;
运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与所述用户信息对应的目标服务版本标识,并将所述服务请求发送至与所述目标服务版本标识对应的目标服务实例中。
2.根据权利要求1所述的系统升级方法,其特征在于,所述方法还包括:
分别配置与各所述服务标识对应的第一版本选择器,并将所述第一版本选择器对应的第一版本选择器信息登记至所述服务注册中心中的版本选择器列表,所述版本选择器列表包括所述服务标识和所述第一版本选择器信息。
3.根据权利要求1所述的系统升级方法,其特征在于,所述方法还包括:
在所述升级服务版本中配置与各所述服务实例标识对应的版本选择器,并在各所述服务实例标识对应的版本选择器中确定第二版本选择器;
在将所述升级服务版本信息与所述历史服务版本信息登记至所述服务版本信息列表的同时,将所述第二版本选择器对应的第二版本选择器信息登记至所述服务版本信息列表。
4.根据权利要求1所述的系统升级方法,其特征在于,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息,包括:
通过服务访问端向所述服务注册中心发送服务查询指令,所述服务查询指令包括所述目标服务标识,以使所述服务注册中心根据所述服务查询指令输出与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息。
5.根据权利要求1所述的系统升级方法,其特征在于,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息,包括:
在所述服务版本信息列表中查询与所述目标服务标识对应的所述目标服务版本信息,以及在版本选择器列表中查询与所述目标服务标识对应的第一版本选择器信息,并将所述第一版本选择器信息配置为所述目标版本选择器信息。
6.根据权利要求5所述的系统升级方法,其特征在于,所述方法还包括:
若所述版本选择器列表中不存在与所述目标服务标识对应的第一版本选择器信息,则在所述服务版本信息列表中查询与所述目标服务标识对应的第二版本选择器信息,并将所述第二版本选择器信息配置为所述目标版本选择器信息。
7.根据权利要求1所述的系统升级方法,其特征在于,运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与所述用户信息对应的目标服务版本标识,包括:
通过所述目标版本选择器判断所述用户信息是否满足预设条件;
若是,则判定所述目标服务版本标识为所述升级服务版本对应的服务版本标识;
若否,则判定所述目标服务版本标识为历史服务版本对应的服务版本标识。
8.根据权利要求1所述的系统升级方法,其特征在于,所述升级服务版本信息和所述历史服务版本信息中还包括所述服务实例标识对应的服务实例地址;
将所述服务请求发送至与所述目标服务版本标识对应的目标服务实例中,包括:
获取与所述目标服务版本标识对应的多个所述服务实例标识,根据负载均衡策略在多个所述服务实例标识中确定目标服务实例标识,并所述目标服务实例标识对应的服务实例地址,将所述服务请求发送至所述目标服务实例中。
9.一种系统升级装置,其特征在于,包括:
登记模块,用于利用独立进程创建升级服务版本信息对应的升级服务版本,并将所述升级服务版本信息与历史服务版本信息登记至服务注册中心中的服务版本信息列表,所述升级服务版本信息和所述历史服务版本信息中均包括服务标识、服务版本标识、服务实例标识;
查询模块,用于响应服务请求,所述服务请求包括目标服务标识和用户信息,在所述服务注册中心查询与所述目标服务标识对应的目标服务版本信息列表,以及目标版本选择器信息;
运行模块,用于运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与所述用户信息对应的目标服务版本标识,并将所述服务请求发送至与所述目标服务版本标识对应的目标服务实例中。
10.一种服务系统,其特征在于,所述服务系统包括升级服务提供方、历史服务提供方、服务注册中心和服务访问端,其中:
所述升级服务提供方,用于根据升级服务版本信息创建升级服务版本,并向所述服务注册中心登记所述升级服务版本信息,所述升级服务版本信息包括升级服务标识、升级服务版本标识、升级服务实例标识;
所述历史服务提供方,用于根据历史服务版本信息创建历史服务版本,并将所述服务注册中心登记所述历史服务版本信息,所述历史服务版本信息包括历史服务标识、历史服务版本标识、历史服务实例标识;
所述服务注册中心,用于将所述升级服务版本信息和所述历史服务版本信息存储至服务版本信息列表中;
所述服务访问端,用于响应服务请求,根据所述服务请求确定目标服务版本信息,以及目标版本选择器信息,并运行所述目标版本选择器信息对应的目标版本选择器,通过所述目标版本选择器确定与用户信息对应的目标服务版本标识。
11.根据权利要求10所述的服务系统,其特征在于,所述服务访问端包括信息查询单元和脚本运行单元,其中:
所述信息查询单元,用于响应服务请求,所述服务请求包括用户信息和目标服务标识,根据所述目标服务标识在所述服务注册中心中查询与所述目标服务标识对应的目标服务版本信息,以及目标版本选择器信息;
所述脚本运行单元,用于运行所述目标版本选择器,通过所述目标版本选择器通过所述目标版本选择器判断所述用户信息是否满足预设条件,并根据判断结果确定所述目标服务版本标识。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至8中任一项所述的系统升级方法。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8中任一项所述的系统升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110012699.3A CN113791799A (zh) | 2021-01-06 | 2021-01-06 | 系统升级方法及装置、计算机可读存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110012699.3A CN113791799A (zh) | 2021-01-06 | 2021-01-06 | 系统升级方法及装置、计算机可读存储介质、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113791799A true CN113791799A (zh) | 2021-12-14 |
Family
ID=79181095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110012699.3A Pending CN113791799A (zh) | 2021-01-06 | 2021-01-06 | 系统升级方法及装置、计算机可读存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113791799A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114466026A (zh) * | 2022-01-05 | 2022-05-10 | 杭州网易云音乐科技有限公司 | 应用程序接口的更新方法、装置、存储介质和计算设备 |
CN115103028A (zh) * | 2022-07-22 | 2022-09-23 | 深圳竹云科技股份有限公司 | SaaS应用的请求处理方法、装置、计算机设备 |
CN114466026B (zh) * | 2022-01-05 | 2024-05-14 | 杭州网易云音乐科技有限公司 | 应用程序接口的更新方法、装置、存储介质和计算设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106130798A (zh) * | 2016-08-29 | 2016-11-16 | 上海斐讯数据通信技术有限公司 | 一种服务系统平滑升级的方法 |
CN107145347A (zh) * | 2017-04-27 | 2017-09-08 | 努比亚技术有限公司 | 一种应用灰度发布方法、设备及存储介质 |
CN107809445A (zh) * | 2016-08-31 | 2018-03-16 | 阿里巴巴集团控股有限公司 | 服务请求处理系统、方法和装置 |
CN108696551A (zh) * | 2017-04-06 | 2018-10-23 | 中兴通讯股份有限公司 | 系统进程间请求寻址的方法和装置 |
CN109257440A (zh) * | 2018-10-29 | 2019-01-22 | 南京南瑞信息通信科技有限公司 | 一种基于服务注册中心的服务发现和客户端负载均衡方法 |
CN110661835A (zh) * | 2018-06-29 | 2020-01-07 | 马上消费金融股份有限公司 | 一种灰度发布方法及其处理方法、节点及系统和存储装置 |
CN110837424A (zh) * | 2019-10-15 | 2020-02-25 | 东软集团股份有限公司 | 服务实例确定方法、装置、存储介质及电子设备 |
CN112000348A (zh) * | 2020-07-28 | 2020-11-27 | 金蝶医疗软件科技有限公司 | 服务灰度发布的控制方法、装置、计算机设备 |
-
2021
- 2021-01-06 CN CN202110012699.3A patent/CN113791799A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106130798A (zh) * | 2016-08-29 | 2016-11-16 | 上海斐讯数据通信技术有限公司 | 一种服务系统平滑升级的方法 |
CN107809445A (zh) * | 2016-08-31 | 2018-03-16 | 阿里巴巴集团控股有限公司 | 服务请求处理系统、方法和装置 |
CN108696551A (zh) * | 2017-04-06 | 2018-10-23 | 中兴通讯股份有限公司 | 系统进程间请求寻址的方法和装置 |
CN107145347A (zh) * | 2017-04-27 | 2017-09-08 | 努比亚技术有限公司 | 一种应用灰度发布方法、设备及存储介质 |
CN110661835A (zh) * | 2018-06-29 | 2020-01-07 | 马上消费金融股份有限公司 | 一种灰度发布方法及其处理方法、节点及系统和存储装置 |
CN109257440A (zh) * | 2018-10-29 | 2019-01-22 | 南京南瑞信息通信科技有限公司 | 一种基于服务注册中心的服务发现和客户端负载均衡方法 |
CN110837424A (zh) * | 2019-10-15 | 2020-02-25 | 东软集团股份有限公司 | 服务实例确定方法、装置、存储介质及电子设备 |
CN112000348A (zh) * | 2020-07-28 | 2020-11-27 | 金蝶医疗软件科技有限公司 | 服务灰度发布的控制方法、装置、计算机设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114466026A (zh) * | 2022-01-05 | 2022-05-10 | 杭州网易云音乐科技有限公司 | 应用程序接口的更新方法、装置、存储介质和计算设备 |
CN114466026B (zh) * | 2022-01-05 | 2024-05-14 | 杭州网易云音乐科技有限公司 | 应用程序接口的更新方法、装置、存储介质和计算设备 |
CN115103028A (zh) * | 2022-07-22 | 2022-09-23 | 深圳竹云科技股份有限公司 | SaaS应用的请求处理方法、装置、计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112118565B (zh) | 多租户服务灰度发布方法、装置、计算机设备和存储介质 | |
US20200099606A1 (en) | Distrubuted testing service | |
CN111240763A (zh) | 配置更新方法、装置、设备及存储介质 | |
US10491687B2 (en) | Method and system for flexible node composition on local or distributed computer systems | |
US9400641B2 (en) | Adaptable middleware layer | |
US20020091805A1 (en) | Method and system for dynamically purposing a computing device | |
KR20140047580A (ko) | 다중-서버 예약 시스템 상의 동기화 메커니즘 시스템 및 방법 | |
US20080162609A1 (en) | Content switch management | |
US20200288302A1 (en) | Service Notification Method For Mobile Edge Host And Apparatus | |
US9172773B2 (en) | Managing technology resources across multiple platforms | |
US20100313197A1 (en) | System and method for operating domain profile using database in core framework for sdr mobile terminals | |
CN112636992B (zh) | 一种动态路由方法、装置、设备及存储介质 | |
US11595299B2 (en) | System and method of suppressing inbound payload to an integration flow of an orchestration based application integration | |
CN102355499B (zh) | 云计算系统 | |
CN113791799A (zh) | 系统升级方法及装置、计算机可读存储介质、电子设备 | |
CN101236510B (zh) | 一种ejb集群的失败恢复处理方法及系统 | |
CN110730197A (zh) | 一种服务发现方法和系统 | |
US11881996B2 (en) | Input and output for target device communication | |
CN114285859B (zh) | 中间层区块链服务的数据处理方法、装置、设备及存储介质 | |
CN112035270A (zh) | 接口适配方法、系统、装置、计算机可读介质及电子设备 | |
CN113992759A (zh) | 应用于局域网的联合解析装置、方法及电子设备 | |
CN114461424A (zh) | 单元化部署架构下的单元间服务发现方法、装置及系统 | |
CN112350856A (zh) | 分布式服务签退方法及设备 | |
US10812379B2 (en) | Baggage messaging handling systems and methods | |
van Gurp et al. | Service grid variability realization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |