一种服务集群的更新方法及装置与流程

文档序号:25779911发布日期:2021-07-09 09:02阅读:126来源:国知局
一种服务集群的更新方法及装置与流程

1.本申请涉及云技术服务领域,特别涉及一种服务集群的更新方法及装置。


背景技术:

2.目前市场上存在多种开源的微服务注册中心,例如,eureka、cosul等,实现了微服务的注册与管理功能,分为服务端和客户端两部分。服务端主要用于提供服务的注册并存储注册信息,以及用于提供服务注册表。客户端又分为服务提供方和服务消费方,服务提供方负责将自身的服务注册到服务端,服务消费方负责从服务端拉取服务注册表,并消费服务。
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.处理单元,被配置为执行:
37.在服务端的第一服务器启动加入服务集群时,将第一服务器的身份信息注册到数据存储节点,所述数据存储节点用于存储所述服务集群包括的服务端的服务器的身份信息;从所述数据存储节点获取所述服务集群包括的服务端的服务器的身份信息;
38.存储单元,用于保存所述服务集群包括的服务端的服务器的身份信息;
39.所述处理单元,还用于确定所述服务集群包括的服务端的服务器发生变化,并根据所述数据存储节点存储的服务集群包括的服务端的服务器的身份信息,更新保存的服务端的服务器的身份信息。
40.第六方面,本申请实施例提供了另一种服务集群的更新装置,包括:
41.处理单元,用于在客户端启动后,从数据存储节点获取服务集群包括的服务端的服务器的身份信息;
42.存储单元,用于保存所述服务集群包括的服务端的服务器的身份信息;
43.所述处理单元,还用于确定所述服务集群包括的服务端的服务器发生变化,并根据所述数据存储节点存储的服务集群包括的服务端的服务器的身份信息,更新保存的服务端的服务器的身份信息;
44.其中,所述数据存储节点用于存储所述服务集群包括的服务端的服务器的身份信息。
45.第七方面,本申请实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面所记载的方法。
46.第三方面至第七方面中任意一种实现方式所带来的技术效果可参见第一方面至第二方面对应的实现方式所带来的技术效果,此处不再赘述。
附图说明
47.为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
48.图1为本申请实施例提供的一种eureka的集群部署系统架构图;
49.图2为本申请实施例提供的一种eureka集群的更新方法流程图;
50.图3为本申请实施例提供的一种状态表的示意图;
51.图4为本申请实施例提供的一种eureka服务端与eureka客户端之间的交互过程;
52.图5为本申请实施例提供的一种服务注册表的示意图;
53.图6为本申请实施例提供的另一种eureka集群的更新方法流程图;
54.图7为本申请实施例提供的一种具体的eureka集群更新的流程图;
55.图8为本申请实施例提供的另一种具体的eureka集群更新的流程图;
56.图9a为本申请实施例提供的一种eureka服务端的服务器的结构示意图;
57.图9b为本申请实施例提供的一种eureka客户端的服务器的结构示意图;
58.图10为本申请实施例提供的一种用于实现eureka集群更新的装置示意图。
具体实施方式
59.为使本申请的目的、实施方式和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
60.基于本申请描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请所附权利要求保护的范围。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
61.需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
62.目前的注册中心分为服务端和客户端。其中,服务端为一个或者多个服务端的服务器组成的服务集群。客户端的服务器将自身的服务注册到服务端的服务器中,在服务端的服务器中生成服务注册表,或者从服务端的服务器获取服务注册表,消费服务。目前,部署服务集群的方法是采用通过配置文件来进行部署集群,在配置文件中指示服务集群中各个服务端的服务器的地址,根据地址部署各个节点,构成服务集群。但是,如果服务集群中的服务端的服务器发生变化,需要更新集群时,需要人工修改各个的服务器的配置文件,并且还需要修改所有客户端的配置文件。不仅增加人工的工作量,而且与目前主流的无状态的云服务理念相违背。
63.有鉴于此,本申请提出了一种服务集群的更新方法及装置。服务端的服务器启动时,将自身的身份信息注册到数据存储节点,并从数据存储节点中获取其他的服务端的服务器的身份信息并保存,组成服务集群。当服务集群发生变化时,服务端的服务器可以直接从数据存储节点获取更新的服务集群的身份信息以更新服务集群,提升了整个微服务体系的灵活性和健壮性。
64.需要说明的是,本申请涉及的注册中心可以采用eureka、consul、zookeeper技术等等,其中eureka的服务集群中包括的服务端的服务器中存储的客户端的身份信息可以都相同。在本申请中,节点也可以称为服务器,则服务端的节点(后续简称为服务端节点)也可
以称为服务端的服务器(后续简称为服务端服务器)、客户端的节点也可以称为客户端的服务器(后续均简称为客户端)。如下以注册中心采用eureka技术为例,对本申请提出的方案进行介绍。将采用eureka技术的服务端的节点称为eureka服务端节点,将采用eureka技术的客户端节点简称为eureka客户端。
65.参见图1,示出了一种eureka的集群部署系统架构图。图1所示的eureka集群部署系统中包括eureka服务端节点构成的服务集群,需要知道的是,本申请对于服务集群中包括的eureka服务端节点的个数不作具体限定,在图1中,以所述服务集群包括第一eureka服务端节点101和第二eureka服务端节点102为例进行介绍。图1示出的系统中还包括第一eureka客户端103和第二eureka客户端104。需要说明的是,eureka客户端可以按照功能分为两种:服务提供方和服务消费方。例如,钱包功能对应的客户端可以看作是服务提供方,支付功能对应的客户端可以看作是服务消费方,作为服务消费方的支付功能通过调用作为服务提供方的钱包功能来实现支付。示例性地,在图1所示的系统中,以第一eureka客户端103作为实现服务提供方功能的客户端,以第二eureka客户端104作为实现服务消费功能的客户端为例进行说明。需要说明的是,图1仅作为一种示例,本申请对于eureka客户端的个数不作具体限定。图1示出的系统中还可以包括数据存储节点105,当然,本申请提到的数据存储节点可以只有一个,也可以有多个,多个数据存储节点构成一个存储系统,在图1中,以一个数据存储节点为例进行说明。
66.图1示出的系统中,eureka服务端节点用于将自身的身份信息注册到数据存储节点105中,例如,eureka服务端节点注册的身份信息可以包括自身的服务器地址、端口或者自身提供的服务的名称。eureka服务端节点还可以定期访问数据存储节点105,获取除自身之外其他的eureka服务端节点的身份信息并保存,并且还可以与除自身之外的其他eureka服务端节点组成服务集群。
67.eureka服务端节点还用于接收第一eureka客户端注册的身份信息,并可以采用服务注册表的形式将第一eureka客户端的身份信息进行存储,当然还可以采用其它的形式存储各个eureka客户端的身份信息,本申请对此不作具体限定。已知在图1中,第一eureka客户端是作为服务提供方的,所以第一eureka客户端可以将提供的服务的名称、自身服务器的地址、端口等信息注册到eureka服务端节点中。eureka服务端节点还可以将第一eureka客户端注册的身份信息发送到服务集群中其他的eureka服务端节点中,例如,可以向其他的eureka服务端节点发送服务注册表。eureka服务端节点还用于接收第二eureka客户端发送的获取服务注册表的请求,将服务注册表发送到第二eureka客户端。
68.图1示出的eureka客户端可以周期性地访问数据存储节点105,获取eureka服务端节点的身份信息并保存。
69.图1示出的数据存储节点105用于接收eureka服务端节点注册的身份信息,并可以采用状态表的形式将eureka服务端节点的身份信息进行存储。在一些实施例中,数据存储节点105还可以在eureka服务端节点的身份信息发生变化时,可以向eureka客户端和eureka服务端节点发送通知消息,用于通知服务集群的eureka服务端节点的数量发生变化,比如eureka服务端节点扩容、缩容等。进而eureka客户端和eureka服务端节点能够及时地从数据存储节点105获取更新的服务集群包括的eureka服务端节点的身份信息。
70.需要说明的是,图1仅作为一种示例,本申请不对服务端节点、客户端节点以及数
据存储节点的数量不作具体限定。
71.如下对本申请实施例提供的eureka集群的更新方法进行介绍。为了便于描述,后续将eureka服务端节点简称为服务节点,即由一个或多个服务节点组成服务集群。将eureka客户端简称为客户端,并将eureka客户端中用于实现提供服务功能的客户端称为提供服务客户端,将eureka客户端中用于实现消费服务功能的客户端称为消费服务客户端。
72.参见图2,为本申请实施例提供的一种eureka集群的更新方法流程图,图2示出的方法流程图应用于eureka服务端,该方法流程具体可以包括:
73.201,第一服务节点启动加入服务集群时,将自身的身份信息注册到数据存储节点。
74.其中,数据存储节点用于存储服务集群包括的服务节点的身份信息,服务集群中可以包括一个或者多个服务节点。可选地,服务节点的身份信息可以包括提供的服务的名称,服务节点对应的服务器的地址、端口或者设备的id等信息。
75.作为一种可选地方式,数据存储节点接收到服务集群中包括的服务节点的身份信息后,可以采用表的形式对服务节点的身份信息进行存储。示例性地,本申请中将用于存储服务节点身份信息的表称为状态表。作为一种举例,状态表的内容可以参见图3。
76.202,第一服务节点从数据存储节点获取服务集群包括的服务节点的身份信息并保存。
77.第一服务节点可以在注册自身的身份信息后,访问数据存储节点,获取数据存储节点中存储的服务节点的身份信息。可选地,由于数据存储节点存储的服务节点中包括第一服务节点,所以第一服务节点在获取服务节点的身份信息时,可以首先排除自身的身份信息,获取除第一服务节点之外的其他的服务节点的身份信息。或者,第一服务节点也可以获取状态表,并将状态表中除第一服务节点之外的其他的服务节点的身份信息进行保存。
78.203,第一服务节点确定服务集群包括的服务节点发生变化时,从数据存储节点获取更新的服务节点的身份信息。
79.可选地,服务集群中包括的服务节点发生的变化可以包括服务节点发生迁移、替换或者增加新的服务节点、减少服务节点等变化。第一服务节点确定服务集群中包括的服务节点发生变化时,可以从数据存储节点获取发生变化的服务节点的身份信息,并更新自身存储的服务集群包括的服务节点的身份信息。或者,数据存储节点中存储的服务节点发生变化时,数据存储节点会更新状态表,第一服务节点可以访问数据存储节点获取最新的状态表,并根据最新的状态表的内容更新自身存储的服务集群包括的服务节点的身份信息。
80.作为一种举例,如果数据存储节点存储的服务节点中的第二服务节点的地址发生变化,数据存储节点会在状态表中更新第二服务节点的地址,第一服务节点会根据更新后的状态表更新自身存储的第二服务节点的地址。
81.作为另一种举例,如果新增一个服务节点,新增的服务节点会将自身的身份信息注册到数据存储节点中。第一服务节点可以访问数据存储节点,获取并保存新增的服务节点的身份信息,并在自身存储的服务集群中增加一个新的节点。
82.在一些实施例中,第一服务节点可以通过如下两种方式确定服务集群中包括的服务节点发生变化:
83.(1)第一服务节点可以周期性地访问数据存储节点,并检测数据存储节点中存储的服务节点是否有变化,例如,可以通过设置配置更新定时器的方法,在配置更新定时器超时时,第一服务节点重启定时器并访问数据存储节点,查看其中存储的服务节点是否有变化,或者查看其中存储的状态表是否有变化。
84.(2)数据存储节点在存储的服务节点发生变化时,可以向第一服务节点发送通知消息,通知消息用于通知服务集群中包括的服务节点发生变化。第一服务节点可以根据接收到的通知消息确定服务集群包括的服务节点发生变化。
85.作为一种可选地方式,第一服务节点将自身的身份信息注册到数据存储节点后,还可以周期性地向数据存储节点发送心跳包,例如,通过设置心跳定时器的方法,在心跳定时器超时时,向数据存储节点发送一次心跳包。心跳包用于指示第一服务节点的工作状态,例如,可以用于指示第一服务节点处于的状态时正常工作的状态还是出现故障无法正常工作的状态。数据存储节点在接收到第一服务节点发送的心跳包后,可以及时的更新状态表。例如,如果数据存储节点在一段时间内未接收到第一服务节点发送的心跳包,则可以从状态表中删除第一服务节点。
86.以上,结合图2所示的流程图介绍了eureka服务端与数据存储节点的交互,以及实现集群更新方法的过程。下面将介绍在eureka客户端方面实现集群更新的方法。为了方案的完整性,在介绍eureka客户端方面实现集群更新方法之前,首先简单介绍一下eureka服务端和eureka客户端之间的交互。参见图4,为本申请实施例提供的一种eureka服务端与eureka客户端之间的交互过程。在图4所示的流程图中,以服务集群包括两个节点为例进行介绍,即服务集群中只包括第一服务节点和第二服务节点。
87.401,提供服务客户端启动,将自身的身份信息注册到第一服务节点。
88.其中,提供服务客户端的身份信息可以包括提供的服务的名称、服务器的地址、端口等信息。
89.可选地,第一服务节点可以采用表的形式对提供服务客户端的身份信息进行存储,将用于存储提供服务客户端的身份信息的表称为服务注册表。作为一种示例,服务注册表的内容可以参见图5。
90.402,第一服务节点接收到提供服务客户端的身份信息后,将提供服务客户端的身份信息发送到第二服务节点。
91.第一服务节点接收到提供服务客户端的身份信息后,可以检测当前所处的服务集群中是否包含其他的服务节点,检测后发现服务集群中包含第二服务节点,所以将提供服务客户端的身份信息发送到第二服务节点。
92.或者,第一服务节点还可以将上述服务注册表发送到第二服务节点。
93.403,消费服务客户端从服务节点中获取提供服务客户端的身份信息,调用提供服务客户端,消费服务。
94.可选地,消费服务客户端如果需要消费服务,则可以访问服务节点,获取服务注册表,并根据服务注册表中指示的提供服务客户端的身份信息远程调用提供服务客户端,消费服务。需要说明的是,消费服务客户端可访问第一服务节点,或者也可以访问第二服务节点来获取服务注册表。例如,假设提供服务客户端为微信的钱包对应的服务器,消费服务客户端为微信的支付功能对应的服务器。则支付功能对应的服务器可以通过服务节点获取钱
包功能对应的服务器的地址,通过地址远程调用钱包对应的服务器,完成支付。
95.需要说明的是,图4接收到eureka服务端和eureka客户端之间的交互仅作为一种示例,实际的交互场景中并不限定服务节点和客户端的数量。
96.以上,介绍了eureka服务端和eureka客户端之间的交互。可以知道,eureka客户端无论是进行消费服务还是进行服务注册时,都需要知道eureka服务端节点的信息,所以eureka客户端也需要及时获取服务集群的更新情况,以便确定eureka服务端节点的信息。下面将继续介绍本申请提出的集群更新方法。参见图6,为本申请实施例提供的另一种eureka集群的更新方法。该方法应用于eureka客户端,具体包括:
97.601,客户端启动后从数据存储节点获取服务集群包括的服务节点的身份信息并保存。
98.需要说明的是,这里涉及的客户端可以是提供服务客户端,也可以是消费服务客户端。
99.客户端从数据存储节点中获取服务节点的身份信息,也可以是从数据存储节点获取如图3所示的状态表,状态表中指示服务集群包括的服务节点的身份信息。
100.602,客户端确定服务集群包括的服务节点发生变化时,从数据存储节点获取更新的服务节点的身份信息。
101.客户端确定服务集群中包括的服务节点发生变化时,可以从数据存储节点获取发生变化的服务节点的身份信息,并更新自身存储的服务集群中包括的服务节点的身份信息。或者,数据存储节点中存储的服务节点发生变化时,数据存储节点可以更新状态表,客户端可以根据最新的状态表更新自身存储的服务节点的身份信息。
102.在一些实施例中,客户端可以通过如下的两种方式确定服务集群中包括的服务节点发生变化:
103.(1)客户端可以周期性的访问数据存储节点,并检测数据存储节点中存储的服务节点是否有变化。例如,可以通过设置定时器的方法,在定时器达超时时,客户端访问数据存储节点,查看其中存储的服务节点是否有变化,或者查看其中存储的状态表是否有变化,并重启定时器。
104.(2)数据存储节点在存储的服务节点发生变化时,可以向客户端发送通知消息,通知消息用于通知服务集群中包括的服务节点发生变化。客户端可以根据接收到的通知消息确定服务集群中包括的服务节点发生变化。
105.下面,为了进一步理解本申请提出的eureka集群的更新方法,将结合具体的实施例进行介绍。
106.参见图7,为本申请实施例提供的一个具体地实现集群更新的流程图。在图7所示的流程图中,以服务集群中包括三个服务节点为例进行介绍。为了便于描述,在本实施例中,将这三个服务节点分别称为第一服务节点、第二服务节点和第三服务节点。该方法流程具体包括:
107.701,第一服务节点启动,将自身的身份信息注册到数据存储节点。
108.具体地注册过程可以参见图2中的步骤201所示的过程,在此不再赘述。
109.数据存储节点接收到第一服务节点的身份信息后,将第一服务节点的身份信息进行存储。
110.702,第一服务节点启动周期性地向数据存储节点发送心跳包。
111.其中,心跳包用于指示第一服务节点的工作状态。
112.可选地,第一服务节点可以在注册自身的身份信息之后设置心跳定时器,在心跳定时器超时时,向数据存储节点发送心跳包,并重启心跳定时器。用于告知数据存储节点第一服务节点的工作状态,方便数据存储节点随时更新存储的信息。
113.703,第一服务节点首次访问数据存储节点,获取数据存储节点中存储的其他的服务节点的信息。
114.由于此时只有第一服务节点向数据存储节点中注册了自身的身份信息,所以数据存储节点中只存储有第一服务节点的身份信息。所以第一服务节点首次访问数据存储节点时并没有获取到其他的服务节点信息。
115.704,第一服务节点设置配置更新定时器,周期性地从数据存储节点获取其他的服务节点的信息。
116.可选地,第一服务节点可以在首次访问数据存储节点后设置配置更新定时器,在配置更新定时器超时时,进行再次访问数据存储节点,并重启配置更新定时器。为了便于描述,后续将配置更新定时器设定时长设为t1。也就是说,第一服务节点每间隔时间t1,访问一次数据存储节点,获取其他的服务节点信息。
117.705,在未达到时间t1时,第二服务节点启动,并将自身的身份信息注册到数据存储节点。
118.第二服务节点在向数据存储节点注册身份信息之后,也可以周期性地向数据存储中心发送心跳包,具体可以参见步骤702,在此不再赘述。
119.数据存储节点接收到第二服务节点发送的身份信息后,可以采用表的形式将第一服务节点和第二服务节点的身份信息进行存储。例如,可以参见如图3所示的状态表。
120.706,第二服务节点首次访问数据存储节点,获取数据存储节点中存储的其他的服务节点的身份信息。
121.可选地,第二服务节点可以获取数据存储节点中存储的状态表,根据状态表获取第一服务节点的身份信息并存储,并且,可以与第一服务节点组成服务集群。
122.可选地,第二服务节点在首次访问数据存储节点后,也可以通过设置配置更新定时器实现周期性地访问数据存储节点,为了便于描述,后续将第二服务节点设置的配置更新定时器的设定时长设为t2。
123.707,在时间达到设定时间t1时,第一服务节点访问数据存储节点,获取数据存储节点中存储的其他的服务节点的身份信息。
124.第一服务节点获取数据存储节点中存储的状态表,根据状态表获取第二服务节点的身份信息并存储,并且,可以与第二服务节点组成服务集群。
125.708,第三服务节点启动,并将自身的身份信息注册到数据存储节点。
126.第三服务节点在向数据存储节点注册身份信息之后,也可以周期性地向数据存储中心发送心跳包,具体可以参见步骤702,在此不再赘述。
127.数据存储节点接收到第三服务节点的身份信息后,可以更新状态表,将第三服务节点的身份信息增加到状态表中。
128.709,第三服务节点首次访问数据存储节点,获取数据存储节点中存储的其他的服
务节点的身份信息。
129.可选地,第三服务节点可以获取数据存储节点中存储的状态表,根据状态表获取第一服务节点和第二服务节点的身份信息并存储,并且,可以与第一服务节点和第二服务节点组成服务集群。
130.可选地,第三服务节点在首次访问数据存储节点后,也可以采用设置配置更新定时器的方法来实现周期性地访问数据存储节点,在此不再赘述。
131.710,时间达到设定时间t2,第二服务节点访问数据存储节点,获取数据存储节点中存储的其他的服务节点的身份信息。
132.第二服务节点获取状态表,根据状态表获取第三服务节点的身份信息并存储,并且,在服务集群中增加第三服务节点。也就是说,此时第二服务节点确定的服务集群中包括第一服务节点、第二服务节点和第三服务节点。
133.711,时间达到2
×
t1时,第一服务节点访问数据存储节点,获取数据存储节点中存储的其他的服务节点的身份信息。
134.第一服务节点获取数据存储节点中存储的状态表,根据状态表获取第三服务节点的身份信息并存储,并且,在服务集群中增加第三服务节点。也就是说,此时第一服务节点确定的服务集群中包括第一服务节点、第二服务节点和第三服务节点。
135.至此,三个服务节点的服务集群构建完成。
136.下面,再以一个具体的实施例对客户端侧更新服务集群的方法进行介绍。参见图8,示出了本申请提供的另一个具体地实现集群更新的流程图。在图8示出的流程图中,以服务集群中包括两个服务节点为例进行说明,这两个节点分别称为第一服务节点和第二服务节点。该方法流程具体包括:
137.801,客户端启动,访问数据存储节点,获取服务集群包括的服务节点的身份信息。
138.可选地,数据存储节点中存储的服务节点的身份信息可以以状态表的形式存储。作为一种举例,假设此时状态表中仅包括第一服务节点的身份信息,则客户端访问数据存储节点,根据状态表获取第一服务节点的身份信息并存储。
139.802,客户端设置定时器,周期性地从数据存储节点获取服务节点的身份信息。
140.作为一种可选的方式,客户端可以通过设置定时器的方式,在定时器超时时,对数据存储节点进行一次访问,确定其存储的状态表是否有更新,并重启定时器。后续将定时器设定的时长设为t。
141.803,在时间未达到设定时间t时,数据存储节点接收到第二服务节点的身份信息,更新状态表。
142.804,时间达到设定时间t,客户端再次访问数据存储节点,获取服务集群包括的服务节点的身份信息。
143.此时,数据存储节点中存储的服务节点包括第一服务节点和第二服务节点。客户端访问数据存储节点,根据更新后的状态表获取第二服务节点的身份信息,并保存。
144.至此,客户端获取了最新的服务集群,可以进一步将最新的服务集群存储到内存中。在需要访问某一个服务节点时,可以根据内存中存储的信息获取服务节点的地址,进行访问。
145.基于与上述方法的同一构思,如图9a所示,提供了一种服务端的第一服务器900a。
服务器900a能够执行上述方法中的各个步骤,为了避免重复,此处不再详述。服务器900a包括:处理器901a、存储器902a。
146.处理器901a,被配置为执行:
147.在第一服务器启动加入服务集群时,将第一服务器的身份信息注册到数据存储节点,所述数据存储节点用于存储所述服务集群包括的服务端的服务器的身份信息;从所述数据存储节点获取所述服务集群包括的服务端的服务器的身份信息;
148.存储器902a,用于保存所述服务集群包括的服务端的服务器的身份信息;
149.所述处理器901a,还用于确定所述服务集群包括的服务端的服务器发生变化,并根据所述数据存储节点存储的服务集群包括的服务端的服务器的身份信息,更新保存的服务端的服务器的身份信息。
150.在一种可能的实现方式中,所述处理器901a,在确定所述服务集群包括的服务端的服务器发生变化时,具体用于:
151.周期性地从所述数据存储节点获取所述服务集群包括的服务端的服务器,并根据获取的所述服务集群包括的服务端的服务器确定所述服务集群包括的服务端的服务器发生变化;或者,
152.接收所述数据存储节点发送的通知消息;所述通知消息用于通知所述服务集群包括的服务端的服务器发生变化。
153.在一种可能的实现方式中,所述处理器901a,在将第一服务器的身份信息注册到数据存储节点后,还用于:
154.周期性地向所述数据存储节点发送心跳包,所述心跳包用于指示第一服务器的工作状态。
155.在一种可能的实现方式中,所述服务端的服务器的身份信息包括服务器的地址、端口号中的一项或者多项。
156.基于与上述方法的同一构思,如图9b所示,提供了一种客户端的服务器900b。服务器900b能够执行上述方法中的各个步骤,为了避免重复,此处不再详述。服务器900b包括:处理器901b、存储器902b。
157.处理器901b,用于在客户端启动后,从数据存储节点获取服务集群包括的服务端的服务器的身份信息;
158.存储器902b,用于保存所述服务集群包括的服务端的服务器的身份信息;
159.所述处理器901b,还用于确定所述服务集群包括的服务端的服务器发生变化,并根据所述数据存储节点存储的服务集群包括的服务端的服务器的身份信息,更新保存的服务端的服务器的身份信息;
160.其中,所述数据存储节点用于存储所述服务集群包括的服务端的服务器的身份信息。
161.在一种可能的实现方式中,所述处理器901b,在确定所述服务集群包括的服务端的服务器发生变化时,具体用于:
162.周期性地从所述数据存储节点获取所述服务集群包括的服务端的服务器,并根据获取的所述服务集群包括的服务端的服务器确定所述服务集群包括的服务端的服务器发生变化;或者,
163.接收所述数据存储节点发送的通知消息;所述通知消息用于通知所述服务集群包括的服务端的服务器发生变化。
164.在一种可能的实现方式中,所述服务端的服务器的身份信息包括服务器的地址、端口号中的一项或者多项。
165.基于与上述方法的同一构思,如图10所示,提供了一种服务集群的更新装置1000。装置1000能够执行上述方法中的各个步骤,为了避免重复,此处不再详述。装置1000包括:处理单元1001、存储单元1002。
166.在一种可能的场景中:
167.处理单元1001,用于在第一服务端节点启动加入服务集群时,将第一服务端节点的身份信息注册到数据存储节点,所述数据存储节点用于存储所述服务集群包括的服务端节点的身份信息;
168.所述处理单元1001,还用于从所述数据存储节点获取所述服务集群包括的服务端节点的身份信息;
169.存储单元1002,用于保存所述服务集群包括的服务端节点的身份信息;
170.所述处理单元1001,还用于确定所述服务集群包括的服务端节点发生变化,并根据所述数据存储节点存储的服务集群包括的服务端节点的身份信息,更新保存的服务端节点的身份信息。
171.在一种可能的实现方式中,所述处理单元1001,在确定所述服务集群包括的服务端节点发生变化时,具体用于:
172.周期性地从所述数据存储节点获取所述服务集群包括的服务端节点,并根据获取的所述服务集群包括的服务端节点确定所述服务集群包括的服务端节点发生变化;或者,
173.接收所述数据存储节点发送的通知消息;所述通知消息用于通知所述服务集群包括的服务端节点发生变化。
174.在一种可能的实现方式中,所述处理单元1001,在将第一服务端节点的身份信息注册到数据存储节点后,还用于:
175.周期性地向所述数据存储节点发送心跳包,所述心跳包用于指示第一服务端节点的工作状态。
176.在一种可能的实现方式中,所述服务端节点的身份信息包括如下信息中的至少一项:
177.所述服务端节点的服务名称、地址或者端口号。
178.在另一种可能的场景中:
179.处理单元1001,用于在客户端启动后,从数据存储节点获取服务集群包括的服务端节点的身份信息;
180.存储单元1002,用于保存所述服务集群包括的服务端节点的身份信息;
181.所述处理单元1001,还用于确定所述服务集群包括的服务端节点发生变化,并根据所述数据存储节点存储的服务集群包括的服务端节点的身份信息,更新保存的服务端节点的身份信息;
182.其中,所述数据存储节点用于存储所述服务集群包括的服务端节点的身份信息。
183.在一种可能的实现方式中,所述处理单元1001,在确定所述服务集群包括的服务
端节点发生变化时,具体用于:
184.周期性地从所述数据存储节点获取所述服务集群包括的服务端节点,并根据获取的所述服务集群包括的服务端节点确定所述服务集群包括的服务端节点发生变化;或者,
185.接收所述数据存储节点发送的通知消息;所述通知消息用于通知所述服务集群包括的服务端节点发生变化。
186.在一种可能的实现方式中,所述服务端节点的身份信息包括如下信息中的至少一项:
187.所述服务端节点的服务名称、地址或者端口号。
188.本申请实施例还提供一种计算机可存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任一方法的步骤。
189.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
190.虽然以上描述了本申请的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本申请的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本申请的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本申请的保护范围。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
191.显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1