一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件系统的组件适配方法、装置、服务端及存储介质与流程

2022-12-20 01:17:32 来源:中国专利 TAG:


1.本技术属于计算机技术领域,尤其涉及一种软件系统的组件适配方法、装置、服务端及计算机可读存储介质。


背景技术:

2.高可用性(high availability,ha)通常指一个软件系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。因此,为了提高软件系统的服务效率,需要实现系统的高可用性。
3.然而,现有技术中在将原有不支持高可用的软件系统改造成支持多组件副本高可用的软件系统,只是简单的将软件系统中的各个组件都设置为主备模式,也就是说,现有软件系统的组件适配方法通常是对所有组件都采用相同的适配处理,灵活性和实用性较低。


技术实现要素:

4.本技术实施例提供了一种软件系统的组件适配方法、装置、服务端及计算机可读存储介质,可以解决现有技术存在的灵活性和实用性较低的问题。
5.第一方面,本技术实施例提供了一种软件系统的组件适配方法,应用于服务端,所述方法包括:
6.获取软件系统的待适配组件;
7.确定所述待适配组件提供服务的类型;
8.根据预设的与所述类型对应的处理策略,对所述待适配组件进行适配处理。
9.可选的,所述根据预设的与所述类型对应的处理策略,对所述待适配组件进行适配处理,包括:
10.若所述类型为无状态且无存储的服务类型,则部署与所述待适配组件提供相同服务的组件副本;所述无状态且无存储指所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关数据未存储于外部组件。
11.可选的,所述根据预设的与所述类型对应的处理策略,对所述待适配组件进行适配处理,包括:
12.若所述类型为无状态且有存储的服务类型,则部署与所述待适配组件提供相同服务的组件副本,且将所述待适配组件、所述组件副本以及外部组件存储的数据存储至共享存储器;所述无状态且有存储指所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关数据存储于所述外部组件。
13.可选的,所述根据预设的与所述类型对应的处理策略,对所述待适配组件进行适配处理,包括:
14.若所述类型为有状态且有存储的服务类型或者有状态且无存储的服务类型,则部署与所述待适配组件提供相同服务的多个组件副本,且将所述待适配组件、所述多个组件副本以及外部组件存储的数据存储至共享存储器;其中,每个所述组件副本均携带有对应
的服务地址;所述有状态有存储指所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据存储于所述外部组件;所述有状态无存储指所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据未存储于所述外部组件;
15.从所述多个组件副本中选取目标组件副本,并在服务注册中心通过所述目标组件副本携带的服务地址完成服务注册。
16.可选的,所述从所述多个组件副本中选取目标组件副本,包括:
17.在服务代理组件的配置项中配置有与所述组件副本数量相等的多个副本地址;所述多个副本地址与所述多个组件副本一一对应;所述服务代理组件至少有两个;
18.检测各个所述副本地址分别对应的组件副本是否正常运行;
19.从正常运行的各个所述组件副本中选取所述目标组件副本。
20.可选的,所述服务代理组件为网关服务。
21.可选的,所述在服务注册中心通过所述目标组件副本携带的服务地址完成服务注册之后,还包括:
22.每隔预设时长检测所述目标组件副本是否正常运行;
23.若所述目标组件副本未正常运行,则从所述多个组件副本中选取除所述目标组件副本之外的一个组件副本,并在所述服务注册中心通过所述一个组件副本携带的服务地址完成服务注册。
24.可选的,所述在服务注册中心通过所述目标组件副本携带的服务地址完成服务注册之后,还包括:
25.若在预设时间段后检测到所述服务注册中心未接收到服务代理组件发送的与所述目标组件副本对应的心跳包,则从所述多个组件副本中选取除所述目标组件副本之外的一个组件副本,并在所述服务注册中心通过所述一个组件副本携带的服务地址完成服务注册。
26.第二方面,本技术实施例提供了一种软件系统的组件适配装置,应用于服务端,所述装置包括:
27.获取单元,用于获取软件系统的待适配组件;
28.确定单元,用于确定所述待适配组件提供服务的类型;
29.处理单元,用于根据预设的与所述类型对应的处理策略,对所述待适配组件进行适配处理。
30.第三方面,本技术实施例提供了一种服务端,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,上述处理器执行所述计算机程序时实现如上述第一方面中任一项所述的软件系统的组件适配方法的步骤。
31.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面中任一项所述的软件系统的组件适配方法的步骤。
32.第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在服务端上运行时,使得服务端可执行上述第一方面中任一项所述的软件系统的组件适配方法。
33.本技术实施例与现有技术相比存在的有益效果是:
34.本技术实施例提供的一种软件系统的组件适配方法,通过获取软件系统的待适配
组件;确定待适配组件提供服务的类型;根据预设的与类型对应的处理策略,对待适配组件进行适配处理。与现有技术中对所有组件都采用同一种适配方式相比,本技术实施例结合了待适配组件提供服务的类型,根据不同的类型进行不同的适配处理,也就是说,可以对提供不同类型的服务的组件分别进行不同的适配处理,从而提高了组件适配处理的灵活性与实用性。
附图说明
35.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1是本技术一实施例提供的软件系统的组件适配方法的实现流程图;
37.图2是本技术另一实施例提供的软件系统的组件适配方法的实现流程图;
38.图3是本技术再一实施例提供的软件系统的组件适配方法的实现流程图;
39.图4是本技术又一实施例提供的软件系统的组件适配方法的实现流程图;
40.图5是本技术又一实施例提供的软件系统的组件适配方法的实现流程图;
41.图6是本技术又一实施例提供的软件系统的组件适配方法的实现流程图;
42.图7是本技术一实施例提供的软件系统的组件适配装置的结构示意图;
43.图8是本技术一实施例提供的服务端的结构示意图。
具体实施方式
44.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
45.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
46.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
47.如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0048]
另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0049]
在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0050]
请参阅图1,图1是本技术一实施例提供的一种软件系统的组件适配方法的实现流程图。本技术实施例中,该软件系统的组件适配方法的执行主体为服务端。其中,服务端可以是台式电脑、计算机等设备。
[0051]
如图1所示,本技术一实施例提供的软件系统的组件适配方法可以包括s101~s103,详述如下:
[0052]
在s101中,获取软件系统的待适配组件。
[0053]
在实际应用中,为了实现软件系统的高可用性,用户可以向配置有某个软件系统的服务端发送组件适配请求。
[0054]
在本技术实施例中,服务端检测到组件适配请求可以是:检测到预设操作。其中,预设操作可以根据实际需要设置,此处不作限制,示例性的,预设操作可以是用户点击预设控件,即服务端若检测到用户点击服务端上的预设控件,或者点击服务端内相关应用程序(application,app)中的预设控件,则认为检测到了预设操作,即检测到了组件适配请求。
[0055]
当然,上述预设操作也可以是一个时间触发操作,服务端在运行时可以配置有相应的处理流程,该处理流程包含有多个关键事件的触发节点,上述关键事件包括对组件的适配处理事件,在该情况下,若服务端检测到到达组件的适配处理事件关联的触发节点,则执行s101~s103的操作,以执行对软件系统的组件进行适配处理操作。
[0056]
终端设备在检测到组件适配请求后,可以确定软件系统中的一个组件为待适配组件。需要说明的是,待适配组件可以是软件系统中的任意一个组件。
[0057]
在s102中,确定所述待适配组件提供服务的类型。
[0058]
在实际应用中,软件系统中的不同组件由于其自身的特性和服务功能,不同组件提供的服务可以不同,即不同组件提供服务的类型可以不同。
[0059]
本技术实施例中,组件提供服务的类型包括但不限于:有状态且有存储的服务类型、有状态且无存储的服务类型、无状态且有存储的服务类型及无状态且无存储的服务类型。
[0060]
需要说明的是,状态化的判断是指来自相同的客户端的请求在服务端是否具备上下文关系。若是状态化请求(即有状态),那么服务端都要保存上述请求的相关信息,使得后面发送的请求可以默认地使用以前的请求信息。若是无状态的请求(即无状态),服务端的处理信息全部来自于此次请求所携带的信息以及可以被所有请求所使用的公共信息。
[0061]
有无存储的判断是指组件是否有持久化状态的数据存储在外部组件中。
[0062]
基于此,服务端具体可以根据以下步骤确定待适配组件提供服务的类型,详述如下:
[0063]
若所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据存储于外部组件,则确定所述类型为有状态且有存储的服务类型。
[0064]
若所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据未存储于外部组件,则确定所述类型为有状态且无存储的服务类型。
[0065]
若所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关
数据存储于外部组件,则确定所述类型为无状态且有存储的服务类型。
[0066]
若所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关数据未存储于外部组件,则确定所述类型为无状态且无存储的服务类型。
[0067]
本实施例中,服务端在检测到服务端在提供服务时需要缓存客户端的信息,即服务端都要保存客户端发送的请求的相关信息,也就是说,来自相同的客户端的请求在服务端具备上下文关系,此时,可以确定待适配组件为有状态服务。同时,服务端在检测到待适配组件的相关数据(即持久化状态的数据)存储于外部组件,可以确定待适配组件为有存储服务。因此,服务端可以确定待适配组件为有状态且有存储的服务类型。
[0068]
服务端在检测到服务端在提供服务时需要缓存客户端的信息,即服务端都要保存客户端发送的请求的相关信息,也就是说,来自相同的客户端的请求在服务端具备上下文关系,此时,可以确定待适配组件为有状态服务。同时,服务端在检测到待适配组件的相关数据(即持久化状态的数据)未存储于外部组件,可以确定待适配组件为无存储服务。因此,服务端可以确定待适配组件为有状态且无存储的服务类型。
[0069]
服务端在检测到服务端在提供服务时无需缓存客户端的信息,即服务端无需保存客户端发送的请求的相关信息,服务端的处理信息全部来自于此次请求所携带的信息以及可以被所有请求所使用的公共信息,也就是说,来自相同的客户端的请求在服务端不具备上下文关系,此时,可以确定待适配组件为无状态服务。同时,服务端在检测到待适配组件的相关数据(即持久化状态的数据)存储于外部组件,可以确定待适配组件为有存储服务。因此,服务端可以确定待适配组件为无状态且有存储的服务类型。
[0070]
服务端在检测到服务端在提供服务时无需缓存客户端的信息,即服务端无需保存客户端发送的请求的相关信息,服务端的处理信息全部来自于此次请求所携带的信息以及可以被所有请求所使用的公共信息,也就是说,来自相同的客户端的请求在服务端不具备上下文关系,此时,可以确定待适配组件为无状态服务。同时,服务端在检测到待适配组件的相关数据(即持久化状态的数据)未存储于外部组件,可以确定待适配组件为无存储服务。因此,服务端可以确定待适配组件为无状态且无存储的服务类型。
[0071]
在s103中,根据预设的与所述类型对应的处理策略,对所述待适配组件进行适配处理。
[0072]
本技术实施例中,服务端预先存储了各个服务类型与各个处理策略之间的对应关系,因此,服务端在确定待适配组件提供服务的类型后,可以从预先存储的各个服务类型与各个处理策略之间的对应关系中,确定与该待适配组件提供服务的类型对应的处理策略,并根据该处理策略对待适配组件进行适配处理。
[0073]
以上可以看出,本技术实施例提供的一种软件系统的组件适配方法,通过获取软件系统的待适配组件;确定待适配组件提供服务的类型;根据预设的与类型对应的处理策略,对待适配组件进行适配处理。与现有技术中对所有组件都采用同一种适配方式相比,本技术实施例结合了待适配组件提供服务的类型,根据不同的类型进行不同的适配处理,也就是说,可以对提供不同类型的服务的组件分别进行不同的适配处理,从而提高了组件适配处理的灵活性与实用性。
[0074]
在本技术的另一个实施例中,当待适配组件提供服务的类型为有状态且有存储的服务类型或者有状态且无存储的服务类型时,请参阅图2,图2是本技术另一实施例提供的
软件系统的组件适配方法。相对于图1对应的实施例,本实施例中的s103具体可以包括s201~s202,详述如下:
[0075]
在s201中,若所述类型为有状态且有存储的服务类型或者有状态且无存储的服务类型,则部署与所述待适配组件提供相同服务的多个组件副本,且将所述待适配组件、所述多个组件副本以及外部组件存储的数据存储至共享存储器;其中,每个所述组件副本均携带有对应的服务地址;所述有状态有存储指所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据存储于所述外部组件;所述有状态无存储指所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据未存储于所述外部组件。
[0076]
本实施例中,服务端在检测到待适配组件提供服务的类型为有状态且有存储的服务类型或者有状态且无存储的服务类型时,可以部署与待适配组件提供相同服务的多个组件副本,同时,为了将待适配组件、多个组件副本及外部组件存储的数据进行共享,服务端可以将待适配组件、多个组件副本以及外部组件存储的数据存储至共享存储器。
[0077]
需要说明的是,每个组件副本均携带有对应的服务地址。
[0078]
在s202中,从所述多个组件副本中选取目标组件副本,并在服务注册中心通过所述目标组件副本携带的服务地址完成服务注册。
[0079]
本实施例中,服务端中设置有服务注册中心。
[0080]
在实际应用中,服务注册中心服务用于实时存储更新服务提供者信息及该服务的实时调用者信息。其中,该服务注册中心可以是etcd。etcd是使用go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。该服务注册中心还可以是zookeeper,nacos等。
[0081]
由于待适配组件提供服务的类型中的有状态表示服务端会记录客户端发送的请求的相关信息,服务端会保存客户端状态,客户端发送的请求依赖服务端,客户端发送的多次请求必须访问同一个待适配组件的服务地址,因此,服务端需要从多个组件副本中选取目标组件副本,并在服务注册中心通过目标组件副本携带的服务地址完成服务注册。
[0082]
在本技术的一个实施例中,服务端具体可以通过如图3所示的s301~s303选取目标组件副本,详述如下:
[0083]
在s301中,在服务代理组件的配置项中配置有与所述组件副本数量相等的多个副本地址;所述多个副本地址与所述多个组件副本一一对应;所述服务代理组件至少有两个。
[0084]
在s302中,检测各个所述副本地址分别对应的组件副本是否正常运行。
[0085]
在s303中,从正常运行的各个所述组件副本中选取所述目标组件副本。
[0086]
本实施例中,服务端配置有服务代理组件。其中,服务代理组件用于提供服务注册的功能,协助有需要的组件进行服务注册。
[0087]
需要说明的是,为了保证软件系统的高可用,服务代理组件可以包括至少两个,以便某个服务代理组件出现问题时,可以及时使用其他服务代理组件执行步骤s301。
[0088]
在本技术的一个实施例中,为了提高组件适配效率,服务端部署的服务代理组件可以是网关服务。其中,网关服务是单一访问点,并充当多项服务的代理。
[0089]
以服务代理组件为网关服务为例,本实施例中,针对网关服务,服务端可以在该网关服务的配置项中配置与组件副本数量相等的多个副本地址,且该多个副本地址与多个组
件副本一一对应。基于此,服务端可以控制该网关服务通过超文本传输协议(hyper text transfer protocol,http)调用与该网关服务的配置项中配置的每个副本地址对应的组件副本的健康检查接口对该组件副本进行检查,确定该组件副本是否正常运行。也就是说,服务代理组件可以协助服务端对每个组件副本的服务状态进行健康检查。
[0090]
在实际应用中,健康检查接口用于判定运行在某一个组件上的服务是否可用,负载均衡或者是监控服务会通过对这个接口返回结果判定是否分配流量或者报警。
[0091]
本实施例中,由于此时待适配组件提供服务的类型为有状态且有存储的服务类型或者有状态且无存储的服务类型,此时,服务端会缓存部分数据,进而导致前端请求链路需要稳定的路由到达同一个组件副本的服务地址,然而,若服务端在确定出至少一个正常运行的组件副本后,该至少一个正常运行的组件副本都在服务注册中心进行服务注册,则会导致服务端在进行组件适配时会轮训适配到不同的组件副本,也就是说,无法保证后续使用的组件副本为同一个副本,因此,服务端在确定出至少一个正常运行的组件副本后,需要从该至少一个正常运行的组件副本中基于预设条件选取目标组件副本,即执行抢占注册过程,使得后续进行组件适配时,可以使用同一个组件副本。
[0092]
需要说明的是,预设条件可以根据实际需要设置,此处不作限制,示例性的,预设条件可以是采用随机函数。其中,随机函数可以是rand()。
[0093]
本实施例中,为了避免多个组件副本同时在服务注册中心进行服务注册(即重复实现抢占注册功能),同时也方便后续的抢占注册功能迭代管理,服务端可以通过服务代理组件确定目标组件副本,即通过服务代理组件实现抢占注册功能。具体地,服务代理组件可以基于自身配置项中配置的与组件副本数量相等的多个副本地址与多个组件副本的对应关系,随机从至少一个正常运行的组件中确定目标组件副本,进而确定需要在服务注册中心进行服务注册的服务地址。
[0094]
本实施例中,服务端在确定目标组件副本后,可以在服务注册中心通过目标组件副本携带的服务地址完成服务注册。
[0095]
需要说明的是,此时,目标组件副本确定为主副本,待适配组件中除目标组件副本之外的其他组件副本确定为从副本。
[0096]
在本技术的另一个实施例中,服务端在服务注册中心通过目标组件副本携带的服务地址完成服务注册之后,服务端可以实现如图4所示的s401~s402,详述如下:
[0097]
在s401中,每隔预设时长检测所述目标组件副本是否正常运行。
[0098]
本实施例中,服务端可以每隔预设时长通过调用健康检查接口检查目标组件副本是否正常运行。
[0099]
在本实施例的一种实现方式中,由于服务代理组件还可以对已在服务注册中心进行服务注册的服务地址的有效性进行检测,即检测目标组件副本是否正常运行,因此,服务端可以通过服务代理组件每隔预设时长,调用与该服务代理组件的配置项中配置的每个副本地址对应的组件副本的健康检查接口,对该目标组件副本进行检查,确定该目标组件副本是否正常运行。
[0100]
其中,预设时长可以根据实际需要设置,此处不作限制,示例性的,预设时长可以是10秒。
[0101]
在本技术的一个实施例中,服务端在检测到目标组件副本未正常运行时,可以执
行步骤s402。
[0102]
在本技术的另一个实施例中,服务端在检测到目标组件副本可以正常运行时,说明该目标组件副本可以继续被访问/使用,因此,服务端可以再次间隔预设时长检测目标组件副本是否正常运行,直至检测到目标组件副本未正常运行时,可以执行步骤s402。
[0103]
在s402中,若所述目标组件副本未正常运行,则从所述多个组件副本中选取除所述目标组件副本之外的一个组件副本,并在所述服务注册中心通过所述一个组件副本携带的服务地址完成服务注册。
[0104]
本实施例中,服务端在检测到目标组件副本未正常运行时,说明该目标组件副本无法被访问/使用,因此,服务端需要从多个组件副本中选取除目标组件副本之外的一个组件副本,并在服务注册中心通过一个组件副本携带的服务地址完成服务注册,以替代目标组件副本在服务注册中心注册的服务地址,从而保证该待适配组件可以继续被访问/使用,以减少软件系统的故障时间,提高了软件系统的工作效率。
[0105]
在本实施例的一种实现方式中,服务端可以通过服务代理组件从多个组件副本中选取除目标组件副本之外的一个组件副本。具体地,服务代理组件可以基于自身配置项中配置的与组件副本数量相等的多个副本地址与多个组件副本的对应关系,随机从至少一个正常运行的组件中选取除目标组件副本之外的一个组件副本,并在服务注册中心通过一个组件副本携带的服务地址完成服务注册,以替代目标组件副本在服务注册中心注册的服务地址,即实现对服务注册中心的服务地址的添加和删除。
[0106]
需要说明的是,此时,上述在服务注册中心完成服务注册的服务地址对应的一个组件副本确定为主副本,待适配组件中除该组件副本外的其他组件副本,包括目标组件副本均确定为从副本。
[0107]
在本技术的再一个实施例中,服务端在服务注册中心通过目标组件副本携带的服务地址完成服务注册之后,服务端还可以每隔预设时长检测服务注册中心中的服务地址是否存在。
[0108]
本实施例中,服务端在检测到服务注册中心的服务地址存在时,可以再次间隔预设时长对服务注册中心中的服务地址是否存在。
[0109]
服务端在检测到服务注册中心的服务地址不存在时,服务端可以从多个组件副本中选取除目标组件副本之外的一个组件副本,并在服务注册中心通过一个组件副本携带的服务地址完成服务注册,以替代目标组件副本在服务注册中心注册的服务地址,从而保证该待适配组件可以继续被访问/使用,以减少软件系统的故障时间,提高了软件系统的工作效率。
[0110]
需要说明的是,此时,上述在服务注册中心完成服务注册的服务地址对应的一个组件副本确定为主副本,待适配组件中除该组件副本外的其他组件副本,包括目标组件副本均确定为从副本。
[0111]
以上可以看出,本实施例提供的软件系统的组件适配方法,在检测到待适配组件的服务类型为有状态且有存储的服务类型或者有状态且无存储的服务类型时,由于客户端发送的请求依赖服务端,多次请求必须访问同一个有状态服务的服务地址,因此,可以部署与待适配组件提供相同服务的多个组件副本,且将待适配组件、多个组件副本以及外部组件存储的数据存储至共享存储器;其中,每个组件副本均携带有对应的服务地址;从多个组
件副本中选取目标组件副本,并在服务注册中心通过目标组件副本携带的服务地址完成服务注册,从而实现了对有状态服务(包括有状态且有存储的服务类型以及有状态且无存储的服务类型)的待适配组件的高可用性,避免了有状态服务(包括有状态且有存储和有状态且无存储)的待适配组件出现单点故障问题,还提高了软件系统的稳定性。
[0112]
在本技术的再一个实施例中,当待适配组件提供服务的类型为无状态且有存储的服务类型时,请参阅图5,图5是本技术另一实施例提供的软件系统的组件适配方法。相对于图1对应的实施例,本实施例中的s103具体可以包括s501,详述如下:
[0113]
在s501中,若所述类型为无状态且有存储的服务类型,则部署与所述待适配组件提供相同服务的组件副本,且将所述待适配组件、所述组件副本以及外部组件存储的数据存储至共享存储器;所述无状态且有存储指所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关数据存储于所述外部组件。
[0114]
本实施例中,由于软件系统中每个组件都是单副本,使得软件系统中的各个组件都会产生单点故障的问题,因此,服务端在检测到待适配组件提供服务的类型为无状态且有存储的服务类型时,可以部署与待适配组件提供相同服务的组件副本,同时,为了将待适配组件、组件副本及外部组件存储的数据进行共享,服务端可以将待适配组件、组件副本以及外部组件存储的数据存储至共享存储器。
[0115]
需要说明的是,上述组件副本可以是一个或者多个。
[0116]
以上可以看出,本实施例提供的软件系统的组件适配方法,在检测到待适配组件的服务类型为无状态且有存储的服务类型时,由于客户端发送的请求不依赖于服务端的处理信息,任何多次的请求都不需要访问同一个无状态且有存储服务的待适配组件的服务地址,但是待适配组件的相关数据存储于外部组件中,因此,服务端可以部署与待适配组件提供相同服务的组件副本,且将待适配组件、组件副本以及外部组件存储的数据存储至共享存储器,从而实现待适配组件、组件副本以及外部组件存储的数据的数据共享,保证客户端发送的请求随机访问任意一个待适配组件的组件副本都可以成功,实现了无状态且有存储服务的待适配组件的高可用性,避免了无状态且有存储服务的待适配组件出现单点故障问题。
[0117]
在本技术的又一个实施例中,当待适配组件提供服务的类型为无状态且无存储的服务类型时,请参阅图6,图6是本技术另一实施例提供的软件系统的组件适配方法。相对于图1对应的实施例,本实施例中的s103具体可以包括s601,详述如下:
[0118]
在s601中,若所述类型为无状态且无存储的服务类型,则部署与所述待适配组件提供相同服务的组件副本;所述无状态且无存储指所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关数据未存储于外部组件。
[0119]
本实施例中,由于软件系统中每个组件都是单副本,使得软件系统中的各个组件都会产生单点故障的问题,因此,服务端在检测到待适配组件提供服务的类型为无状态且无存储的服务类型时,可以部署与待适配组件提供相同服务的组件副本,使得服务端在检测到待适配组件的一个组件副本出现问题时,可以访问其他提供相同服务的组件副本,以避免该待适配组件产生单点故障的问题。
[0120]
需要说明的是,上述组件副本可以是一个或者多个。
[0121]
以上可以看出,本实施例提供的软件系统的组件适配方法,在检测到待适配组件
提供服务的类型为无状态且无存储的服务类型时,由于客户端发送的请求不依赖服务端的处理信息,任何多次请求都不需要访问到同一个无状态且无存储服务的待适配组件的服务地址,因此,可以部署与待适配组件提供相同服务的组件副本,从而避免了该待适配组件产生单点故障的问题,提高了软件系统的处理效率,实现了软件系统的高可用性。
[0122]
在本技术的又一个实施例中,服务端在检测到服务注册中心通过目标组件副本携带的服务地址完成服务注册之后,服务端需要控制目标组件副本对应的网关副本每隔预设时间段向服务注册中心发送一个用于续约的心跳包,以使目标组件副本携带的服务地址继续存在于服务注册中心,保证目标组件副本携带的服务地址的可用性。其中,预设时间段可以根据实际需要设置,此处不作限制。
[0123]
需要说明的是,预设时间段大于预设时长。
[0124]
然而,当目标组件副本对应的网关副本由于其他原因(如网络故障)出现宕机时,该网关副本无法每隔预设时间段向服务注册中心发送一个用于续约的心跳包,也就是说,服务注册中心会检测到目标组件副本携带的服务地址没有正常续租期,从而导致服务注册中心会删除目标组件副本携带的服务地址。
[0125]
基于此,在s202之后,服务端可以执行以下步骤,详述如下:
[0126]
若在预设时间段后检测到所述服务注册中心未接收到服务代理组件发送的与所述目标组件副本对应的心跳包,则从所述多个组件副本中选取除所述目标组件副本之外的一个组件副本,并在所述服务注册中心通过所述一个组件副本携带的服务地址完成服务注册。
[0127]
本实施例中,在预设时间段后,服务端在检测到服务注册中心未接收到服务代理组件发送的与所述目标组件副本对应的心跳包时,说明目标组件副本携带的服务地址没有正常续租期,也就是说,目标组件副本携带的服务地址已被服务注册中心删除,因此,服务端需要从多个组件副本中选取除目标组件副本之外的一个组件副本,并在服务注册中心通过一个组件副本携带的服务地址完成服务注册,以替代目标组件副本在服务注册中心注册的服务地址,从而保证该待适配组件可以继续被访问/使用,以减少软件系统的故障时间,提高了软件系统的工作效率。
[0128]
在本实施例的一种实现方式中,服务端可以通过服务代理组件从多个组件副本中选取除目标组件副本之外的一个组件副本。具体地,服务代理组件可以基于自身配置项中配置的与组件副本数量相等的多个副本地址与多个组件副本的对应关系,随机从至少一个正常运行的组件中选取除目标组件副本之外的一个组件副本,并在服务注册中心通过一个组件副本携带的服务地址完成服务注册,以替代目标组件副本在服务注册中心注册的服务地址,即实现对服务注册中心的服务地址的添加和删除。
[0129]
需要说明的是,此时,上述在服务注册中心完成服务注册的服务地址对应的一个组件副本确定为主副本,待适配组件中除该组件副本外的其他组件副本,包括目标组件副本均确定为从副本。
[0130]
在本技术的又一个实施例中,当目标组件副本对应的网关副本在重启后恢复正常后,该目标组件副本仍然为从副本。
[0131]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限
定。
[0132]
对应于上文实施例所述的一种软件系统的组件适配方法,图8示出了本技术实施例提供的一种软件系统的组件适配装置的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。参照图7,该软件系统的组件适配装置700包括:获取单元71、确定单元72及处理单元73。其中:
[0133]
获取单元71用于获取软件系统的待适配组件。
[0134]
确定单元72用于确定所述待适配组件提供服务的类型。
[0135]
处理单元73用于根据预设的与所述类型对应的处理策略,对所述待适配组件进行适配处理。
[0136]
在本技术的一个实施例中,处理单元73具体包括:第一部署单元。
[0137]
第一部署单元用于若所述类型为无状态且无存储的服务类型,则部署与所述待适配组件提供相同服务的组件副本;所述无状态且无存储指所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关数据未存储于外部组件。
[0138]
在本技术的一个实施例中,处理单元73具体包括:第二部署单元。
[0139]
第二部署单元用于若所述类型为无状态且有存储的服务类型,则部署与所述待适配组件提供相同服务的组件副本,且将所述待适配组件、所述组件副本以及外部组件存储的数据存储至共享存储器;所述无状态且有存储指所述服务端在提供所述服务时未缓存客户端的信息,且所述待适配组件的相关数据存储于所述外部组件。
[0140]
在本技术的一个实施例中,处理单元73具体包括:第三部署单元和第一选取单元。其中:
[0141]
第三部署单元用于若所述类型为有状态且有存储的服务类型或者有状态且无存储的服务类型,则部署与所述待适配组件提供相同服务的多个组件副本,且将所述待适配组件、所述多个组件副本以及外部组件存储的数据存储至共享存储器;其中,每个所述组件副本均携带有对应的服务地址;所述有状态有存储指所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据存储于所述外部组件;所述有状态无存储指所述服务端在提供所述服务时缓存客户端的信息,且所述待适配组件的相关数据未存储于所述外部组件。
[0142]
选取单元用于从所述多个组件副本中选取目标组件副本,并在服务注册中心通过所述目标组件副本携带的服务地址完成服务注册。
[0143]
在本技术的一个实施例中,所述选取单元具体包括:第四部署单元、第一检测单元及第二选取单元。其中:
[0144]
第四部署单元用于在服务代理组件的配置项中配置有与所述组件副本数量相等的多个副本地址;所述多个副本地址与所述多个组件副本一一对应;所述服务代理组件至少有两个。
[0145]
第一检测单元用于检测各个所述副本地址分别对应的组件副本是否正常运行。
[0146]
第二选取单元用于从正常运行的各个所述组件副本中选取所述目标组件副本。
[0147]
在本技术的一个实施例中,所述服务代理组件为网关服务。
[0148]
在本技术的一个实施例中,软件系统的组件适配装置700还包括:第二检测单元和第三选取单元。其中:
[0149]
第二检测单元用于每隔预设时长检测所述目标组件副本是否正常运行。
[0150]
第三选取单元用于若所述目标组件副本未正常运行,则从所述多个组件副本中选取除所述目标组件副本之外的一个组件副本,并在所述服务注册中心通过所述一个组件副本携带的服务地址完成服务注册。
[0151]
在本技术的一个实施例中,软件系统的组件适配装置700还包括:第四选取单元。
[0152]
第四选取单元用于若在预设时间段后检测到所述服务注册中心未接收到服务代理组件发送的与所述目标组件副本对应的心跳包,则从所述多个组件副本中选取除所述目标组件副本之外的一个组件副本,并在所述服务注册中心通过所述一个组件副本携带的服务地址完成服务注册。
[0153]
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0154]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0155]
图8为本技术一实施例提供的服务端的结构示意图。如图8所示,该实施例的服务端8包括:至少一个处理器80(图8中仅示出一个)处理器、存储器81以及存储在所述存储器81中并可在所述至少一个处理器80上运行的计算机程序82,所述处理器80执行所述计算机程序82时实现上述任意各个软件系统的组件适配方法实施例中的步骤。
[0156]
该服务端可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是服务端8的举例,并不构成对服务端8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
[0157]
所称处理器80可以是中央处理单元(central processing unit,cpu),该处理器80还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0158]
所述存储器81在一些实施例中可以是所述服务端8的内部存储单元,例如服务端8的内存。所述存储器81在另一些实施例中也可以是所述服务端8的外部存储设备,例如所述服务端1上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器81还可以既包括所述服务端8的内部存储单元也包括外部存储设备。所述存储器81用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述
存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
[0159]
本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
[0160]
本技术实施例提供了一种计算机程序产品,当计算机程序产品在服务端上运行时,使得服务端执行时实现可实现上述各个方法实施例中的步骤。
[0161]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到服务端的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0162]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0163]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献