内存数据刷新方法和装置、存储介质及电子装置与流程

文档序号:31722150发布日期:2022-10-04 23:34阅读:172来源:国知局
内存数据刷新方法和装置、存储介质及电子装置与流程

1.本技术涉及智慧家庭领域,具体而言,涉及一种内存数据刷新方法和装置、存储介质及电子装置。


背景技术:

2.目前,同一服务在很多情况下可以采用集群部署,例如,部署到包含集群中的多个节点上。为了提高服务响应时间,减少对数据库或者缓存的访问,服务节点可以将一些高频使用的业务数据直接存放到内存中。在更新某个服务节点的内存数据时,而其他节点读取的依然是旧的内存数据,会导致服务运行异常。
3.为了避免服务运行异常,通常情况下由运维人员手动将所有服务节点重启一遍,在每次服务重启时,服务节点会刷新内存数据。然而,采用重启的方式进行各服务节点的内存刷新,使得服务有一段极短时间的停机,用户体验并不好,并且为了刷新内存数据而采用重启的方式,操作耗时较长。
4.由此可见,相关技术中的内存数据刷新方式,存在由于采用重启服务节点导致的内存数据刷新的效率低的问题。


技术实现要素:

5.本技术实施例提供了一种内存数据刷新方法和装置、存储介质及电子装置,以至少解决相关技术中的内存数据刷新方法存在由于采用重启服务节点导致的内存数据刷新的效率低的问题。
6.根据本技术实施例的一个方面,提供了一种内存数据刷新方法,包括:接收消息服务器推送的主题更改消息,其中,所述主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;响应于所述主题更改消息,从所述消息服务器获取所述目标主题下的目标业务消息,其中,所述目标业务消息中携带有所述目标业务的待更新业务数据;使用所述待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新所述第一服务节点的节点内存中的第一业务数据,所述第一业务数据为所述目标业务的业务数据。
7.在一个示例性实施例中,在所述使用所述待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,所述方法还包括:在所述第一业务数据刷新成功的情况下,更新与所述目标业务对应的消息偏移量,其中,所述消息偏移量用于指示所述目标主题下,所述第一服务节点已获取到的业务消息的位置。
8.在一个示例性实施例中,在所述使用所述待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,所述方法还包括:在所述第一业务数据刷新失败的情况下,重复执行以下业务数据刷新步骤,直到满足执行结束条件,所述执行结束条件包括以下至少之一:所述业务数据刷新步骤重复执行的次数达到目标次数,所述第一业务数据刷新成功:从所述消息服务器获取所述目标主题下的所述目标业务的至少一个业务消息,其中,所述至少一个业务消息中至少携带有所述待更新业务数据;使用所述至少一个业务消息中携带
的所述目标业务的业务数据对所述第一服务节点的节点内存执行数据刷新操作。
9.在一个示例性实施例中,所述方法还包括:在所述业务数据刷新步骤重复执行的次数达到所述目标次数、且所述第一业务数据刷新失败的情况下,向目标设备发送刷新异常提示信息,其中,所述刷新异常提示信息用于指示所述第一服务节点的节点内存中的所述目标业务的业务数据刷新失败。
10.在一个示例性实施例中,所述从所述消息服务器获取所述目标主题下的目标业务消息,包括:向所述消息服务器发送业务消息请求,其中,所述业务消息请求中携带有所述目标主题下的目标分区标识,所述目标分区标识用于标识所述第一服务节点待获取的业务消息所在的目标分区;接收所述消息服务器响应于所述业务消息请求返回的所述目标业务消息,其中,所述目标业务消息是从所述目标分区中获取到的、所述目标业务的业务消息。
11.在一个示例性实施例中,所述使用所述待更新业务数据对第一服务节点的节点内存执行数据刷新操作,包括:使用所述待更新业务数据对所述第一服务节点的目标虚拟机上的所述目标业务的业务数据执行刷新操作,其中,所述目标虚拟机位于所述第一服务节点的节点内存中。
12.在一个示例性实施例中,在所述接收消息服务器推送的主题更改消息之前,所述方法还包括:通过所述消息服务器接收第二服务节点发送的所述目标业务消息,其中,所述目标业务消息是在所述第二服务节点的节点内存中的所述目标业务的业务数据发生更新的情况下发送的。
13.根据本技术实施例的另一个方面,还提供了一种内存数据刷新装置,包括:第一接收单元,用于接收消息服务器推送的主题更改消息,其中,所述主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;获取单元,用于响应于所述主题更改消息,从所述消息服务器获取所述目标主题下的目标业务消息,其中,所述目标业务消息中携带有所述目标业务的待更新业务数据;第一执行单元,用于使用所述待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新所述第一服务节点的节点内存中的第一业务数据,所述第一业务数据为所述目标业务的业务数据。
14.在一个示例性实施例中,所述装置还包括:更新单元,用于在所述使用所述待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,在所述第一业务数据刷新成功的情况下,更新与所述目标业务对应的消息偏移量,其中,所述消息偏移量用于指示所述目标主题下,所述第一服务节点已获取到的业务消息的位置。
15.在一个示例性实施例中,所述装置还包括:第二执行单元,用于在所述使用所述待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,在所述第一业务数据刷新失败的情况下,重复执行以下业务数据刷新步骤,直到满足执行结束条件,所述执行结束条件包括以下至少之一:所述业务数据刷新步骤重复执行的次数达到目标次数,所述第一业务数据刷新成功:从所述消息服务器获取所述目标主题下的所述目标业务的至少一个业务消息,其中,所述至少一个业务消息中至少携带有所述待更新业务数据;使用所述至少一个业务消息中携带的所述目标业务的业务数据对所述第一服务节点的节点内存执行数据刷新操作。
16.在一个示例性实施例中,所述装置还包括:发送单元,用于在所述业务数据刷新步骤重复执行的次数达到所述目标次数、且所述第一业务数据刷新失败的情况下,向目标设
备发送刷新异常提示信息,其中,所述刷新异常提示信息用于指示所述第一服务节点的节点内存中的所述目标业务的业务数据刷新失败。
17.在一个示例性实施例中,所述获取单元包括:发送模块,用于向所述消息服务器发送业务消息请求,其中,所述业务消息请求中携带有所述目标主题下的目标分区标识,所述目标分区标识用于标识所述第一服务节点待获取的业务消息所在的目标分区;接收模块,用于接收所述消息服务器响应于所述业务消息请求返回的所述目标业务消息,其中,所述目标业务消息是从所述目标分区中获取到的、所述目标业务的业务消息。
18.在一个示例性实施例中,所述第一执行单元包括:执行模块,用于使用所述待更新业务数据对所述第一服务节点的目标虚拟机上的所述目标业务的业务数据执行刷新操作,其中,所述目标虚拟机位于所述第一服务节点的节点内存中。
19.在一个示例性实施例中,所述装置还包括:第二接收单元,用于在所述接收消息服务器推送的主题更改消息之前,通过所述消息服务器接收第二服务节点发送的所述目标业务消息,其中,所述目标业务消息是在所述第二服务节点的节点内存中的所述目标业务的业务数据发生更新的情况下发送的。
20.根据本技术实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述内存数据刷新方法。
21.根据本技术实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的内存数据刷新方法。
22.在本技术实施例中,通过将业务数据的更改通过业务消息的方式保存到消息服务器中的某一主题下、并由消息服务器主动推动业务消息更改消息给服务节点的方式,通过接收消息服务器推送的主题更改消息,其中,主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;响应于主题更改消息,从消息服务器获取目标主题下的目标业务消息,其中,目标业务消息中携带有目标业务的待更新业务数据;使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,第一业务数据为目标业务的业务数据,由于在与特定业务对应的主题下的业务消息发生更新时,由消息服务器向需要进行内存刷新的服务节点推送更改消息,以通知各服务节点拉取更新数据,各服务节点使用拉取的更新数据进行内存刷新,可以实现无需重启服务节点即可进行异步节点内存刷新的目的,达到了提升了内存数据刷新的效率的技术效果,进而解决了相关技术中的内存数据刷新方法存在由于采用重启服务节点导致的内存数据刷新的效率低的问题。
附图说明
23.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
24.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
25.图1是根据本技术实施例的一种可选的内存数据刷新方法的硬件环境的示意图;
26.图2是根据本技术实施例的一种可选的内存数据刷新方法的流程示意图;
27.图3是根据本技术实施例的一种可选的内存数据刷新方法的示意图;
28.图4是根据本技术实施例的另一种可选的内存数据刷新方法的示意图;
29.图5是根据本技术实施例的一种可选的内存数据刷新装置的结构框图;
30.图6是根据本技术实施例的一种可选的电子装置的结构框图。
具体实施方式
31.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
32.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
33.根据本技术实施例的一个方面,提供了一种内存数据刷新方法。该内存数据刷新方法广泛应用于智慧家庭(smart home)、智能家居、智能家用设备生态、智慧住宅(intelligence house)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述内存数据刷新方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
34.上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:wifi(wireless fidelity,无线保真),蓝牙。终端设备102可以并不限定于为pc、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
35.本技术实施例的内存数据刷新方法可以由服务器104来执行,也可以由终端设备102来执行,还可以是由服务器104和终端设备102共同执行。其中,终端设备102执行本技术实施例的内存数据刷新方法也可以是由安装在其上的客户端来执行。
36.以由服务器104来执行本实施例中的内存数据刷新方法为例,图2是根据本技术实施例的一种可选的内存数据刷新方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
37.步骤s202,接收消息服务器推送的主题更改消息,其中,主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新。
38.本实施例中的内存数据刷新方法可以应用到对同一服务集群中的服务节点中进行内存数据刷新的场景,上述服务节点可以是提供同一服务的服务器集群中的一个或多个服务节点,其可以是同步节点,还可以是异步节点。上述内存数据可以是与目标业务对应的业务数据,还可以是其他类型的内存数据,在此不做限定。本实施例中以服务节点为异步节点、内存数据为与目标业务对应的业务数据为例进行说明。
39.相关技术中,服务很多情况下采用了集群部署,当通过后台管理操作数据变更时,只能实时变更其中一个节点(即,服务节点)的内存数据,而其他节点读取的还是旧的内存数据,导致服务运行异常。在需要更新各个节点服务的内存数据时,可以通过重启服务的方式实现,重启可以是由运维人员手动将所有节点重启一遍,每次服务重启,都会刷新内存数据。
40.然而采用重启服务的方式,会使得服务有一段极短时间的停机,用户体验并不好,并且为了刷新内存而采用重启的方式,付出的代价也是比较大的。此外,也可以采用接口访问的方式实现内存数据刷新,即,在服务中暴露接口,通过接口访问实现节点数据刷新。然而,通过接口调用实现内存数据刷新的方式,由于很多情况下节点网络访问并不对外,每个节点都去调用对应的接口,存在一定安全风险。
41.在本实施例中,当一个服务节点上的业务数据发生变更时,将业务数据的更改通过业务消息的方式保存到消息服务器中的某一主题下、并由消息服务器主动推动业务消息更改消息给服务节点,需要进行内存刷新的服务节点拉取并使用拉取的更新数据进行内存刷新。通过上述方式,可以避免由于需要刷新内存而导致的非必要重启,在不重启的情况下实现服务节点热刷新,即,实现内存数据动态刷新。并且,可以避免通过接口调用刷新而产生的延时,以及暴露接口存在的安全风险。
42.对于目标服务,消息服务器上与该目标业务对应的主题(即,topic)为目标主题。目标服务的各个服务节点可以订阅该目标主题,以便在该目标主题下的业务消息发生更新时,可以从消息服务器获取到更新的业务消息。目标主题可以被拆分成分区,即,目标主题可以包含多个分区,每个分区消息具有称为分区偏移标识,可以唯一标识各个分区。
43.例如,当后台进行内存数据变更时,可以利用kafka实现各节点服务实时数据刷新。如图3所示,可以部署一套kafka服务器用于各个服务节点及时收到业务消息,并定义一个内存数据更新的topic(主题),各个服务节点可以订阅这个topic。这里,kafka是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。
44.在进行内存数据刷新时,第一服务节点可以接收消息服务器(例如,kafka服务器)推送的主题更改消息,这里的主题更改消息可以用于指示与目标业务对应的目标主题中的业务消息发生更新。更新的业务消息可以是由与目标业务对应的某一个服务节点在目标业务的业务数据发生更新时所生产并发送给消息服务器的。
45.例如,在进行内存数据刷新时,运维人员或其他相关人员可以对后台管理页面进
行数据修改操作,修改需要更新的数据信息,通过后台管理页面可以将变更信息(即,更新的业务数据)以业务消息的形式写入topic中,由kafka产生topic数据,并通过kafka将更改消息广播出去,通知各服务节点拉取更新的业务数据。
46.步骤s204,响应于主题更改消息,从消息服务器获取目标主题下的目标业务消息,其中,目标业务消息中携带有目标业务的待更新业务数据。
47.在本实施例中,在接收到主题更改消息之后,第一服务节点可以对该主题更改消息进行响应,从消息服务器获取订阅的目标主题下的目标业务消息,这里,目标业务消息中携带有目标业务的待更新业务数据。
48.例如,各个服务节点接收到更改消息之后,可以从订阅的topic获取更新的业务数据。
49.步骤s206,使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,第一业务数据为目标业务的业务数据。
50.在本实施例中,在从消息服务器获取到目标业务消息之后,可以提取目标业务消息携带的目标业务的待更新业务数据,并使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,这里第一业务数据为目标业务的业务数据。由于通过推送更改消息并由服务节点拉取订阅的主题下的业务数据,可以提高服务节点的内存数据的刷新效率,降低内存数据刷新的延时,可以实现秒级内存数据更新。
51.如图4所示,节点1、节点2、节点3至节点n可以订阅kafka服务器上数据更新的topic。运维人员或者其他相关人员可以通过后台管理系统的后台管理页面修改需要更新的数据信息,将数据修改发送至kafka服务器,kafka服务器将变更信息写入topic中,产生topic数据。各个服务节点消费这个topic,接收到此topic的数据以后,可以对自己节点的内存信息进行刷新。
52.通过上述步骤s202至步骤s206,接收消息服务器推送的主题更改消息,其中,主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;响应于主题更改消息,从消息服务器获取目标主题下的目标业务消息,其中,目标业务消息中携带有目标业务的待更新业务数据;使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,第一业务数据为目标业务的业务数据,解决了相关技术中的内存数据刷新方法存在由于需要对日志逐条分析导致的内存数据刷新效率低的问题,提升了内存数据刷新的效率。
53.在一个示例性实施例中,在使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,上述方法还包括:
54.s11,在第一业务数据刷新成功的情况下,更新与目标业务对应的消息偏移量,其中,消息偏移量用于指示目标主题下,第一服务节点已获取到的业务消息的位置。
55.在本实施例中,在使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作成功之后,可以根据与目标业务消息对应的消息偏移量对自身节点的消息偏移量进行修改,这里,消息偏移量相当于指针,可以用于指示在对应的目标主题下,服务节点已获取到的业务消息的位置。
56.可选地,上述消息偏移量可以是目标主题下的多个分区的分区偏移,即,第一服务节点的消息偏移量用于指示目标主题下,第一服务节点已获取到的业务消息在目标主题下的多个分区中所在的分区。
57.例如,内存数据刷新完成之后,服务节点可以修改自身的topic偏移量。服务节点未进行内存数据刷新时的消息偏移量为5,在数据刷新成功的情况下,根据接收到的业务数据,可以将服务节点与目标业务对应的消息偏移量修改为6。
58.通过本实施例,在数据刷新成功的情况下,对服务节点的消息偏移量进行修改,可以保证数据刷新的准确性。
59.在一个示例性实施例中,在使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,上述方法还包括:
60.s21,在第一业务数据刷新失败的情况下,重复执行以下业务数据刷新步骤,直到满足执行结束条件,执行结束条件包括以下至少之一:业务数据刷新步骤重复执行的次数达到目标次数,第一业务数据刷新成功:
61.从消息服务器获取目标主题下的目标业务的至少一个业务消息,其中,至少一个业务消息中至少携带有待更新业务数据;
62.使用至少一个业务消息中携带的目标业务的业务数据对第一服务节点的节点内存执行数据刷新操作。
63.在本实施例中,如果服务节点内存数据刷新失败,则不会更新偏移量,可以采用重复消费这个主题的方式进行内存数据刷新,即,重复执行业务数据刷新步骤,直到满足执行结束条件。上述执行结束条件可以包括以下至少之一:业务数据刷新步骤重复执行的次数达到目标次数,第一业务数据刷新成功,即,刷新次数达到预设次数,业务数据刷新成功。
64.在每次执行业务数据刷新步骤的过程中,第一服务节点可以从消息服务器获取到目标主题下的目标业务的至少一个业务消息,获取的至少一个业务消息中携带有待更新业务数据,使用至少一个业务消息中携带的目标业务的业务数据对第一服务节点的节点内存执行数据刷新操作,以实现对第一服务节点的内存数据的刷新。
65.通过本实施例,提供容错机制,通过重复执行刷新操作,可以保证各个服务节点数据的实时刷新。
66.在一个示例性实施例中,上述方法还包括:
67.s31,在业务数据刷新步骤重复执行的次数达到目标次数、且第一业务数据刷新失败的情况下,向目标设备发送刷新异常提示信息,其中,刷新异常提示信息用于指示第一服务节点的节点内存中的目标业务的业务数据刷新失败。
68.在本实施例中,在重复执行业务数据刷新步骤后,如果仍未刷新成功,即,业务数据刷新步骤重复执行的次数达到目标次数、且第一业务数据刷新失败,第一服务节点可以向目标设备发送刷新异常提示信息,这里,刷新异常提示信息用于指示第一服务节点的节点内存中的目标业务的业务数据刷新失败。
69.可选地,上述目标设备可以是后台管理系统对应的设备,在后台管理系统上接收到上述刷新异常提示信息之后,运维人员可以对该刷新失败的服务节点进行监控,并分析其内存数据刷新失败的原因,对该服务节点进行数据维护等。上述目标设备也可以是其他的设备,只要可以提醒相关人员第一服务节点的节点内存中的目标业务的业务数据刷新失
败。
70.可选地,对于服务节点刷新失败的判断条件还可以是:业务数据刷新步骤重复执行的耗时超过预设时间,例如,重复刷新内存数据的时间超过预设时间5s,则向目标设备发送刷新异常提示消息。
71.例如,刷新完成后,服务节点可以修改自身的topic偏移量。如果刷新失败,则不更新偏移量,重复消费这个topic进行数据刷新。如果多次失败,则进行上报,后端进行再处理。
72.通过本实施例,在业务数据刷新失败时,通过向管理设备发送提示消息的方式,可以实现对于刷新异常的服务节点的实时维护,提升对于内存数据刷新的效率以及准确性。
73.在一个示例性实施例中,从消息服务器获取目标主题下的目标业务消息,包括:
74.s41,向消息服务器发送业务消息请求,其中,业务消息请求中携带有目标主题下的目标分区标识,目标分区标识用于标识第一服务节点待获取的业务消息所在的目标分区;
75.s42,接收消息服务器响应于业务消息请求返回的目标业务消息,其中,目标业务消息是从目标分区中获取到的、目标业务的业务消息。
76.在本实施例中,消息服务器中的主题可以从物理上划分为一个或多个分区,不同的消息会存储在不同的分区之中。另外,消息服务器对应的服务节点(即,消费者)可以包含多个,其可以对应着不同的节点群组。对于目标主题,目标主题可以是用于存储目标业务更新的业务数据,不同时间获取到的、更新的业务数据可以存放在目标主题的相同分区中,也可以存放到目标主题的不同分区中。
77.在从消息服务器获取目标主题下的目标业务消息时,第一服务节点可以向消息服务器发送业务消息请求,这里的业务请求消息中携带有目标主题下的目标分区标识,目标分区标识用于标识第一服务节点待获取的业务消息所在的目标分区,这里的目标分区标识可以是第一服务节点的当前消息偏移量,也可以是其他偏移量,即,通过目标分区标识(比如,目标分区偏移)来表示待获取的业务消息所在的分区,通过消息偏移量标识当前已同步到的业务消息。
78.消息服务器可以对该业务消息请求进行响应,按照目标分区标识从目标分区中获取待同步到第一服务节点的业务消息,即,目标业务消息,并向第一服务节点发送目标业务消息。在接收到消息服务器响应于业务消息请求返回的目标业务消息之后,第一服务节点可以基于目标业务消息执行相关的内存数据刷新操作。
79.可选地,主题更改消息中可以携带有目标主题下的目标业务的业务消息的目标版本号,目标版本号可以是业务消息更新到的最新版本的版本号。对于某个属性值变更,目标版本号可以是目标业务的目标业务属性更新到的版本号。服务节点自身保存有一个当前版本号,根据推送消息中推送的更新之后的版本号,服务节点根据版本号去拉取最新配置。对应地,业务消息请求中携带可以是服务节点上目标业务的业务消息的当前版本号或者目标业务属性的当前版本号。
80.通过本实施例,通过分区标识来标识待获取的业务消息所在的分区,可以提高业务数据获取的便捷性和消息,进而提升进行内存数据刷新的效率。
81.在一个示例性实施例中,使用待更新业务数据对第一服务节点的节点内存执行数
据刷新操作,包括:
82.s51,使用待更新业务数据对第一服务节点的目标虚拟机上的目标业务的业务数据执行刷新操作,其中,目标虚拟机位于第一服务节点的节点内存中。
83.为了提高服务响应时间,减少对数据库或者缓存的访问,服务节点可以将一些高频使用的数据直接存放在jvm(java virtual machine,java虚拟机)中,这里,jvm相当于内存,数据是存放在jvm中的。jvm类似于一个虚拟的计算机,java代码就运行在它上面,它通过在物理计算机上模拟真实计算机功能来实现的,可以使java实现平台无关性,一处编译处处可用。
84.在本实施例中,第一服务节点可以使用其节点内存中的目标虚拟机(例如,前述jvm)保存目标业务的业务数据。在获取到待更新业务数据之后,第一服务节点可以使用待更新业务数据对目标虚拟机上的目标业务的业务数据执行刷新操作。
85.通过本实施例,通过使用节点内存中的虚拟机保存业务的业务数据,并使用获取到的业务数据对虚拟机上的业务数据进行动态刷新,同时提高业务数据刷新的便捷性。
86.在一个示例性实施例中,在接收消息服务器推送的主题更改消息之前,上述方法还包括:
87.s61,通过消息服务器接收第二服务节点发送的目标业务消息,其中,目标业务消息是在第二服务节点的节点内存中的目标业务的业务数据发生更新的情况下发送的。
88.在本实施例中,业务数据的更新可以是针对第二服务节点进行的,运维人员或者其他人员可以对第二服务节点上的后台管理页面进行数据修改操作。响应与检测到的上述数据修改操作,第二服务节点可以生成目标业务消息,并将生成的目标业务消息发送给消息服务器,这里,第二服务节点为目标业务消息的生产者。可选地,第二服务节点也可以将目标业务的业务数据修改的指示信息发送给消息服务器,由消息服务器生成目标业务消息。
89.消息服务器可以接收第二服务节点发送的目标业务消息,将目标业务消息与目标主题关联,并将主题更改消息推送给订阅了目标主题的所有服务节点,以便对各个服务节点的数据进行同步刷新。
90.通过本实施例,可以实现同一服务集群下的各个节点进行异步内存刷新,避免由于需要刷新内存而导致的非必要重启,提升进行服务节点内存刷新的效率。
91.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
92.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom(read-only memory,只读存储器)/ram(random access memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或
者网络设备等)执行本技术各个实施例所述的方法。
93.根据本技术实施例的另一个方面,还提供了一种用于实施上述内存数据刷新方法的内存数据刷新装置。图5是根据本技术实施例的一种可选的内存数据刷新装置的结构框图,如图5所示,该装置可以包括:
94.第一接收单元502,用于接收消息服务器推送的主题更改消息,其中,主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;
95.获取单元504,与第一接收单元502相连,用于响应于主题更改消息,从消息服务器获取目标主题下的目标业务消息,其中,目标业务消息中携带有目标业务的待更新业务数据;
96.第一执行单元506,与获取单元504相连,用于使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,第一业务数据为目标业务的业务数据。
97.需要说明的是,该实施例中的第一接收单元502可以用于执行上述步骤s202,该实施例中的获取单元504可以用于执行上述步骤s204,该实施例中的第一执行单元506可以用于执行上述步骤s206。
98.通过上述模块,接收消息服务器推送的主题更改消息,其中,主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;响应于主题更改消息,从消息服务器获取目标主题下的目标业务消息,其中,目标业务消息中携带有目标业务的待更新业务数据;使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,第一业务数据为目标业务的业务数据,解决了相关技术中的内存数据刷新方法存在由于需要对日志逐条分析导致的内存数据刷新效率低的问题,提升了内存数据刷新的效率。
99.在一个示例性实施例中,上述装置还包括:
100.更新单元,用于在使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,在第一业务数据刷新成功的情况下,更新与目标业务对应的消息偏移量,其中,消息偏移量用于指示目标主题下,第一服务节点已获取到的业务消息的位置。
101.在一个示例性实施例中,上述装置还包括:
102.第二执行单元,用于在使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作之后,在第一业务数据刷新失败的情况下,重复执行以下业务数据刷新步骤,直到满足执行结束条件,执行结束条件包括以下至少之一:业务数据刷新步骤重复执行的次数达到目标次数,第一业务数据刷新成功:
103.从消息服务器获取目标主题下的目标业务的至少一个业务消息,其中,至少一个业务消息中至少携带有待更新业务数据;
104.使用至少一个业务消息中携带的目标业务的业务数据对第一服务节点的节点内存执行数据刷新操作。
105.在一个示例性实施例中,上述装置还包括:
106.发送单元,用于在业务数据刷新步骤重复执行的次数达到目标次数、且第一业务数据刷新失败的情况下,向目标设备发送刷新异常提示信息,其中,刷新异常提示信息用于指示第一服务节点的节点内存中的目标业务的业务数据刷新失败。
107.在一个示例性实施例中,获取单元包括:
108.发送模块,用于向消息服务器发送业务消息请求,其中,业务消息请求中携带有目标主题下的目标分区标识,目标分区标识用于标识第一服务节点待获取的业务消息所在的目标分区;
109.接收模块,用于接收消息服务器响应于业务消息请求返回的目标业务消息,其中,目标业务消息是从目标分区中获取到的、目标业务的业务消息。
110.在一个示例性实施例中,第一执行单元包括:
111.执行模块,用于使用待更新业务数据对第一服务节点的目标虚拟机上的目标业务的业务数据执行刷新操作,其中,目标虚拟机位于第一服务节点的节点内存中。
112.在一个示例性实施例中,上述装置还包括:
113.第二接收单元,用于在接收消息服务器推送的主题更改消息之前,通过消息服务器接收第二服务节点发送的目标业务消息,其中,目标业务消息是在第二服务节点的节点内存中的目标业务的业务数据发生更新的情况下发送的。
114.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
115.根据本技术实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本技术实施例中上述任一项内存数据刷新方法的程序编码。
116.可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
117.可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序编码:
118.s1,接收消息服务器推送的主题更改消息,其中,主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;
119.s2,响应于主题更改消息,从消息服务器获取目标主题下的目标业务消息,其中,目标业务消息中携带有目标业务的待更新业务数据;
120.s3,使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,第一业务数据为目标业务的业务数据。
121.可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
122.可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、rom、ram、移动硬盘、磁碟或者光盘等各种可以存储程序编码的介质。
123.根据本技术实施例的又一个方面,还提供了一种用于实施上述内存数据刷新方法的电子装置,该电子装置可以是服务器、终端、或者其组合。
124.图6是根据本技术实施例的一种可选的电子装置的结构框图,如图6所示,包括处理器602、通信接口604、存储器606和通信总线608,其中,处理器602、通信接口604和存储器606通过通信总线608完成相互间的通信,其中,
125.存储器606,用于存储计算机程序;
126.处理器602,用于执行存储器606上所存放的计算机程序时,实现如下步骤:
127.s1,接收消息服务器推送的主题更改消息,其中,主题更改消息用于指示与目标业务对应的目标主题中的业务消息发生更新;
128.s2,响应于主题更改消息,从消息服务器获取目标主题下的目标业务消息,其中,目标业务消息中携带有目标业务的待更新业务数据;
129.s3,使用待更新业务数据对第一服务节点的节点内存执行数据刷新操作,以刷新第一服务节点的节点内存中的第一业务数据,第一业务数据为目标业务的业务数据。
130.可选地,通信总线可以是pci(peripheral component interconnect,外设部件互连标准)总线、或eisa(extended industry standard architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子装置与其他设备之间的通信。
131.存储器可以包括ram,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
132.作为一种示例,上述存储器606中可以但不限于包括上述内存数据刷新装置中的第一接收单元502、获取单元504、以及第一执行单元506。此外,还可以包括但不限于上述内存数据刷新装置中的其他模块单元,本示例中不再赘述。
133.上述处理器可以是通用处理器,可以包含但不限于:cpu(central processing unit,中央处理器)、np(network processor,网络处理器)等;还可以是dsp(digital signal processing,数字信号处理器)、asic(application specific integrated circuit,专用集成电路)、fpga(field-programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
134.可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
135.本领域普通技术人员可以理解,图6所示的结构仅为示意,实施上述内存数据刷新方法的设备可以是终端设备,该终端设备可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobile internet devices,mid)、pad等终端设备。图6其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示的不同的配置。
136.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、rom、ram、磁盘或光盘等。
137.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
138.上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。
139.在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
140.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
141.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以至少两个单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
142.以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1