一种配置中心的容灾系统和方法
技术领域
本发明属于计算机软件领域,尤其涉及一种配置中心的容灾系统和方法。
背景技术
现今,一种用户使用互联网的新方式——用户原创内容(UserGeneratedContent,UGC)正在兴起,社区网络、视频分享、博客等作为UGC的主要应用形式越来越受到用户的欢迎。随着智能终端的多样化、全球互联网业务的不断发展、UGC日渐崛起。为了成熟的运营UGC业务,在设计时会引入配置中心,用以实时收集和维护所有配置信息。配置中心会定期汇总系统中各进程的运行状态信息并更新配置信息,而所有服务进程都从该配置中心获取配置信息。鉴于配置信息决定系统如何处理外部请求的重要地位,针对配置中心都会采取一定的容灾措施。
现有技术中,大多采取启用主从两套配置中心的方式来解决配置中心的容灾问题。其中,采取启用主从两套配置中心的方式来解决配置中心的容灾问题的核心主要有以下几点:
1、同时启用主从两套配置中心,分别配置到不同的互联网数据中心(InternetDataCenter,IDC)。当服务进程需要获取配置信息时,优先通过访问主配置中心获得配置信息;当主配置中心不能用时,服务进程通过访问从配置中心获得配置信息。
2、所有配置信息的收集和更新都由主配置中心负责。各服务进程定时向主配置中心上报自己的状态,主配置中心在接收了服务进程上报的状态后,周期性地汇总所有服务进程的状态,形成新的配置信息。
3、当主配置中心形成新的配置信息后,主配置中心通过与从配置中心直接相连的IDC专线,将配置信息实时同步到从配置中心。在网络质量允许的情况下,主配置中心和从配置中心上的配置信息完全一致,当其中一台不可用时,另一台仍可提供服务。
然而,采取启用主从两套配置中心的方式来解决配置中心的容灾问题的方式存在诸多问题有待改进,其中包括:
1、由于所有配置信息的更新都是由主配置中心负责的,因此当主配置中心故障时,配置信息就无法更新。
2、当主配置中心所在的IDC故障时,配置信息不准确且无法更新。例如:主配置中心在IDC_1,当IDC_1故障时,IDC_1内的所有设备都无法工作,其中包括位于IDC_1内的主配置中心及IDC_1内的所有服务进程,虽然此时从配置中心仍可提供配置信息的读取服务,但是IDC_1内的服务进程状态由于出故障在配置信息中无法体现,造成配置信息不准确。且从配置中心不具有更新配置信息的功能,因此,无法更新配置信息。
3、当主配置中心和从配置中心之间的IDC专线故障时,部分服务进程无法获得最新的配置信息。例如:主配置中心在IDC_1,从配置中心在IDC_M,当IDC_1与IDC_M之间的IDC专线故障时,所有经过该IDC专线的数据传输都不可用,也就意味着主配置中心新生成的配置信息无法传输至从配置中心,导致主配置中心和从配置中心的配置信息不同步。这时,对于IDC_M内的服务进程而言,主配置中心无法访问,只能访问从配置中心获取配置信息,而这些通过访问从配置中心获得的配置信息可能不是最新的配置信息。
4、主配置中心和从配置信息的切换繁琐。当主配置中心和从配置中心要互换角色时,需要知会所有的服务进程才能完成主配置中心和从配置中心的角色互换。
发明内容
本发明实施例的目的在于提供一种配置中心的容灾系统和方法,旨在解决现有的设置主从配置中心的容灾方式难以应对配置中心单机故障、IDC故障、IDC专线故障等问题。
本发明实施例是这样实现的,一种配置中心的容灾系统,所述系统包括:
多个配置中心,每个配置中心均接收所有服务进程上传的状态信息,依据所述状态信息更新配置信息,同时每个配置中心均将预设的配置级别及所述配置信息发送给所有服务进程,以使每个服务进程根据所述配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
本发明实施例的另一目的在于提供配置中心的容灾方法,所述方法包括以下步骤:
每个配置中心接收所有服务进程上传的状态信息;
每个配置中心依据状态信息更新配置信息;
每个配置中心向所有服务进程发送配置信息及预设的配置级别;
每个服务进程根据配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
在本发明实施例中,设置多个相互独立、且能各自收集和更新配置信息的配置中心的方案使得配置中心的容灾效果大大提高。所有配置中心都具有配置信息的更新功能、均能向服务进程发送配置信息,且配置级别的设置使得此配置中心的容灾系统能够应对配置中心单机故障、IDC故障及IDC专线故障,即使在IDC故障的最差情况下也能保证配置信息的“局部有效”及更新。
附图说明
图1是本发明实施例提供的配置中心的结构图;
图2是本发明优选实施例提供的配置中心的结构图;
图3是本发明第二实施例提供的配置中心的容灾方法流程图
图4是本发明第三实施例提供的配置中心的容灾方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例取消了现有的配置中心容灾方案中主从配置中心的设置,改为设置多个配置中心。且各个配置中心相互独立,所有的配置中心均能收集和更新配置信息。
本发明提供了一种配置中心的容灾系统和方法:
所述系统包括:
多个配置中心,每个配置中心均接收所有服务进程上传的状态信息,依据所述状态信息更新配置信息,同时每个配置中心均将预设的配置级别及所述配置信息发送给所有服务进程,以使每个服务进程根据所述配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
所述方法包括:
每个配置中心接收所有服务进程上传的状态信息;
每个配置中心依据状态信息更新配置信息;
每个配置中心向所有服务进程发送配置信息及预设的配置级别;
每个服务进程根据配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
下面将详细描述本发明实施例提供的配置中心的容灾系统,为了便于说明,仅示出了与本发明实施例相关的部分。
在本发明实施例中,配置中心的容灾系统包括多个位于不同IDC内的相互独立的配置中心1,各个配置中心通过IDC专线连接。其中:
配置中心1,用于接收所有服务进程上传的状态信息,依据状态信息更新配置信息,同时每个配置中心均将配置信息及预设的配置级别发送给所有服务进程,以使每个服务进程根据配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
在本发明实施例中,多个配置中心分别位于多个不同的IDC内,配置中心的数量可按需求确定,理想情况为每个IDC内一个配置中心。所有服务进程分别存在于各个IDC中的各个服务器中。
在本发明实施例中,配置中心1包括进程状态接收单元11、配置信息更新单元12、配置级别设置单元13及配置信息发送单元14,如图1所示。其中:
进程状态接收单元11,用于接收所有服务进程上传的状态信息。
在本发明实施例中,所有配置中心的进程状态接收单元11均能接收所有服务进程定期上传来的状态信息,其中,状态信息包括但不限于服务进程的运行统计(如:每秒处理的请求数、正常应答数等)。状态信息上传的时间间隔为预先定义的,服务进程会根据预设的时间间隔定期上传状态信息至配置中心。
配置信息更新单元12,用于依据所述状态信息更新配置信息。
在本发明实施例中,所有配置中心的配置信息更新单元12都可依据所述状态信息更新配置信息。若是第一次收到服务进程传输来的状态信息,则汇总状态信息后直接形成配置信息;若不是第一次收到服务进程传输来的状态信息,则汇总状态信息后更新现有的配置信息。其中,所述配置信息包括但不限于服务进程的运行状态(服务进程运行状态包括服务进程正常服务或服务进程不能正常服务)。根据接收到的状态信息可更新配置信息,如若接收到的状态信息为服务进程已连续多秒未正常应答,此时将此服务进程的配置信息更新为该服务进程不能正常服务。
在本发明实施例中,由于各配置中心均能独自接收服务进程传输来的状态信息,并依据所述状态信息更新配置信息,因此,正常情况下,所有配置中心的配置信息都是相同且有效的。这样的方式至少可以带来以下两点优点:
第一,当某个IDC发生故障时,仅是该IDC内的设备故障(若该IDC内有配置中心,则此配置中心的配置信息可能由于没及时更新发生错误),但该IDC外所有配置中心的配置信息均是正确且有效的。而不会出现由于主配置中心所在的IDC故障,主配置中心不可用,导致配置信息出错的情况。
第二,当IDC专线发生故障时,该IDC专线连接的两个IDC内配置中心的配置信息可能有部分出错,即IDC专线连接的对端IDC内服务进程的配置信息可能出错,但是这些服务进程所在IDC内的配置中心仍然有正确且有效的配置信息。
例如:IDC_1与IDC_3之间的IDC专线发生故障,则此时对于IDC_1中的配置中心A来说,位于IDC_3中的服务进程的配置信息可能出错;对于IDC_3中的配置中心B来说,位于IDC_1中的服务进程的配置信息可能出错。但是,位于IDC_3中的服务进程可从IDC_3中的配置中心B中获得正确的配置信息;位于IDC_1中的服务进程可从IDC_1中的配置中心A中获得正确的配置信息。
即使是在极端情况下,所有的IDC专线都发生了故障,各个IDC内配置中心的配置信息也是正确的。
配置级别设置单元13,用于为每一个配置中心设置唯一的配置级别。
在本发明实施例中,用户预先为每一个配置中心设置唯一的配置级别,意味着每个配置中心的配置级别都是不相同的。此处,配置级别为预先设置的,用CfgLevel表示配置级别。配置级别是用户预先根据配置中心的稳定性信息进行设置的,稳定性信息包括但不限于配置中心的硬件配置、配置中心所在IDC的稳定情况等,最终保证配置级别最大的配置中心为稳定性最高、最不易出故障的配置中心。
配置信息发送单元14,用于向所有服务进程发送配置信息及预设的配置级别。
在本发明实施例中,所有配置中心均会向所有服务进程发送配置信息及预设的配置级别。这时候,每个服务进程都会收到多个配置信息,同时获得各个配置中心的配置级别,服务进程会在比较各个配置中心的配置级别后,自动将配置级别最大的配置中心发出的配置信息作为有效的配置信息来使用。
因此,在发送配置信息的同时发送配置级别,使得服务进程能够在多个配置信息中选择有效的配置信息,即只有配置级别最大的配置中心发出的配置信息才会生效。此时,当配置级别最大的配置中心发生故障时,配置级别第二大的配置中心发出的配置信息会自动成为有效配置信息,若配置级别第一大和第二大的配置中心都发生了故障,则配置级别第三大的配置中心发出的配置信息会自动成为有效配置信息......以此类推。
这时,不论多少个配置中心同时发生了故障,只要有一个配置中心是正常工作的(由于配置中心众多,一般不会全部同时出现故障),便能向所有的服务进程发送正确且有效的配置信息。由于所有配置中心均能向所有服务进程发送准确的配置信息,因此,即使是所有的IDC专线都发生了故障,各个IDC内的配置中心也能向所在IDC内的服务进程发送准确的配置信息。
在本发明另一优选实施例中,配置中心的容灾系统还包括灵敏度控制单元15,如图2所示:
灵敏度控制单元15,用于当配置中心发现故障机的数量超过预设的阀值时,放弃汇总状态信息形成配置信息的操作。
在本发明实施例中,各个配置中心均有一个灵敏度控制单元15用于控制配置中心灵敏度。具体为:配置中心在汇总服务进程发送过来的状态信息时,若发现故障机(当IDC内部分设备的服务进程未发送状态信息时,配置中心会认为因为机器故障,所以没发送状态信息,将这些设备认定为故障机。)的数量超过一定的阀值时,配置中心认为收到的状态信息无效,放弃本次汇总状态信息后更新配置信息的操作。其中,阀值的值为预设的。例如:配置中心接收到大部分IDC内部分设备故障的信息时,认为是IDC内部分设备出了故障因而没有发送状态信息,但是可能是因为网络延迟的原因使得配置中心还未收到服务进程发送的状态信息,若此时,配置中心认为是故障机,则汇总的配置信息就会出错,因此此时配置中心不再做任何操作。这样的设置可用于防止配置中心过于“灵敏”导致错误汇总,且有效防止了网络波动对配置中心的影响。
在本发明实施例中,多个相互独立、且能各自收集和更新配置信息的配置中心的方案使得配置中心的容灾效果大大提高。其主要表现在以下几个方面的容灾效果得到很大提升。
一、所有配置中心都具有配置信息的更新功能、均能向服务进程发送配置信息,且配置级别的设置使得此配置中心的容灾系统能够应对配置中心单机故障IDC故障及IDC专线故障,即使在IDC故障的最差情况下也能保证配置信息的“局部有效”及更新。具体为:
1、不论多少配置中心同时发生了故障,只要有一个配置中心是正常工作的(由于配置中心众多,一般不会全部同时出现故障),便能向所有的服务进程发送正确且有效的配置信息。
2、当某个IDC发生故障时,仅是该IDC内的设备故障(若该IDC内有配置中心,则此配置中心的配置信息可能由于没及时更新发生错误),但该IDC外所有配置中心的配置信息均是正确且有效的。因此,该IDC外所有配置中心均能向所有服务进程发送正确且有效的配置信息。
3、当IDC专线发生故障时,该IDC专线连接的两个IDC内配置中心的配置信息可能有部分出错,即IDC专线连接的对端IDC内服务进程的配置信息可能出错,但是这些服务进程可从其所在IDC内的配置中心获取正确的配置信息。即使是在极端情况下,所有的IDC专线都发生了故障,各个IDC内配置中心的配置信息也是正确的,因此,即使是所有的IDC专线都发生了故障,各个IDC内的配置中心也能向所在IDC内的服务进程发送准确的配置信息。
二、切换发出有效配置信息的配置中心方便。由于只有配置级别最大的配置中心发出的配置信息才是有效的,因此,只需改变配置中心的配置级别,便能轻松切换发出有效配置信息的配置中心。
三、灵敏度控制的机制有效防止了网络波动对配置中心的影响。
实施例二:
如图3所示为本发明第二实施例提供的配置中心的容灾方法的流程图,为了便于说明,仅示出了与本发明实施例相关的部分。
在步骤S301中,接收服务进程上传的状态信息。
在本发明实施例中,每个配置中心均能接收服务进程上传的状态信息,其中,状态信息包括但不限于服务进程的运行统计(如:每秒处理的请求数、正常应答数等),状态信息上传的时间间隔为预先定义的,服务进程会根据预设的时间间隔定期上传状态信息至配置中心。
在步骤S302中,每个配置中心依据状态信息更新配置信息。
在本发明实施例中,所有配置中心都可在将服务进程传输来的状态信息汇总后,形成配置信息。若是第一次收到服务进程传输来的状态信息,则汇总状态信息后直接形成配置信息;若不是第一次收到服务进程传输来的状态信息,则汇总状态信息后更新现有的配置信息。其中,所述配置信息包括但不限于服务进程的运行状态(服务进程运行状态包括服务进程正常服务或服务进程不能正常服务)。根据接收到的状态信息可更新配置信息,如若接收到的状态信息为服务进程已连续多秒未正常应答,此时将此服务进程的配置信息更新为该服务进程不能正常服务。
在步骤S303中,向所有服务进程发送配置信息及预设的配置级别。
在本发明实施例中,每个配置中心均会向所有服务进程发送配置信息及预设的配置级别。配置级别用CfgLevel表示。配置级别是用户预先根据配置中心的稳定性信息进行设置的,稳定性信息包括但不限于配置中心的硬件配置、配置中心所在IDC的稳定情况等,最终保证配置级别最大的配置中心为稳定性最高、最不易出故障的配置中心。
在步骤S304中,每个服务进程根据配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
在本发明实施例中,每个服务进程都会收到多个配置信息,同时获得各个配置中心的配置级别,服务进程会在比较各个配置中心的配置级别后,根据配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
在本发明实施例中,多个相互独立、且能各自收集和更新配置信息的配置中心的方案使得配置中心的容灾效果大大提高。其主要表现在以下几个方面的容灾效果得到很大提升。
一、所有配置中心都具有配置信息的更新功能、均能向服务进程发送配置信息,且配置级别的设置使得此配置中心的容灾系统能够应对配置中心单机故障、IDC故障及IDC专线故障,即使在IDC故障的最差情况下也能保证配置信息的“局部有效”及更新。具体为:
1、不论多少配置中心同时发生了故障,只要有一个配置中心是正常工作的(由于配置中心众多,一般不会全部同时出现故障),便能向所有的服务进程发送正确且有效的配置信息。
2、当某个IDC发生故障时,仅是该IDC内的设备故障(若该IDC内有配置中心,则此配置中心的配置信息可能由于没及时更新发生错误),但该IDC外所有配置中心的配置信息均是正确且有效的。因此,该IDC外所有配置中心均能向所有服务进程发送正确且有效的配置信息。
3、当IDC专线发生故障时,该IDC专线连接的两个IDC内配置中心的配置信息可能有部分出错,即IDC专线连接的对端IDC内服务进程的配置信息可能出错,但是这些服务进程可从其所在IDC内的配置中心获取正确的配置信息。即使是在极端情况下,所有的IDC专线都发生了故障,各个IDC内配置中心的配置信息也是正确的,因此,即使是所有的IDC专线都发生了故障,各个IDC内的配置中心也能向所在IDC内的服务进程发送准确的配置信息。
二、切换发出有效配置信息的配置中心方便。由于只有配置级别最大的配置中心发出的配置信息才是有效的,因此,只需改变配置中心的配置级别,便能轻松切换发出有效配置信息的配置中心。
实施例三:
如图4所示为本发明第三实施例提供的配置中心的容灾方法的流程图,为了便于说明,仅示出了与本发明实施例相关的部分。
在步骤S401中,接收服务进程上传的状态信息。
在步骤S402中,判断故障机的数量是否超过阀值,是则执行步骤S404,否则执行步骤S403。
在本发明实施例中,阀值为预设的。当IDC内部分设备的服务进程未发送状态信息时,配置中心会认为因为机器故障,所以没发送状态信息,将这些设备认定为故障机。
在步骤S403中,放弃汇总状态信息。
在本发明实施例中,配置中心在汇总服务进程发送过来的状态信息时,若发现故障机(IDC内部分设备的服务进程未发送状态信息,此时,配置中心会认为因为机器故障,所以没发送状态信息)的数量超过一定的阀值时,配置中心认为收到的状态信息无效,放弃本次汇总状态信息后更新配置信息的操作。
在步骤S404中,每个配置中心依据状态信息更新配置信息。
在步骤S405中,向所有服务进程发送配置信息及预设的配置级别。
在步骤S406中,每个服务进程根据配置级别的大小,选取配置级别最大的配置中心发送的配置信息作为有效配置信息。
在本发明实施例中,灵敏度控制的机制有效防止了网络波动对配置中心的影响。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。