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

集群节点配置的变更方法、装置、介质及电子设备与流程

2022-05-18 03:04:09 来源:中国专利 TAG:


1.本公开涉及数据处理技术领域,具体而言,涉及一种集群节点配置的变更方法、集群节点配置的变更装置、计算机可读存储介质及电子设备。


背景技术:

2.随着软硬件的发展,数据的规模越来越大,分布式集群也得到了快速发展。以中台商品组为例,每个集群节点都具有动态配置,在突发线上状况时,可以通过动态配置应对当前的情况。
3.在现有技术的方案中,在需要对集群节点的动态配置进行更新时,集群节点可以从配置中心中获取最新的配置,实现配置的实时变更。
4.然而,现有技术中的方案,在具有强一致性需求的业务场景中,只能在配置中心中实时拉取最新的配置,对于系统性能的损耗较高,且在一些场景中,系统无法将所有的性能用于支持拉取最新配置,导致无法满足强一致性的需求。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开的目的在于提供一种集群节点配置的变更方法、数据读取方法、集群节点配置的变更装置、计算机可读存储介质及电子设备,可以解决在更新节点配置时无法满足强一致性的问题。
7.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
8.根据本公开的第一方面,提供了一种集群节点配置的变更方法,所述集群包括多个节点,所述集群包括第一存储区域和第二存储区域,包括:获取各节点的配置编号以及所述配置编号对应的第一配置,并获取待更新的第二配置;其中,所述第一配置为当前配置编号正在应用的配置,所述第一配置存储于第一存储区域;对所述配置编号赋予所述第二配置对应的路由标识;其中,所述路由标识用于指示所要应用的配置;将所述第二配置存储于所述第二存储区域,并打开所述配置编号对应的缓存切换逻辑;响应于各所述配置编号对应的缓存切换逻辑打开的消息,根据所述路由标识将所述配置编号对应的路由逻辑从所述第一存储区域路由至所述第二存储区域以更新所述配置编号对应的配置。
9.在本公开的一种示例性实施例中,基于前述方案,在获取待更新的第二配置之前,所述方法还包括:在检测到待更新的第二配置时,生成所述待更新的第二配置对应的路由标识。
10.在本公开的一种示例性实施例中,基于前述方案,所述第二配置对应有一配置版本,所述对所述配置编号赋予所述第二配置对应的路由标识,包括:根据配置版本获取所述第二配置对应的路由标识;对所述配置编号赋予所述第二配置对应的路由标识。
11.在本公开的一种示例性实施例中,基于前述方案,所述对所述配置编号赋予所述第二配置对应的路由标识,包括:判断所述第一配置与所述第二配置是否相同;在所述第一配置与所述第二配置不同时,对所述配置编号赋予所述第二配置对应的路由标识。
12.在本公开的一种示例性实施例中,基于前述方案,所述响应于各所述节点对应的缓存切换逻辑打开的消息,根据所述路由标识将所述节点对应的路由逻辑从所述第一存储区域路由至所述第二存储区域以更新所述节点的配置,包括:各节点分别向配置中心发送所述配置编号对应的缓存切换逻辑打开的消息;在所述配置中心接收到所有配置编号对应的缓存切换逻辑打开的消息时,根据所述路由标识将所述配置编号对应的路由逻辑从所述第一存储区域路由至所述第二存储区域以更新所述配置编号的配置。
13.在本公开的一种示例性实施例中,基于前述方案,在所述根据所述路由标识将所述配置编号对应的路由逻辑从所述第一存储区域路由至所述第二存储区域以更新所述配置编号的配置之后,所述方法还包括:关闭所述配置编号对应的缓存切换逻辑。
14.在本公开的一种示例性实施例中,基于前述方案,在所述根据所述路由标识将所述配置编号对应的路由逻辑从所述第一存储区域路由至所述第二存储区域以更新所述配置编号的配置之后,所述方法还包括:向配置中心发送所述配置编号的缓存切换完成的消息。
15.根据本公开的第二方面,提供了一种集群节点配置的变更装置,所述集群包括多个节点,所述集群包括第一存储区域和第二存储区域,所述装置包括:变更配置获取模块,用于获取各节点的配置编号以及所述配置编号对应的第一配置,并获取待更新的第二配置;其中,所述第一配置为当前配置编号正在应用的配置,所述第一配置存储于第一存储区域;路由标识赋予模块,用于对所述配置编号赋予所述第二配置对应的路由标识;其中,所述路由标识用于指示所要应用的配置;切换逻辑打开模块,用于将所述第二配置存储于所述第二存储区域,并打开所述配置编号对应的缓存切换逻辑;节点配置更新模块,用于响应于各所述配置编号对应的缓存切换逻辑打开的消息,根据所述路由标识将所述配置编号对应的路由逻辑从所述第一存储区域路由至所述第二存储区域以更新所述配置编号的配置。
16.根据本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的集群节点配置的变更方法。
17.根据本公开的第四方面,提供了一种电子设备,包括:
18.一个或多个处理器;以及
19.存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的集群节点配置的变更方法。
20.本公开实施例提供的技术方案可以包括以下有益效果:
21.本公开的一种实施例提供的集群节点配置的变更方法中,获取各节点的配置编号以及所述配置编号对应的第一配置,并获取待更新的第二配置,对所述配置编号赋予所述第二配置对应的路由标识;其中,所述路由标识用于指示所要应用的配置,将所述第二配置存储于所述第二存储区域,并打开所述配置编号对应的缓存切换逻辑,响应于各所述配置编号对应的缓存切换逻辑打开的消息,根据所述路由标识将所述配置编号对应的路由逻辑
从所述第一存储区域路由至所述第二存储区域以更新所述配置编号对应的配置。一方面,可以先将需要更新的配置存储在本地存储器中,当各节点准备好之后,应用最新的配置,满足了强一致性的需求;另一方面,避免了实时在配置中心中拉取最新配置,导致性能损耗过大的问题,降低了性能成本,从而保证了系统各方面的稳定性。
22.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
23.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
24.图1示意性示出了可以应用本公开实施例的一种集群节点配置的变更方法的示例性系统架构的示意图;
25.图2示意性示出本公开示例性实施例中集群节点配置的变更方法的流程图;
26.图3示意性示出本公开示例性实施例中对配置编号赋予第二配置对应的路由标识的流程图;
27.图4示意性示出本公开示例性实施例中在第一配置与第二配置不同时,对配置编号赋予第二配置对应的路由标识的流程图;
28.图5示意性示出本公开示例性实施例中在配置中心接收到所有节点对应的缓存切换逻辑打开的消息时,根据路由标识将节点对应的路由逻辑从第一存储区域路由至第二存储区域以更新节点的配置的流程图;
29.图6示意性示出本公开示例性实施例中通过配置中心更新各节点的配置编号对应的配置的流程图;
30.图7示意性示出本公开示例性实施例中向配置中心返回未更新的ack消息以及缓存切换逻辑打开的消息的流程图;
31.图8示意性示出本公开示例性实施例中根据第二配置对应的路由标识调整配置编号对应的路由逻辑,并返回配置编号的缓存切换完成的消息的流程图;
32.图9示意性示出本公开示例性实施例中一种集群节点配置的变更装置的组成示意图;
33.图10示意性示出了适于用来实现本公开示例性实施例的电子设备的计算机系统的结构示意图。
具体实施方式
34.现在将参照附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具
体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
35.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
36.随着软硬件的发展,数据的规模越来越大,分布式集群也得到了快速发展。以中台商品组为例,每个集群节点都具有动态配置,在突发线上状况时,可以通过动态配置应对当前的情况。
37.在现有技术的方案中,在需要对集群节点的动态配置进行更新时,集群节点可以从配置中心中获取最新的配置,实现配置的实时变更。具体的,在需要对动态配置进行更新时,先将最新的配置保存在配置中心中,集群节点每次访问时,可以从配置中心中获取最新的配置,这种方式可以保证配置中心缓存变更之后,各个集群节点可以同时访问到最新的动态配置,保证了各个集群节点的强一致性。
38.然而,在配置中心中实时拉取最新的配置,对于系统性能的损耗较高,且在一些场景中,系统无法将所有的性能用于支持拉取最新配置,导致无法满足强一致性的需求,尤其在一些体积偏大且较为复杂的集群中更为明显。
39.除此之外,集群节点可以将动态配置缓存在本地,通过监听动态配置的变化实现所有集群节点中的最终一致性。具体的,集群节点可以从配置中心中获取最新的动态配置,并将这些最新的动态配置存储在本地,监听配置中心的配置变化,在配置中心中的配置变化时,采用存储在本地的最新的动态配置,最终达到所有集群节点的最终一致性。这种将动态配置存储在本地的方式,不需要集群节点频繁与配置中心进行交互,可以避免系统性能下降的问题。
40.然而,在配置中心的配置变化时,由于网络延迟等因素,无法保证每个集群节点立即采用最新的动态配置,可能导致同一时刻各集群节点所采用的动态配置不同,只能满足最终一致性,不能满足强一致性的需求。
41.即现有技术中,在特定场景中无法满足强一致性与高性能的业务需求。
42.图1示出了可以应用本公开实施例的集群节点配置的变更方法的示例性系统架构的示意图。
43.如图1所示,系统架构1000可以包括终端设备1001、1002、1003中的一种或多种,网络1004和服务器1005。网络1004用以在终端设备1001、1002、1003和服务器1005之间提供通信链路的介质。网络1004可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
44.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器1005可以是多个服务器组成的服务器集群等。
45.用户可以使用终端设备1001、1002、1003通过网络1004与服务器1005交互,以接收
或发送消息等。终端设备1001、1002、1003可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等等。另外,服务器1005可以是提供各种服务的服务器。
46.在一种实施例中,本公开的集群节点配置的变更方法的执行主体可以是服务器1005,服务器1005可以获取由终端设备1001、1002、1003发送的各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置,并根据本公开的集群节点配置的变更方法对配置编号对应的路由逻辑进行调整,然后将处理后得到的路由逻辑返回至终端设备1001、1002、1003。此外,还可以通过终端设备1001、1002、1003等执行本公开的集群节点配置的变更方法,以实现根据第二配置对应的路由标识调整配置编号对应的路有逻辑的过程。
47.此外,本公开集群节点配置的变更方法的实现过程还可以由终端设备1001、1002、1003和服务器1005共同实现。例如,终端设备1001、1002、1003可以获取各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置以及第二配置对应的路由标识,然后将得到的第二配置以及第二配置对应的路由标识发送给服务器1005,以使服务器1005可以对配置编号赋予第二配置对应的路由标识,将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑,响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号对应的配置。
48.本公开中集群节点配置的变更方案,可以应用于各种不同的业务场景中,针对不同的业务场景,可以根据需求应用本公开的方案。例如,针对某一商品中台组的业务场景,可以配置有多个集群节点,可以采用本公开的方案更新各集群节点中的配置。需要说明的是,本公开对于集群节点配置的变更方案的应用场景并不做特殊限定。
49.根据本示例性实施例中所提供的集群节点配置的变更方法中,获取各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置,对配置编号赋予第二配置对应的路由标识,将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑,响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号对应的配置。如图2所示,该集群节点配置的变更方法可以包括以下步骤:
50.步骤s210,获取各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置;其中,第一配置为当前配置编号正在应用的配置,第一配置存储于第一存储区域;
51.步骤s220,对配置编号赋予第二配置对应的路由标识;其中,路由标识用于指示所要应用的配置;
52.步骤s230,将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑;
53.步骤s240,响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号对应的配置。
54.本公开的一种实施例提供的集群节点配置的变更方法中,获取各节点的配置编号
以及配置编号对应的第一配置,并获取待更新的第二配置,对配置编号赋予第二配置对应的路由标识,将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑,响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号对应的配置。
55.一方面,可以先将需要更新的配置存储在本地存储器中,当各节点准备好之后,应用最新的配置,满足了强一致性的需求;另一方面,避免了实时在配置中心中拉取最新配置,导致性能损耗过大的问题,降低了性能成本,从而保证了系统各方面的稳定性。
56.下面,将结合附图及实施例对本示例性实施例中的集群节点配置的变更的步骤s210~s240进行更详细的说明。
57.步骤s210,获取各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置;其中,第一配置为当前配置编号正在应用的配置,第一配置存储于第一存储区域;
58.在本公开的一种示例实施例中,可以获取各节点的配置编号以及配置编号对应的第一配置。具体的,在分布式系统的各个集群节点中,可以包括多种配置,可以通过配置编号区分多种配置。举例而言,集群节点中可以包括配置a、配置b、配置c,此时,可以对配置a、配置b、配置c分别设置对应的配置编号,如配置a对应的配置编号为编号a、配置b对应的配置编号为编号b、配置c对应的配置编号为编号c。因此,可以获取各节点的配置编号,并获取这个配置编号对应的第一配置。其中,配置编号对应的第一配置为当前正在应用的配置,集群包括第一存储区域和第二存储区域,第一配置存储于第一存储区域中。需要说明的是,本公开对于集群节点中的配置的具体数量以及各配置对应的配置编号的具体形式并不做特殊限定。
59.在本公开的一种示例实施例中,可以获取待更新的第二配置。具体的,可以将待更新的第二配置保存在配置中心中,并在配置中心中获取待更新的第二配置。进一步的,在配置中心中获取待更新的第二配置时,可以向配置中心发出待更新的第二配置的获取请求,由配置中心向集群节点发送待更新的第二配置;或者,在配置中心中获取待更新的第二配置时,可以由配置中心定时向集群节点发送待更新的第二配置,举例而言,可以通过消息队列(mq,message queue)向集群节点发送待更新的第二配置;或者,在配置中心中获取待更新的第二配置时,可以在配置中心获取到待更新的第二配置后,由配置中心实时向集群节点发送待更新的第二配置。需要说明的是,本公开对于获取待更新的第二配置的具体方式并不最特殊限定。
60.步骤s220,对配置编号赋予第二配置对应的路由标识;其中,路由标识用于指示所要应用的配置;
61.在本公开的一种示例实施例中,可以对配置编号赋予第二配置对应的路由标识。其中,配置编号对应的路由标识可以用于指示所要应用的配置,即可以通过配置编号对应的路由标识确定需要应用的是第一存储区域的配置还是第二存储区域的配置。进一步的,路由标识可以包括指示采用第一存储区域的配置的标识,还可以包括指示采用第二存储区域的配置的标识。其中,默认设置为采用第一存储区域的配置的标识。
62.具体而言,对配置编号赋予第二配置对应的路由标识,可以包括直接向配置编号赋予第二配置对应的路由标识,还可以包括将配置编号对应的原路由标识更新为第二配置
对应的路由标识。需要说明的是,本公开对于对配置编号赋予第二配置对应的路由标识的具体方式并不做特殊限定。
63.在本公开的一种示例实施例中,在获取待更新的第二配置之前,检测到待更新的第二配置时,可以生成待更新的第二配置对应的路由标识。具体的,可以检测配置中心的配置变化情况,在每次配置中心的配置变化时,即检测到待更新的第二配置时,可以生成待更新的第二配置对应的路由标识。
64.进一步的,在对配置编号赋予第二配置对应的路由标识之前,可以获取第二配置对应的路由标识。具体的,可以将第二配置对应的路由标识保存在外部数据库中,并在外部数据库中获取第二配置对应的路由标识。进一步的,在外部数据库中获取第二配置对应的路由标识时,可以向外部数据库发出第二配置对应的路由标识的获取请求,由外部数据库向集群节点发送第二配置对应的路由标识;或者,在外部数据库中获取第二配置对应的路由标识时,可以由外部数据库定时向集群节点发送第二配置对应的路由标识,举例而言,可以通过消息队列向集群节点发送第二配置对应的路由标识;或者,在外部数据库中获取第二配置对应的路由标识时,可以在外部数据库获取到第二配置对应的路由标识后,由外部数据库实时向集群节点发送第二配置对应的路由标识。需要说明的是,本公开对于获取第二配置对应的路由标识的具体方式并不最特殊限定。
65.在本公开的一种示例实施例中,可以根据配置版本获取第二配置对应的路由标识,并对配置编号赋予第二配置对应的路由标识。参照图3所示,对配置编号赋予第二配置对应的路由标识,可以包括以下步骤s310~s320:
66.步骤s310,根据配置版本获取第二配置对应的路由标识;
67.步骤s320,对配置编号赋予第二配置对应的路由标识。
68.在本公开的一种示例实施例中,可以根据配置版本获取第二配置对应的路由标识。具体的,在检测到待更新的第二配置时,生成待更新的第二配置对应的路由标识具有对应的配置版本,配置版本可以用于指示配置编号对应的配置的使用版本。可以将配置版本与第二配置对应的路由标识以配置版本-第二配置对应的路由标识进行存储,并将配置版本-第二配置对应的路由标识存储在外部数据库中,在需要使用第二配置对应的路由标识时,可以从外部数据库中获取第二配置对应的路由标识,并对所要更新的节点对应的配置编号赋予第二配置对应的路由标识。需要说明的是,本公开对于根据配置版本获取第二配置对应的路由标识的具体方式并不做特殊限定。
69.进一步的,在生成配置版本与第二配置对应的路由标识的对应关系之后,可以记录本次生成的结果,方便开发人员了解当前正在应用的配置版本。
70.举例而言,在检测到待更新的第二配置时,可以将配置版本与第二配置对应的路由标识以k-v结构存储在redis中,其中,k为配置版本,v为对应的第二配置对应的路由标识,可以通过k(配置版本)获取对应的v(第二配置对应的路由标识)。具体的,redis采用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api,其中,value支持的存储种类较多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。除此之外,为了保证效率,在redis数据库中,数据缓存在内存中,redis会周期性的将更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现
了master-slave(主从)同步。需要说明的是,本公开对于外部数据库的类型并不做特殊限定。
71.通过上述步骤s310~s320,可以根据配置版本获取第二配置对应的路由标识,并对配置编号赋予第二配置对应的路由标识。
72.在本公开的一种示例实施例中,可以判断第一配置与第二配置是否相同,在第一配置与第二配置不同时,对配置编号赋予第二配置对应的路由标识。参照图4所示,在第一配置与第二配置不同时,对配置编号赋予第二配置对应的路由标识,可以包括以下步骤s410~s420:
73.步骤s410,判断第一配置与第二配置是否相同;
74.在本公开的一种示例实施例中,可以判断第一配置与第二配置是否相同。具体的,可以比较第一配置与第二配置的具体内容,并以此判断第一配置与第二配置是否相同。举例而言,可以比较第一配置与第二配置的数值、代码等,并以此判断第一配置与第二配置是否相同,即在第一配置的数据、代码等与第二配置的数据、代码等不同时,表示第一配置与第二配置不同,或者,在第一配置的数据、代码等与第二配置的数据、代码等相同时,表示第一配置与第二配置相同。需要说明的是,本公开对于判断第一配置与第二配置是否相同的方式并不做特殊限定。
75.步骤s420,在第一配置与第二配置不同时,对配置编号赋予第二配置对应的路由标识。
76.在本公开的一种示例实施例中,在通过上述步骤确定第一配置与第二配置不同时,对配置编号赋予第二配置对应的路由标识。具体的,第一配置与第二配置相同,表示节点当前正在应用的配置即为获取到的最新的配置,因此不需要进行更新;而第一配置与第二配置不同,表示节点当前正在应用的配置即不是最新的配置,因此需要进行更新,即此时可以对配置编号赋予第二配置对应的路由标识。需要说明的是,本公开对于对配置编号赋予第二配置对应的路由标识的具体方式并不做特殊限定。
77.通过上述步骤s410~s420,可以判断第一配置与第二配置是否相同,在第一配置与第二配置不同时,对配置编号赋予第二配置对应的路由标识。
78.步骤s230,将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑;
79.在本公开的一种示例实施例中,可以将通过上述步骤得到的第二配置之后,可以将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑。具体的,配置编号对应的缓存切换逻辑可以用于指示当前是否可以切换正在应用的配置,即是否可以从集群的第一存储区域切换到第二存储区域。需要说明的是,本公开对于打开配置编号对应的缓存切换逻辑的具体方式并不做特殊限定。
80.步骤s240,响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号对应的配置。
81.在本公开的一种示例实施例中,在接收到各配置编号对应的缓存切换逻辑打开的消息时,可以根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域。具体的,接收到各配置编号对应的缓存切换逻辑打开的消息时,表示各配置编号对应的
集群节点已经准备好切换存储区域(即已经对配置编号赋予第二配置对应的路由标识,且已经将第二配置存储于第二存储区域),以更新配置编号对应的配置。
82.具体而言,可以获取配置编号对应的第二配置对应的路由标识,可以根据第二配置对应的路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域,此时,配置编号所应用的配置为第二存储区域的第二配置,即将配置编号对应的第一配置更新为第二配置。需要说明的是,本公开对于根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域的具体方式并不做特殊限定。
83.在本公开的一种示例实施例中,各节点分别向配置中心发送节点对应的缓存切换逻辑打开的消息,并在配置中心接收到所有节点对应的缓存切换逻辑打开的消息时,根据路由标识将节点对应的路由逻辑从第一存储区域路由至第二存储区域以更新节点的配置。参照图5所示,在配置中心接收到所有节点对应的缓存切换逻辑打开的消息时,根据路由标识将节点对应的路由逻辑从第一存储区域路由至第二存储区域以更新节点的配置,可以包括以下步骤s510~s520:
84.步骤s510,各节点分别向配置中心发送配置编号对应的缓存切换逻辑打开的消息;
85.步骤s520,在配置中心接收到所有配置编号对应的缓存切换逻辑打开的消息时,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置。
86.在本公开的一种示例实施例中,在通过上述步骤将配置编号赋予第二配置对应的路由标识,且将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑之后,可以分别将配置编号对应的缓存逻辑打开的消息发送给配置中心,在配置中心接收到所有节点的缓存逻辑打开的消息之后,表示所有节点已经准备好切换存储区域,即从当前正在应用的存储区域切换至待更新的第二配置所在的第二存储区域,此时就可以更新配置编号的配置。
87.举例而言,各节点可以分别向配置中心发送配置编号对应的缓存切换逻辑打开的ack消息(消息确认机制、messageacknowledgement),在配置中心接收到所有配置编号对应的ack消息时,可以根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置。
88.通过上述步骤s510~s520,各节点分别向配置中心发送节点对应的缓存切换逻辑打开的消息,并在配置中心接收到所有节点对应的缓存切换逻辑打开的消息时,根据路由标识将节点对应的路由逻辑从第一存储区域路由至第二存储区域以更新节点的配置。
89.在本公开的一种示例实施例中,在根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置之后,可以关闭配置编号对应的缓存切换逻辑,避免集群节点不断访问第二配置对应的路由标识,从而避免性能损耗。
90.在本公开的一种示例实施例中,在根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置之后,可以向配置中心发送配置编号的缓存切换完成的消息。举例而言,可以向配置中心发送“缓存切换完成”的ack消息。开发人员可以根据返回的消息进行相应的统计。
91.在本公开的一种示例实施例中,在检测到配置中心的待更新的第二配置时,可以
生成第二配置对应的路由标识,向集群节点发送第二配置以及第二配置对应的路由标识或等待集群节点拉取第二配置以及第二配置对应的路由标识,接收各节点的配置编号对应的缓存切换逻辑打开的消息,判断是否接收到所有节点的配置编号对应的缓存切换逻辑打开的消息,未收到所有节点的配置编号对应的缓存切换逻辑打开的消息时进行循环判断,已收到所有节点的配置编号对应的缓存切换逻辑打开的消息时,将各节点的配置编号对应的路由标识切换为指向第二配置对应的第二存储区域。参照图6所示,通过配置中心更新各节点的配置编号对应的配置,可以包括以下步骤s610~s660:
92.步骤s610,检测配置中心的待更新的第二配置;步骤s620,生成第二配置对应的路由标识;步骤s630,向集群节点发送第二配置以及第二配置对应的路由标识或等待集群节点拉取第二配置以及第二配置对应的路由标识;步骤s640,接收各节点的配置编号对应的缓存切换逻辑打开的消息;步骤s650,判断是否接收到所有节点的配置编号对应的缓存切换逻辑打开的消息;步骤s660,将各节点的配置编号对应的路由标识切换为指向第二配置对应的第二存储区域。
93.在本公开的一种示例实施例中,可以在服务初始化时从配置中心中拉取第一配置,并将第一配置存储于第一存储区域,实时监听配置中心中的配置变化,并向配置中心请求第二配置以及第二配置对应的路由标识或者从配置中心中拉取第二配置以及第二配置对应的路由标识,判断第一配置与第二配置是否相同,若相同则向配置中心返回未更新的ack消息,若不同则将对配置编号赋予第二配置对应的路由标识,并将第二配置存储于第二存储区域,再打开配置编号对应的缓存切换逻辑,并向配置中心返回缓存切换逻辑打开的消息。参照图7所示,向配置中心返回未更新的ack消息以及缓存切换逻辑打开的消息,可以包括以下步骤s710~s770:
94.步骤s710,在服务初始化时从配置中心中拉取第一配置,并将第一配置存储于第一存储区域;步骤s720,向配置中心请求第二配置以及第二配置对应的路由标识或者从配置中心中拉取第二配置以及第二配置对应的路由标识;步骤s730,判断第一配置与第二配置是否相同;
95.步骤s740,若相同则向配置中心返回未更新的ack消息;步骤s750,若不同则将对配置编号赋予第二配置对应的路由标识,并将第二配置存储于第二存储区域;步骤s760,打开配置编号对应的缓存切换逻辑;
96.步骤s770,向配置中心返回未更新的ack消息以及缓存切换逻辑打开的消息。
97.在本公开的一种示例实施例中,在集群节点每次访问配置时,可以判断配置编号对应的缓存切换逻辑是否开启,若关闭,则使用第一存储区域对应的配置,若开启,则获取第二配置对应的路由标识,并根据第二配置对应的路由标识调整配置编号对应的路由逻辑,若路由标识指示采用第一配置,则应用第一存储区域的配置,若路由标识指示采用第二配置,则应用第二存储区域的配置,关闭配置编号对应的缓存切换逻辑,并向配置中心发送配置编号的缓存切换完成的消息。参照图8所示,根据第二配置对应的路由标识调整配置编号对应的路由逻辑,并返回配置编号的缓存切换完成的消息,可以包括以下步骤s810~s880:
98.步骤s810,集群节点每次访问配置时,判断配置编号对应的缓存切换逻辑是否开启;步骤s820,使用第一存储区域对应的配置;步骤s830,获取第二配置对应的路由标识;步
骤s840,根据第二配置对应的路由标识调整配置编号对应的路由逻辑;步骤s850,应用第一存储区域的配置;步骤s860,应用第二存储区域的配置;步骤s870,关闭配置编号对应的缓存切换逻辑;步骤s880,向配置中心发送配置编号的缓存切换完成的消息。
99.本公开的一种实施例提供的集群节点配置的变更方法中,获取各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置,对配置编号赋予第二配置对应的路由标识;其中,路由标识用于指示所要应用的配置,将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑,响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号对应的配置。
100.一方面,可以先将需要更新的配置存储在本地存储器中,当各节点准备好之后,应用最新的配置,满足了强一致性的需求;另一方面,避免了实时在配置中心中拉取最新配置,导致性能损耗过大的问题,降低了性能成本,从而保证了系统各方面的稳定性。
101.由于本公开的示例实施例的数据读取方法的各个步骤与上述集群节点配置的变更方法的示例实施例的步骤对应,因此对于本公开数据读取方法实施例中未披露的细节,请参照本公开上述的集群节点配置的变更方法的实施例。
102.此外,在本公开的示例性实施方式中,还提供了一种集群节点配置的变更装置。参照图9所示,一种集群节点配置的变更装置900包括:变更配置获取模块910,路由标识赋予模块920、切换逻辑打开模块930、节点配置更新模块940。
103.其中,变更配置获取模块,用于获取各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置;其中,第一配置为当前配置编号正在应用的配置,第一配置存储于第一存储区域;路由标识赋予模块,用于对配置编号赋予第二配置对应的路由标识;其中,路由标识用于指示所要应用的配置;切换逻辑打开模块,用于将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑;节点配置更新模块,用于响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置。
104.在本公开的一种示例性实施例中,基于前述方案,在获取待更新的第二配置之前,装置还包括:路由标识生成单元,用于在检测到待更新的第二配置时,生成待更新的第二配置对应的路由标识。
105.在本公开的一种示例性实施例中,基于前述方案,第二配置对应有一配置版本,对配置编号赋予第二配置对应的路由标识,装置还包括:路由标识获取单元,用于根据配置版本获取第二配置对应的路由标识;第一路由标识赋予单元,用于对配置编号赋予第二配置对应的路由标识。
106.在本公开的一种示例性实施例中,基于前述方案,对配置编号赋予第二配置对应的路由标识,装置还包括:配置判断单元,用于判断第一配置与第二配置是否相同;第二路由单元赋予单元,用于在第一配置与第二配置不同时,对配置编号赋予第二配置对应的路由标识。
107.在本公开的一种示例性实施例中,基于前述方案,响应于各节点对应的缓存切换逻辑打开的消息,根据路由标识将节点对应的路由逻辑从第一存储区域路由至第二存储区域以更新节点的配置,装置还包括:消息发送单元,用于各节点分别向配置中心发送配置编
号对应的缓存切换逻辑打开的消息;路由逻辑切换单元,用于在配置中心接收到所有配置编号对应的缓存切换逻辑打开的消息时,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置。
108.在本公开的一种示例性实施例中,基于前述方案,在根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置之后,装置还包括:切换逻辑关闭单元,用于关闭配置编号对应的缓存切换逻辑。
109.在本公开的一种示例性实施例中,基于前述方案,在根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号的配置之后,方法还包括:切换完成消息发送单元,用于向配置中心发送配置编号的缓存切换完成的消息。
110.由于本公开的示例实施例的集群节点配置的变更装置的各个功能模块与上述集群节点配置的变更方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的集群节点配置的变更方法的实施例。
111.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
112.此外,在本公开的示例性实施例中,还提供了一种能够实现上述集群节点配置的变更方法的电子设备。
113.所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。
114.下面参照图10来描述根据本公开的这种实施例的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
115.如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040。
116.其中,存储单元存储有程序代码,程序代码可以被处理单元1010执行,使得处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。例如,处理单元1010可以执行如图2中所示的步骤s210,获取各节点的配置编号以及配置编号对应的第一配置,并获取待更新的第二配置;其中,第一配置为当前配置编号正在应用的配置,第一配置存储于第一存储区域;步骤s220,对配置编号赋予第二配置对应的路由标识;其中,路由标识用于指示所要应用的配置;步骤s230,将第二配置存储于第二存储区域,并打开配置编号对应的缓存切换逻辑;步骤s240,响应于各配置编号对应的缓存切换逻辑打开的消息,根据路由标识将配置编号对应的路由逻辑从第一存储区域路由至第二存储区域以更新配置编号对应的配置。
117.又如,电子设备可以实现如图2所示的各个步骤。
118.存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(rom)1023。
119.存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
120.总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
121.电子设备1000也可以与一个或多个外部设备1070(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1060通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
122.通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
123.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。
124.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
125.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
126.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商
来通过因特网连接)。
127.此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
128.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
129.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献