一种配置数据的同步方法及装置与流程

文档序号:12751736阅读:240来源:国知局
一种配置数据的同步方法及装置与流程

本发明涉及通信技术领域,尤其涉及一种配置数据的同步方法及装置。



背景技术:

目前应用服务系统大部分采用分布式的设计架构,分布式系统较好的解决了系统的性能问题,但是系统的复杂性却大大提高。通常情况下分布式系统中往往有上百台机器,每台机器中运行一个服务实例。在系统运行时,每个服务实例都需要连接数据库。为避免增加数据库压力,通常将数据库中的配置信息加载到缓存中或者内存中。因各个服务实例是独立分开的,为避免增加缓存压力,需将从配置信息加载到内存中。

由于在短时间内的并发数和访问量剧增,通常需要部署多台服务实例。此时,在服务实例运行过程中修改配置文件,采用重启服务再同步配置文件的方式,当服务实例较多时,势必会带来一定的风险。为了解决重启同步配置文件的问题,通常采用配置服务系统,在该系统中配置所需的信息,保存配置数据之后进行配置同步。

具体地,每个服务实例开放API接口(IP地址和端口)。在同步配置数据时,配置服务系统调用各个服务实例的API接口。各个服务实例在进入此接口的时候访问数据库并及时读取数据库内容并加载到实例内存中。采用配置服务系统中维护各个分布式服务实例开放API接口的方式,在应用服务器较少的时候还好,如果应用服务器较多时,人工参与增删API接口的时候带来一定的工作量和风险,容易漏掉机器或者IP端口写错。并且,在添加至进行配置服务系统中,需要提供相关服务实例的机器信息,操作十分繁琐,且不够灵活。



技术实现要素:

本发明实施例提供一种配置数据的同步方法及装置,用以解决现有技术中配置数据同步时,系统维护困难且操作繁琐的问题。

为实现上述发明目的,本发明采用下述的技术方案:

依据本发明的一个方面,提供一种配置数据的同步方法,用于应用服务器,包括:

在启动时,从配置服务器中读取配置数据并加载至缓存中;

监控所述配置服务器中所述配置数据的目录节点是否更新;

当监控到所述目录节点更新时,则从所述配置服务器中同步更新的配置数据并加载至缓存中。

进一步地,所述监控所述配置服务器中所述配置数据的目录节点是否更新,具体包括:

向所述配置服务器发送注册请求,所述注册请求中携带所述应用服务器的标识;

当监控到所述配置服务器基于所述标识反馈的同步通知,则判断所述目录节点有更新。

进一步地,所述根据更新的目录节点从所述配置服务器中读取更新的配置数据并加载至缓存中后,所述方法还包括:

根据预设的检测策略确定是否继续监控所述配置数据的目录节点;

若继续,则重新向所述配置服务器发送注册请求。

依据本发明的一个方面,提供一种配置数据的同步方法,用于配置服务器,包括:

根据应用服务器的业务配置请求,向所述应用服务器发送所需配置数据;

当检测到所述配置数据有数据更新时,更新所述配置数据对应的目录节点,并向所述应用服务器发送同步通知。

进一步地,所述方法还包括:

接收所述应用服务器的注册请求;其中,所述注册请求中携带所述应用服务器的标识;

当检测到所述配置数据有数据更新时,更新所述配置数据对应的目录节点,并根据所述标识向对应的发送同步通知。

依据本发明的一个方面,提供一种配置数据的同步装置,用于应用服务器,包括:

启动模块,用于在应用服务器启动时,从配置服务器中读取配置数据并加载至缓存中;

监控模块,用于监控所述配置服务器中所述配置数据的目录节点是否更新;

同步模块,用于当所述监控模块监控到所述目录节点更新时,则根据从所述配置服务器中同步更新的配置数据并加载至缓存中。

进一步地,所述监控模块具体包括:

注册单元,用于向所述配置服务器发送注册请求,所述注册请求中携带所述应用服务器的标识;

判断单元,用于当监控到所述配置服务器基于所述标识反馈的同步通知,则判断所述目录节点有更新。

进一步地,所述装置还包括确定模块,用于根据预设的检测策略确定是否继续监控所述配置数据的目录节点;

所述注册单元,还用于当所述确定模块继续监控所述配置数据的目录节点时,则重新向所述配置服务器发送注册请求。

依据本发明的一个方面,提供一种配置数据的同步装置,用于配置服务器,包括:

发送模块,用于根据应用服务器的业务配置请求,向所述应用服务器发送所需配置数据;

同步模块,用于当检测到所述配置数据有数据更新时,更新所述配置数据对应的目录节点,并向所述应用服务器发送同步通知。

进一步地,所述装置还包括:

接收模块,用于接收所述应用服务器的注册请求;其中,所述注册请求中携带所述应用服务器的标识;

所述同步模块,具体用于当检测到配置数据有数据更新时,更新配置数据对应的目录节点,并根据标识向对应的应用服务器发送同步通知。

本发明的有益效果如下:

本发明所提供配置数据的同步方法及装置,每台应用服务器就会收到配置信息变更通知,然后从数据库获取到最新的数据库内容并应用到系统中,减少了数据库变更需要重新修改配置信息并进行服务实例重启的动作,或者避免手工同步各个服务实例的API接口,减少人工介入和出错率。

附图说明

图1为本发明实施例应用服务器中的配置数据同步方法的流程图;

图2为本发明实施例配置服务器中的配置数据同步方法的流程图;

图3为本发明一实施例中应用服务系统的结构示意图;

图4为本发明实施例应用服务器中的配置数据同步装置的结构示意图;

图5为本发明实施例配置服务器中的配置数据同步装置的结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了解决现有技术中配置数据同步时,系统维护困难且操作繁琐的问题,本发明实施例提供一种配置数据的同步方法。该方法通过服务实例实时监控配置服务器中目标节点的变化,来获知配置数据是否有更新;当有更新时,则直接根据更新的目标节点从配置服务器的数据库中直接获取配置数据并加载至内存即可。通过本发明配置信息在更新保存后,各个服务实例能自行捕获到数据变更通知并加载变更后的配置数据到内存。

下面结合附图和具体实施例对本发明的技术内容进行详细说明。

本发明实施例提供了一种配置数据的同步方法,用于应用服务器中,如图1所示,具体包括如下步骤:

步骤101,在启动时,从配置服务器中读取配置数据并加载至缓存中。

其中,在该步骤中,每个应用服务器运行一个具体的服务实例。当用户访问服务时,会通过负载均衡将请求分发到各个服务实例中。各个服务实例在启动初始化过程中,向配置服务器发送业务配置请求,请求从配置服务器的数据库中获取所需的配置数据。

其中,配置服务器的数据库中由用户预先配置了各个服务实例所需的配置数据,用户也可以根据实际需要实时配置所需的配置数据。而在用户更新配置数据后,需要将配置数据同步到各个服务实例中。

步骤102,监控配置服务器中配置数据的目录节点是否更新。

其中,配置服务器中设置了配置中心,该配置中心存储了数据库中配置数据对应的目录节点(即存储路径)。

具体地,在服务实例监控配置服务器中配置数据的目录节点是否更新,具体包括如下:

向配置服务器的配置中心发送注册请求,该注册请求中携带了应用服务器的标识信息;

待注册完成后,实时监控到配置中心发送配置数据的同步通知,根据是否有同步通知来判断目录节点是否更新。

其中,配置服务器中数据库的配置数据发生变更后,会对配置中心的目录节点进行修改。待修改完成后,根据注册的应用服务器的标识向指定的应用服务器发送同步通知。

其中,一个实施例中,应用服务器根据配置中心中修改标志位的形式,确定配置中心是否发送同步通知。具体地,配置中心完成目标节点的更新后,会根据注册的标识信息依次修改应用服务器对应的标志位;应用服务器实时监控该标志位的变化,一旦监听到标志位发生变化时,则判定目标节点有更新。

步骤103,当监控到目录节点更新时,则从配置服务器中同步更新的配置数据并加载至缓存中。

其中,当监控到配置中心的目标节点有更新时,则需要从数据库中获取更新后的配置数据并加载至内存中。而当监测到配置中心的目标节点没有更新时,则继续监控直至有配置数据有更新。

进一步地,在从数据库中读取配置数据并加载至内存后,该方法还包括:

根据预设的检测策略确定是否继续监控配置数据的目录节点:

当需要继续监控时,则重新向配置服务器的配置中心发送注册请求。

当不需要继续监控时,则直接退出监控即可。

本发明实施例中,当完成一次注册请求后,若监控到数据有变更,则需要确定是否需要继续监控。也就是说,注册只生效一次,后续有数据更新时,此次注册就会失效。应用服务器中预先设置了检测策略,当注册失效后,则需要依据预设的检测策略判断是否需要继续监控。

其中,预设的检测策略根据不同的服务来进行设置。具体地,获取配置数据后,判断配置数据是否符合预设的继续监控和停止监控的检测策略;当符合时,则执行相应的处理操作即可。

举例说明,当服务实例为手机抢购服务时,配置数据为手机的抢购数量,那么停止监控的检测策略可以为检测到手机的数量变为0台时,则停止继续监控节点;继续监控的检测策略可以为抢购的数量增加为10万时,则需要继续监控目录节点。这里的举例仅作解释和说明,不用于对本发明的具体限定。

下面结合一具体实施例对本发明的技术内容进行解释和说明。

本发明一实施例中,主要针对的是手机抢购系统。通常在抢购期间,由于在短时间内的并发数和访问量剧增,单台服务实例无法及时响应请求,需要部署多台服务实例。此时,如果在抢购开始期间,需要将手机型号、配件或者相关数量保存。

由于重启服务实例会带来一定的风险,因此在配置服务器的数据库中预先配置要抢购的手机型号以及数量。但是,后续在抢购过程中,手机型号及相关数量等需要根据实际情况进行调整,需要将调整后的配置数据同步到服务实例中。

在进行配置同步时,将配置信息保存至远程的某个目录节点。然后注册的应用服务器监控抢购的手机型号以及数量等配置信息,一旦配置信息发生变化,应用服务器会受到配置信息的变更通知,然后从配置服务器的数据库中读取更新的手机型号以及数量,即可根据更新的配置信息继续完成抢购服务。

基于上述可知,本发明实施例所提供的配置数据的同步方法,不需要在配置数据变更时,通过重启所有服务实例来完成服务中的数据更新,只需要实时监控配置中心中目标节点的变化获知数据有更新。这样,各个服务实例直接根据变更的目录节点从数据库中直接加载变更后的配置数据到内存。因此。本发明无论应用服务器的多少,都可以保证进行配置数据的同步,使得配置数据添加以及同步更加灵活,同时也可以保证新增业务员服务器的时候在上线之时能够及时获取到数据库中的最新配置数据。

本发明实施例还提供了一种配置数据的同步方法,用于配置服务器中,如图2所示,具体包括如下步骤:

步骤201,根据应用服务器的业务配置请求,向应用服务器发送所需配置数据。

配置服务器中包括数据库和配置中心;其中,数据库中预先配置了服务实例所需的配置数据。配置中心中存储了各个配置数据的目录节点,即存储的路径。

其中,配置服务器在启动时,判断是否存在远程目录节点;若存在,则直接在数据库对应的位置存储配置数据即可;若不存在,则需要配置中心创建远程目录节点

在存储配置数据时,需将配置数据的目录节点保存至配置中心中。若当前不存在目录节点,则需要配置中心创建远程目录节点;若不存在对应的目录节点,则直接保存至该目录节点中即可。

其中,在应用服务器启动具体的服务实例中,会发送业务配置请求。配置服务器根据业务配置请求中所需的配置信息,从数据库中获取后,并发送至应用服务器中。

步骤202,当检测到配置数据有数据更新时,更新配置数据对应的目录节点,并向应用服务器发送同步通知。

在该步骤中,配置服务器检测数据库中的配置数据是否有更新。

具体地,在用户修改配置数据后并保存,配置服务器当检测到保存指令后,检测数据库中变化的配置数据;

当检测到配置数据发生变化时,则需要获取该配置数据所对应的配置中心的目录节点,并修改该配置中心的目录节点。

进一步地,该方法还包括:

接收应用服务器的注册请求;其中,注册请求中携带应用服务器的标识;

当检测到配置数据有数据更新时,更新配置数据对应的目录节点,并根据标识向对应的应用服务器发送同步通知。

也就是说,本发明实施例中,一旦检测到配置数据发生更新时,则向配置中心注册的应用服务器发送同步通知,确保应用服务器能够及时获取变更通知,并及时读取新的配置数据并加载到内存当中。

举例说明,参见图3应用服务系统的结构示意图。其中,client为应用服务器(服务实例)。各个client注册到配置中心(/configuration)后,实时监控/configuration是否有变化;当配置数据(Config Data)有更新时,/configuration中也会随之更新,这时各个client监控到/configuration变化后,获取配置数据有更新,则数据库中直接获取Config Data并加载即可。

本发明实施例提供了一种配置数据的同步装置,用于应用服务器中,如图4所示,具体包括:

启动模块41,用于在启动时,从配置服务器中读取配置数据并加载至缓存中。

每个应用服务器运行一个具体的服务实例。当用户访问服务时,会通过负载均衡将请求分发到各个服务实例中。应用服务器的启动模块在启动初始化过程中,向配置服务器发送业务配置请求,请求从配置服务器的数据库中获取所需的配置数据。

其中,配置服务器的数据库中由用户预先配置了各个服务实例所需的配置数据,用户也可以根据实际需要实时配置所需的配置数据。而在用户更新配置数据后,需要将配置数据同步到各个服务实例中。

监控模块42,用于监控配置服务器中配置数据的目录节点是否更新。

其中,配置服务器中设置了配置中心,该配置中心存储了数据库中配置数据的目录节点(即存储路径)。根据该目录节点,应用服务器从数据库存储的指定位置获取配置数据。

具体地,监控模块42还包括注册单元和判断单元:其中,

注册单元,用于向配置服务器的配置中心发送注册请求,该注册请求中携带了应用服务器的标识信息;

判断单元,用于注册单元注册完成后,实时监控到配置中心发送配置数据的同步通知,根据是否有同步通知来判断目录节点是否更新。

其中,配置服务器中数据库的配置数据发生变更后,会对配置中心的目录节点进行修改。待修改完成后,根据注册的应用服务器的标识向指定的应用服务器发送同步通知。

其中,一个实施例中,判断单元监控配置中心中的标志位,确定配置中心是否发送同步通知。具体地,配置中心完成目标节点的更新后,会根据注册的标识信息依次修改应用服务器对应的标志位;判断单元实时监控该标志位的变化,一旦监听到标志位发生变化时,则判定目标节点有更新。

同步模块43,用于当监控到目录节点更新时,则从配置服务器中同步更新的配置数据并加载至缓存中。

其中,当监控到配置中心的目标节点有更新时,则需要从数据库中获取更新后的配置数据并加载至内存中。而当监测到配置中心的目标节点没有更新时,则继续监控直至有配置数据有更新。

进一步地,该装置还包括确定模块44,用于在从数据库中读取配置数据并加载至内存后,根据预设的检测策略确定是否继续监控配置数据的目录节点:

当需要继续监控时,则重新向配置服务器的配置中心发送注册请求。

当不需要继续监控时,则直接退出监控即可。

本发明实施例中,当完成一次注册请求后,若监控到数据有变更,则需要确定是否需要继续监控。也就是说,注册只生效一次,后续有数据更新时,此次注册就会失效。应用服务器中预先设置了检测策略,当注册失效后,则需要依据预设的检测策略判断是否需要继续监控。

其中,确定模块44中的检测策略根据不同的服务来进行设置。具体地,获取配置数据后,判断配置数据是否符合预设的继续监控和停止监控的检测策略;当符合时,则执行相应的处理操作即可。

本发明实施例所提供的配置数据的同步装置,不需要在配置数据变更时,通过重启所有服务实例来完成服务中的数据更新,只需要实时监控配置中心中目标节点的变化获知数据有更新。这样,各个服务实例直接根据变更的目录节点从数据库中直接加载变更后的配置数据到内存即可。因此,本发明无论应用服务器的多少,都可以保证进行配置数据的同步,使得配置数据添加以及同步更加灵活,同时也可以保证新增应用服务器的时候在上线之时能够及时获取到数据库中的最新配置数据。

本发明实施例还提供了一种配置数据的同步装置,用于配置服务器中,如图5所示,具体包括如下步骤:

发送模块51,用于根据应用服务器的业务配置请求,向应用服务器发送所需配置数据。

配置服务器中包括数据库和配置中心;其中,数据库中预先配置了服务实例所需的配置数据。配置中心中存储了各个配置数据的目录节点,即存储的路径。

其中,配置服务器在启动时,判断配置中心是否存在远程目录节点;

若存在,则直接在数据库对应的位置存储配置数据即可;

若不存在,则需要配置中心创建远程目录节点

在存储配置数据时,需将配置数据的目录节点保存至配置中心中。若当前不存在目录节点,则需要配置中心创建远程目录节点;若不存在对应的目录节点,则直接保存至该目录节点中即可。

其中,在应用服务器启动具体的服务实例中,会发送业务配置请求。配置服务器根据业务配置请求中所需的配置信息,从数据库中获取后,并发送至应用服务器中。

同步模块52,用于当检测到配置数据有数据更新时,更新配置数据对应的目录节点,并由发送模块51向应用服务器发送同步通知。

在该步骤中,配置服务器检测数据库中的配置数据是否有更新。

具体地,在用户修改配置数据后并保存,配置服务器当检测到保存指令后,检测数据库中变化的具体的配置数据;

当检测到某一位置的配置数据发生变化时,则需要获取该配置数据所对应的配置中心的目录节点,并修改该配置中心的目录节点。

进一步地,该方法还包括接收模块53,用于接收应用服务器的注册请求;其中,注册请求中携带应用服务器的标识;

同步模块52,还用于当检测到配置数据有数据更新时,更新配置数据对应的目录节点,并根据标识向对应的应用服务器发送同步通知。

也就是说,本发明实施例中,一旦检测到配置数据发生更新时,则向配置中心注册的应用服务器发送同步通知,确保应用服务器能够及时获取变更通知,并及时读取新的配置数据并加载到内存当中。

综上所述,本发明所提供配置数据的同步方法及装置,每台应用服务器就会收到配置信息变更通知,然后从数据库获取到最新的数据库内容并应用到系统中,减少了数据库变更需要重新修改配置信息并进行服务实例重启的动作,或者避免手工同步各个服务实例的API接口,减少人工介入和出错率。此外,无需定时轮询载数据库内容,可以有效减少数据库连接数造成负担;无需对数据进行任何特殊处理,且简单易行;无需定时监控数据库的语句更新,具有较强的普遍性。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1