集群通知的推送方法、装置及电子设备
技术领域
本发明涉及通信技术领域,尤其涉及一种集群通知的推送方法、装置及电子设备。
背景技术
集群***是一种由相互连接的计算机组成的并行或分布式***,可以作为单独或统一的计算资源加以管理。在集群环境下,一个应用被部署于多台服务器中并行进行处理,从而提高服务器端的运行能力。部署了该应用的服务器与******中依赖于该应用的所有相关客户端相连,以向相关客户端提供服务。当某个应用的配置变更时,其部署的每一台服务器都将对变更数据进行处理,然后向所有相关客户端推送变更通知,以便相关客户端从服务器读取变更后的配置。
发明人在实现本发明的过程中,发现现有技术至少存在如下问题:当集群***向******推送通知时,集群***中的每台服务器均会向******中的所有相关客户端进行推送,导致大量的重复推送,使得***负载极高,极大地降低了***稳定性。
发明内容
本发明实施例提供一种集群通知的推送方法、装置及电子设备,以避免集群通知的重复推送,提升***的稳定性。
为达到上述目的,本发明实施例提供了一种集群通知的推送方法,所述集群通知由多台服务器中选出的值班机器所推送,所述方法包括:获取应用的配置变更数据,所述配置变更数据用于指示所述应用的配置项变更;判断当前服务器是否为所述值班机器,若是,则根据所述配置变更数据生成变更通知,并将所述变更通知推送至与所述应用相关的客户端。
本发明实施例还提供了一种集群通知的推送装置,所述集群通知由多台服务器中选出的值班机器所推送,所述装置包括:获取模块,用于获取应用的配置变更数据,所述配置变更数据用于指示所述应用的配置项变更;判断模块,用于判断当前服务器是否为所述值班机器;推送模块,用于当所述当前服务器为所述值班机器时,根据所述配置变更数据生成变更通知,并将所述变更通知推送至与所述应用相关的客户端。
本发明实施例还提供一种电子设备,包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以用于:获取应用的配置变更数据,所述配置变更数据用于指示所述应用的配置项变更;判断当前服务器是否为值班机器,若是,则根据所述配置变更数据生成变更通知,并将所述变更通知推送至与所述应用相关的客户端。
本发明实施例提供的集群通知的推送方法、装置及电子设备,通过判断当前服务器是否为值班机器,来确定是否进行集群通知的推送,在多台服务器中仅由值班机器来进行推送,从而避免的集群通知的重复推送,提高了***的稳定性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的业务***的结构示意图;
图2为本发明提供的集群通知的推送方法一个实施例的流程图;
图3为本发明提供的集群通知的推送方法另一个实施例的流程图;
图4为本发明提供的集群通知的推送装置一个实施例的结构示意图;
图5为本发明提供的集群通知的推送装置另一个实施例的结构示意图;
图6为本发明提供的电子设备实施例的结构示意图。
附图标记说明:
41-获取模块、42-判断模块、43-推送模块、51-检测模块、52-设定模块、61-存储器、62-处理器、63-通信组件、64-电源组件、65-音频组件、66-显示器。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术重复推送的缺陷,本申请提供一种解决方案,在多台服务器中选择一台作为值班机器进行推送,从而避免的重复推送。下面通过具体的例子来说明本发明的主要原理。举例说明,假设应用A部署于集群***中的300台服务器,******有5000台客户端依赖于应用A。当应用A的配置变更时,300台服务器均会通知******的5000台客户端来读取应用A的配置。这时,只针对一个应用A的配置变更,服务器端将推送300*5000=150万次的变更通知,后续,也将收到相同数量的读取调用。考虑******处理耗时等因素,150万次分散到1分钟内完成,则服务器端需满足2.5万tps的吞吐量要求,推送压力巨大,极大地降低了集群***的稳定性。本申请提供的方案是,在300台服务器中任意指定(或者根据各服务器的负载能力而选择性地指定)一台作为值班机器。每一台服务器在接收到应用的配置变更数据时,首先判断其自身(当前服务器)是否为值班机器,如果是,则推送相关的通知,否则,不推送。由此,300*5000=150万次的推送量降低为5000次,避免了重复推送,实现轻量通知的推送,从而降低***压力,提高***稳定性。另一方面,各服务器定时检测值班机器的可用性,当值班机器不可用时,可重新设定值班机器,以确保通知推送的及时性和低成本。
本发明实施例提供的方法可应用于任何具有集群通知推送能力的业务***,如,签约中心***等。图1为本发明实施例提供的业务***的结构示意图。首先,业务***中任意选择一台服务器(服务器2)作为值班机器。当各服务器接收到应用的配置变更数据时,各自判断其自身是否为值班机器,如果是,则推送相关的通知,否则,不推送。如图1所示,服务器2为值班机器,所以由服务器2向各客户端推送变更通知,而其余服务器则不发送。因此,避免了重复推送,降低了***压力,提高了***稳定性。
实施例一
图2为本发明提供的集群通知的推送方法一个实施例的流程图,该方法的执行主体可以为上述实施例所描述的业务***中的任意服务器。如图3所示,该集群通知的推送方法包括如下步骤:
S201,获取应用的配置变更数据,该配置变更数据用于指示应用的配置项变更。
S202,判断当前服务器是否为值班机器,若是,则执行步骤S203,否则,结束操作。
S203,根据上述配置变更数据生成变更通知。
S204,将该变更通知推送至与上述应用相关的客户端。
在本发明实施例中,集群通知由多台服务器中选出的值班机器所推送。预先在多台服务器中任意指定(或者根据各服务器的负载能力而选择性地指定)一台作为值班机器。然后对于各台服务器,当获取到用于指示应用的配置项变更的配置变更数据后,首先判断其自身是否为值班机器。只有当前服务器为值班机器时,才生成变更通知进行推送,否则,不进行推送。同时,服务器还对获取到的变更数据进行解析,然后刷新应用的各配置项。
本发明实施例的一个具体应用场景为应用于签约中心***。当配置中心通知签约中心配置项变更时,签约中心重新获取配置并进行解析、重组等操作。然后,签约中心的各台服务器根据上述方法步骤进行判断,最后,由一台值班机器将通知推送至******中所有引用签约中心近端jar的客户端。
本发明实施例提供的集群通知的推送方法,通过判断当前服务器是否为值班机器,来确定是否进行集群通知的推送,在多台服务器中仅由值班机器来进行推送,从而避免的集群通知的重复推送,提高了***的稳定性。
实施例二
图3为本发明提供的集群通知的推送方法另一个实施例的流程图。如图3所示,在上述实施例的基础上,可以在业务***中设置缓存开关,各服务器通过定时查询缓存开关的状态,来检测值班机器的可用性,若值班机器不可用,则可设定当前服务器为值班机器。具体地,本实施例提供的集群通知的推送方法可以进一步包括以下步骤:
S301,定时查询缓存开关的状态。
服务器定时检测当前值班机器的可用性,如果当前值班机器不可用(无法完成推送任务),则各个服务器通过争抢机制,来获取值班机器的推送权限。首先,各服务器可以通过心跳或者定时任务的方式,以一定的时间间隔(预设时长)定时查询缓存开关的状态。
在本发明实施例中,可以采用memcached或者redis缓存做开关机制,且非值班机器与值班机器之间无需交互。相比于常用的选举算法,无需通过数据库或消息通道做消息标记,且避免了集群服务器间呈现笛卡尔积量级次的交互通知。相比较而言本发明实施例所提供的方案具有较高的时效性,且成本更低,更易于实施。
S302,判断缓存开关是否开启,若未开启,则执行步骤S303,若开启,执行步骤S307。
S303,开启缓存开关。
服务器在检测值班机器之前,首先需要开启缓存开关。因此,当服务器检测到缓存开关未开启(即,关闭状态)时,证明此时没有其它服务器来检测值班机器。
S304,判断当前值班机器是否可用,若可用,则执行步骤S306;若不可用,则执行步骤305之后,再执行步骤306。
S305,设定当前服务器为值班机器。
S306,关闭缓存开关,并结束操作。
服务器可以通过调用CheckService服务来判断当前值班机器是否可用。若当前值班机器可用,则关闭缓存开关并结束操作;若当前值班机器不可用,则将当前服务器(当前执行查询缓存开关操作的服务器)设定为值班机器,即当前服务器争抢到值班机器的推送权限。
S307,判断缓存开关的开启时间是否超时(超过预设时长值),若超时,则继续执行步骤S306,若未超时,则结束操作。
当服务器检测到缓存开关处于开启状态时,证明此时有其它服务器正在检测值班机器。此时,需要判断缓存开关的开启时间是否超时,若未超时,则说明检测值班机器可用性的其它服务器正在正常工作,因此,当前服务器结束操作;若缓存开关的开启时间已超时,说明检测值班机器可用性的其它服务器在开启缓存开关后出现问题,无法正常关闭缓存开关,因此,由当前服务器执行关闭缓存开关的操作,以便于后续其它服务器能够正常查询缓存开关。
本发明实施例提供的集群通知的推送方法,通过判断当前服务器是否为值班机器,来确定是否进行集群通知的推送,在多台服务器中仅由值班机器来进行推送,从而避免的集群通知的重复推送,提高了***的稳定性。同时各服务器通过定时查询缓存开关的状态,来检测值班机器的可用性,从而动态选择可用的值班机器进行推送,解决了通过单机通知造成的单点故障问题,保证了***的高可用性。
实施例三
图4为本发明提供的集群通知的推送装置一个实施例的结构示意图,可用于执行如图2所示的方法步骤。该装置可以为上述业务***中的任意一台服务器。如图4所示,该装置可以包括:获取模块41、判断模块42和推送模块43。
其中,获取模块41用于获取应用的配置变更数据,该配置变更数据用于指示应用的配置项变更;判断模块42用于判断当前服务器是否为值班机器;推送模块43用于当当前服务器为值班机器时,根据配置变更数据生成变更通知,并将该变更通知推送至与应用相关的客户端。
在本发明实施例中,集群通知由多台服务器中选出的值班机器所推送,预先在多台服务器中任意指定(或者根据各服务器的负载能力而选择性地指定)一台作为值班机器。然后对于各台服务器,当获取模块41获取到用于指示应用的配置项变更的配置变更数据后,首先判断模块42判断其自身是否为值班机器。只有当前服务器为值班机器时,才生成变更通知由推送模块43进行推送,否则,不进行推送。
本发明实施例提供的集群通知的推送装置,通过判断当前服务器是否为值班机器,来确定是否进行集群通知的推送,在多台服务器中仅由值班机器来进行推送,从而避免的集群通知的重复推送,提高了***的稳定性。
实施例四
图5为本发明提供的集群通知的推送装置另一个实施例的结构示意图,可用于执行如图3所示的方法步骤。如图5所示,在上述图4所示实施例的基础上,本发明实施例提供的集群通知的推送装置还可以包括:检测模块51和设定模块52。
其中,检测模块51用于检测值班机器的可用性;设定模块52用于当值班机器不可用时,设定当前服务器为值班机器。
在本发明实施例中,服务器定时检测当前值班机器的可用性,如果当前值班机器不可用(无法完成推送任务),则各个服务器通过争抢机制,来获取值班机器的推送权限。
具体地,可以在业务***中设置缓存开关,各服务器的检测模块51可以通过心跳或者定时任务的方式,定时查询缓存开关的状态,以检测值班机器的可用性(例如,通过调用CheckService服务来判断当前值班机器是否可用),若值班机器不可用,则设定模块52设定当前服务器为值班机器。
本发明实施例可以采用memcached或者redis缓存做开关机制,且非值班机器与值班机器之间无需交互。相比于常用的选举算法,无需通过数据库或消息通道做消息标记,且避免了集群服务器间呈现笛卡尔积量级次的交互通知。相比较而言本发明实施例所提供的方案具有较高的时效性,且成本更低,更易于实施。
本发明实施例提供的集群通知的推送装置,通过判断当前服务器是否为值班机器,来确定是否进行集群通知的推送,在多台服务器中仅由值班机器来进行推送,从而避免的集群通知的重复推送,提高了***的稳定性。同时各服务器通过定时查询缓存开关的状态,来检测值班机器的可用性,从而动态选择可用的值班机器进行推送,解决了通过单机通知造成的单点故障问题,保证了***的高可用性。
实施例五
以上描述了集群通知的推送装置的内部功能和结构,该装置可实现为一种电子设备。图6为本发明提供的电子设备实施例的结构示意图。如图6所示,该电子设备包括存储器61和处理器62。
存储器61,用于存储程序。除上述程序之外,存储器61还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器61可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器62,与存储器61耦合,执行存储器61所存储的程序,以用于:
获取应用的配置变更数据,该配置变更数据用于指示应用的配置项变更;判断当前服务器是否为值班机器,若是,则根据配置变更数据生成变更通知,并将该变更通知推送至与应用相关的客户端。
在一可选实施方式中,处理器62还可以用于检测值班机器的可用性,若值班机器不可用,则设定当前服务器为值班机器。
在一可选实施方式中,处理器62还可以用于通过定时查询业务***中的缓存开关,来检测值班机器的可用性。
上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。
进一步,如图6所示,电子设备还可以包括:通信组件63、电源组件64、音频组件65、显示器66等其它组件。图6中仅示意性给出部分组件,并不意味着电子设备只包括图6所示组件。
通信组件63被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件63经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件63还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
基于通信组件63,处理器62可以通过通信组件63将所有消费数据存储到外部数据库中。
电源组件64,为电子设备的各种组件提供电力。电源组件64可以包括电源管理***,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件65被配置为输出和/或输入音频信号。例如,音频组件65包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器61或经由通信组件63发送。在一些实施例中,音频组件65还包括一个扬声器,用于输出音频信号。
显示器66包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。