一种报警数据处理系统和方法转让专利

申请号 : CN201910385528.8

文献号 : CN110275763A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄守凯

申请人 : 北京善义善美科技有限公司

摘要 :

本发明涉及一种报警数据处理系统和方法。所述系统包括:负载均衡服务器,经配置按照负载均衡策略将接入的报警数据负载到调度服务器;调度服务器组,经配置按照粒度规则为接收到的报警数据划分粒度并确定粒度路由,将所述报警数据及其粒度信息转发到粒度路由信息中的业务服务器;以及业务服务器组,经配置在接收到的报警数据及其粒度信息后,根据所述粒度信息加载所述报警数据的上下文数据,根据所述上下文数据实时处理所述报警数据。本发明有效地解决了原数据中心遇到的资源利用不均的问题,能够有效、灵活地调整及分配业务服务器所处理的报警数据量,适应数据量大、实时性要求高并且数据间上下文依赖性强的场景。

权利要求 :

1.一种报警数据处理系统,其中包括:

负载均衡服务器,经配置按照负载均衡策略将接入的报警数据负载到调度服务器;

调度服务器组,经配置按照粒度规则为接收到的报警数据划分粒度并确定粒度路由,将所述报警数据及其粒度信息转发到粒度路由信息中的业务服务器;以及业务服务器组,经配置在接收到的报警数据及其粒度信息后,根据所述粒度信息加载所述报警数据的上下文数据,根据所述上下文数据实时处理所述报警数据。

2.根据权利要求1所述的报警数据处理系统,其中,所述负载均衡服务器包括两个采用双机热备机制的服务器,经配置分别为主、备负载均衡服务器。

3.根据权利要求1所述的报警数据处理系统,其中,所述调度服务器组包括多个调度服务器,其中,所述调度服务器包括:粒度划分模块,经配置用于根据所述粒度规则及所述报警数据的原始信息确定所述报警数据的粒度;

粒度路由模块,经配置用于确定对应所述粒度的粒度路由,粒度路由信息包括粒度及与其对应的业务服务器;和数据转发模块,经配置用于将接收到报警数据转发到粒度路由信息中的业务服务器。

4.根据权利要求3所述的报警数据处理系统,其中,所述粒度路由模块还包括:第一查询单元,经配置用于根据当前粒度,查询内存中的粒度路由信息,获取与当前粒度对应的业务服务器;和计算单元,经配置在内存中没有获取到与当前粒度对应的业务服务器时,根据业务服务器的负载资源计算得到新路由,从而获得与当前粒度对应的业务服务器。

5.根据权利要求4所述的报警数据处理系统,其中,所述计算单元经配置用以完成以下步骤:计算每一个业务服务器的负载分数;

根据负载分数的数值大小进行聚类,得到多个聚类值;

对所述多个聚类值进行最小负载优先计算,确定多个候选业务服务器;以及根据随机算法,从所述多个候选业务服务器中确定一个业务服务器。

6.根据权利要求5所述的报警数据处理系统,其中,所述计算单元经配置,通过以下步骤计算每一个业务服务器的负载分数:根据业务服务器的基础资源信息计算所述业务服务器的最大处理能力值;

根据所述业务服务器的运行资源信息计算所述业务服务器当前能力空闲比例;和计算所述业务服务器的最大处理能力值和当前能力空闲比例的乘积,得到所述业务服务器的负载分数。

7.根据权利要求6所述的报警数据处理系统,其中,所述计算单元经配置,周期性地获取业务服务器的运行资源信息,根据最新的运行资源信息计算所述业务服务器当前能力空闲比例及所述业务服务器的负载分数。

8.根据权利要求4所述的报警数据处理系统,其中,所述调度服务器组中的至少一个调度服务器包括:粒度路由调整模块,经配置用于计算业务服务器组中每一个业务服务器的负载资源,根据所述负载资源调整粒度路由。

9.根据权利要求1所述的报警数据处理系统,其中,所述业务服务器包括:上下文数据加载模块,用于根据所述粒度信息加载所述报警数据的上下文数据;和报警数据处理模块,用于根据加载所述报警数据的上下文数据处理所述报警数据。

10.根据权利要求9所述的报警数据处理系统,其中,所述上下文数据加载模块包括:第二查询单元,用于根据所述粒度信息查询业务服务器内部存储模块中的上下文数据;

第一加载单元,用于在所述内部存储模块中有与接收到的所述粒度信息匹配的上下文数据时,从内部存储模块中加载所述上下文数据;

第二加载单元,用于在所述内部存储模块中没有与接收到的所述粒度信息匹配的上下文数据时,从数据库集群中获取与接收到的所述粒度信息匹配的上下文数据。

11.根据权利要求9所述的报警数据处理系统,其中,所述业务服务器还包括:资源监控模块,用于监测所述业务服务器中的业务资源是否与当前运行资源相匹配;

粒度变更请求模块,用于在当前运行资源和业务资源不相匹配时,向调度服务器发送粒度变更请求。

12.根据权利要求9所述的报警数据处理系统,其中,所述业务服务器还包括:内部存储模块,用于存储与粒度对应的报警数据的上下文数据。

13.根据权利要求1所述的报警数据处理系统,其中,还包括:数据同步集群服务器,经配置用于同步系统内各个服务器进程的数据状态和维护粒度数据;以及数据库集群,用于存于存储报警数据的上下文数据。

14.一种报警数据处理方法,其中包括:

负载均衡服务器将接入的报警数据负载到调度服务器;

所述调度服务器按照粒度规则为接收到的报警数据划分粒度并确定粒度路由,并将所述报警数据及其粒度信息转发到粒度路由信息中的业务服务器;以及所述业务服务器接收到所述报警数据及其粒度信息后,根据所述粒度信息加载所述报警数据的上下文数据,并根据所述上下文数据实时处理所述报警数据。

15.根据权利要求14所述的报警数据处理方法,其中,所述负载均衡服务器将接入的报警数据负载到调度服务器时,按照配置的负载均衡策略,或采用随机的方式,将接入的报警数据负载到调度服务器组中的一个调度服务器。

16.根据权利要求14或15所述的报警数据处理方法,其中,所述负载均衡服务器包括两个采用双机热备机制的服务器,当主负载均衡服务器发生故障时,由备负载均衡服务器将接入的报警数据负载到调度服务器。

17.根据权利要求14所述的报警数据处理方法,其中,所述调度服务器按照粒度规则为接收到的报警数据划分粒度并确定粒度路由的步骤包括:查询粒度规则,根据所述粒度规则及所述报警数据的原始信息,确定所述报警数据的粒度;

在所述调度服务器的内存中查询粒度路由信息,获得与所述粒度对应的粒度路由,所述粒度路由包括与粒度对应的业务服务器;以及在所述调度服务器的内存中没有对应所述粒度的粒度路由时,根据业务服务器的负载资源计算得到新粒度路由,新粒度路由包括与粒度对应的业务服务器。

18.根据权利要求17所述的报警数据处理方法,其中,在确定所述报警数据的粒度时,如果没有与所述报警数据的原始信息对应的粒度,创建新粒度;以及根据业务服务器的负载资源计算得到新粒度路由,并记录所述粒度与新粒度路由中的业务服务器的关联关系。

19.根据权利要求17所述的报警数据处理方法,其中,在将所述报警数据转发到所述粒度路由信息中的业务服务器之前,确定所述业务服务器是否可用;在所述业务服务器不可用时,根据业务服务器的负载资源计算得到新粒度路由;将所述报警数据转发到新粒度路由信息中的业务服务器。

20.根据权利要求19所述的报警数据处理方法,其中,将原粒度路由信息中的业务服务器中的粒度信息及对应的报警数据的上下文数据同步到新粒度路由中的业务服务器。

21.根据权利要求17或18所述的报警数据处理方法,其中,所述报警数据的原始信息包括设备IP、设备区域、机器设备特征信息、或者业务信息中定义的一种或多种特征字段。

22.根据权利要求21所述的报警数据处理方法,其中,所述粒度规则包括:根据业务信息中的特征字段、设备IP和/或设备区域确定粒度;或由规则引擎实现的可以热更新和动态生效的粒度规则确定粒度。

23.根据权利要求17或18或19所述的报警数据处理方法,其中,根据业务服务器的负载资源计算得到新粒度路由的步骤包括:计算每一个业务服务器的负载分数;

根据负载分数的数值大小进行聚类,得到多个聚类值;

对所述多个聚类值进行最小负载优先计算,确定多个候选业务服务器;以及根据随机算法,从所述多个候选业务服务器中确定一个业务服务器。

24.根据权利要求23所述的报警数据处理方法,其中,计算每一个业务服务器的负载分数的步骤包括:根据业务服务器的基础资源信息计算所述业务服务器的最大处理能力值;

根据所述业务服务器的运行资源信息计算所述业务服务器当前能力空闲比例;以及计算所述业务服务器的最大处理能力值和当前能力空闲比例的乘积,得到所述业务服务器的负载分数。

25.根据权利要求24所述的报警数据处理方法,其中,还进一步包括:周期性地获取业务服务器的运行资源信息,根据最新的运行资源信息计算所述业务服务器当前能力空闲比例及所述业务服务器的负载分数。

26.根据权利要求17或18或19所述的报警数据处理方法,其中,进一步包括:周期性地查询粒度与业务服务器关联关系是否变化。

27.根据权利要求14所述的报警数据处理方法,其中,所述业务服务器根据所述粒度信息加载所述报警数据的上下文数据的步骤包括:查询业务服务器的内部存储模块中的粒度信息,在所述内部存储模块中有与接收到的所述粒度信息匹配的上下文数据时,从内部存储模块中加载所述上下文数据;以及在所述内部存储模块中没有与接收到的所述粒度信息匹配的上下文数据时,从数据库集群中加载与接收到的所述粒度信息匹配的上下文数据。

28.根据权利要求14或27所述的报警数据处理方法,其中,还包括:所述业务服务器在实时处理所述报警数据时,在当前运行资源和业务资源不相匹配时,变更或拆分所述业务服务器的粒度。

29.根据权利要求28所述的报警数据处理方法,其中,所述变更或拆分所述业务服务器的粒度的步骤包括:所述业务服务器向调度服务器发送粒度变更请求;

接收到所述粒度变更请求后,所述调度服务器根据所述业务服务器的基础资源数据和运行数据确定变更或拆分所述业务服务器的粒度;

在变更所述业务服务器的粒度时,将所述粒度的粒度路由中的当前业务服务器变新的业务处理器;

在拆分所述业务服务器的粒度时,根据拆分规则,将所述粒度拆分为多个子粒度,并分别为多个子粒度计算得到对应业务服务器,从而为多个子粒度确定对应的粒度路由。

30.根据权利要求29所述的报警数据处理方法,其中,在将所述粒度的粒度路由中的当前业务服务器变更为新的业务处理器时,还包括:将当前业务服务器中的报警数据的上下文数据同步到所述新的业务处理器;

从当前业务服务器中删除对应所述粒度的报警数据的上下文数据;和在将所述粒度与业务服务器的关联关系中的当前业务处理器变更为新的业务处理器。

31.根据权利要求29所述的报警数据处理方法,其中,在拆分所述业务服务器的粒度时,还包括:从当前业务服务器中删除与所述粒度对应的报警数据的上下文数据;

删除所述粒度与业务服务器的关联关系,并记录子粒度与对应粒度路由中的业务服务器的关联关系。

说明书 :

一种报警数据处理系统和方法

技术领域

[0001] 本发明涉及一种数据处理技术领域,特别地,涉及一种报警数据处理系统和方法。

背景技术

[0002] 计算机软硬件的发展使得并行与分布式计算越来越流行,然而计算机硬件资源利用不均衡的现象时有发生,负载均衡技术是提高系统资源利用率和并行计算性能的一项关键技术。
[0003] 负载均衡技术可分为静态和动态两类。如果负载可以在运行之前确定并在运行前进行完负载划分,则属于静态负载均衡问题;若只能在运行时测量负载并动态确定负载划分,则属于动态负载均衡问题。
[0004] 报警数据是众多机器数据中的一种,具有时效性要求高、上下文依赖性强及数据量大等特点。尤其在数据中心场景中,需要接收多来源的报警数据信息,为了提高报警接收服务器的资源利用率,往往采用动态负载均衡技术,搭建软件或者硬件的负载均衡服务器来解决本类问题。
[0005] 但是传统负载均衡技术中采用的负载均衡算法,如轮询算法、随机算法、最小负载优先算法及最长处理时间优先算法等,并不能解决报警数据时效性高、上下文依赖性强等问题;在资源共享方面上,传统负载均衡技术的数据同步和共享往往依赖数据中心,各个节点在处理报警数据时,需要通过数据中心得到所需的上下文数据,在海量报警数据的背景下,数据中心已经成为系统的瓶颈所在。

发明内容

[0006] 针对现有技术中存在的技术问题,本发明提出了报警数据处理系统和方法,用以解决在处理海量报警数据时的瓶颈问题。
[0007] 为了解决上述技术问题,本发明提供了一种报警数据处理系统,其中包括:负载均衡服务器,经配置按照负载均衡策略将接入的报警数据负载到调度服务器;调度服务器组,经配置按照粒度规则为接收到的报警数据划分粒度并确定粒度路由,将所述报警数据及其粒度信息转发到粒度路由信息中的业务服务器;以及业务服务器组,经配置在接收到的报警数据及其粒度信息后,根据所述粒度信息加载所述报警数据的上下文数据,根据所述上下文数据实时处理所述报警数据。
[0008] 其中,所述负载均衡服务器包括两个采用双机热备机制的服务器,经配置分别为主、备负载均衡服务器。
[0009] 其中,所述调度服务器组包括多个调度服务器,其中,所述调度服务器包括:粒度划分模块,经配置用于根据所述粒度规则及所述报警数据的原始信息确定所述报警数据的粒度;粒度路由模块,经配置用于确定对应所述粒度的粒度路由,粒度路由信息包括粒度及与其对应的业务服务器;和数据转发模块,经配置用于将接收到报警数据转发到粒度路由信息中的业务服务器。
[0010] 其中,所述粒度路由模块还包括:第一查询单元,经配置用于根据当前粒度,查询内存中的粒度路由信息,获取与当前粒度对应的业务服务器;和计算单元,经配置在内存中没有获取到与当前粒度对应的业务服务器时,根据业务服务器的负载资源计算得到新路由,从而获得与当前粒度对应的业务服务器。
[0011] 其中,所述计算单元经配置用以完成以下步骤:计算每一个业务服务器的负载分数;根据负载分数的数值大小进行聚类,得到多个聚类值;对所述多个聚类值进行最小负载优先计算,确定多个候选业务服务器;以及根据随机算法,从所述多个候选业务服务器中确定一个业务服务器。
[0012] 其中,所述计算单元经配置,通过以下步骤计算每一个业务服务器的负载分数:根据业务服务器的基础资源信息计算所述业务服务器的最大处理能力值;根据所述业务服务器的运行资源信息计算所述业务服务器当前能力空闲比例;和计算所述业务服务器的最大处理能力值和当前能力空闲比例的乘积,得到所述业务服务器的负载分数。
[0013] 其中,所述计算单元经配置,周期性地获取业务服务器的运行资源信息,根据最新的运行资源信息计算所述业务服务器当前能力空闲比例及所述业务服务器的负载分数。
[0014] 其中,所述调度服务器组中的至少一个调度服务器包括:粒度路由调整模块,经配置用于计算业务服务器组中每一个业务服务器的负载资源,根据所述负载资源调整粒度路由。
[0015] 其中,所述业务服务器包括:上下文数据加载模块,用于根据所述粒度信息加载所述报警数据的上下文数据;和报警数据处理模块,用于根据加载所述报警数据的上下文数据处理所述报警数据。
[0016] 其中,所述上下文数据加载模块包括:第二查询单元,用于根据所述粒度信息查询业务服务器内部存储模块中的上下文数据;第一加载单元,用于在所述内部存储模块中有与接收到的所述粒度信息匹配的上下文数据时,从内部存储模块中加载所述上下文数据;第二加载单元,用于在所述内部存储模块中没有与接收到的所述粒度信息匹配的上下文数据时,从数据库集群中获取与接收到的所述粒度信息匹配的上下文数据。
[0017] 其中,所述业务服务器还包括:资源监控模块,用于监测所述业务服务器中的业务资源是否与当前运行资源相匹配;和粒度变更请求模块,用于在当前运行资源和业务资源不相匹配时,向调度服务器发送粒度变更请求。
[0018] 其中,所述业务服务器还包括:内部存储模块,用于存储与粒度对应的报警数据的上下文数据。
[0019] 所述的报警数据处理系统还包括:数据同步集群服务器,经配置用于同步系统内各个服务器进程的数据状态和维护粒度数据;以及数据库集群,用于存于存储报警数据的上下文数据。
[0020] 本发明还提供了一种报警数据处理方法,其中包括:负载均衡服务器将接入的报警数据负载到调度服务器;所述调度服务器按照粒度规则为接收到的报警数据划分粒度并确定粒度路由,并将所述报警数据及其粒度信息转发到粒度路由信息中的业务服务器;以及所述业务服务器接收到所述报警数据及其粒度信息后,根据所述粒度信息加载所述报警数据的上下文数据,并根据所述上下文数据实时处理所述报警数据。
[0021] 其中,所述负载均衡服务器将接入的报警数据负载到调度服务器时,按照配置的负载均衡策略,或采用随机的方式,将接入的报警数据负载到调度服务器组中的一个调度服务器。
[0022] 其中,所述负载均衡服务器包括两个采用双机热备机制的服务器,当主负载均衡服务器发生故障时,由备负载均衡服务器将接入的报警数据负载到调度服务器。
[0023] 其中,所述调度服务器按照粒度规则为接收到的报警数据划分粒度并确定粒度路由的步骤包括:查询粒度规则,根据所述粒度规则及所述报警数据的原始信息,确定所述报警数据的粒度;在所述调度服务器的内存中查询粒度路由信息,获得与所述粒度对应的粒度路由,所述粒度路由包括与粒度对应的业务服务器;以及在所述调度服务器的内存中没有对应所述粒度的粒度路由时,根据业务服务器的负载资源计算得到新粒度路由,新粒度路由包括与粒度对应的业务服务器。
[0024] 其中,在确定所述报警数据的粒度时,如果没有与所述报警数据的原始信息对应的粒度,创建新粒度;以及根据业务服务器的负载资源计算得到新粒度路由,并记录所述粒度与新粒度路由中的业务服务器的关联关系。
[0025] 其中,在将所述报警数据转发到所述粒度路由信息中的业务服务器之前,确定所述业务服务器是否可用;在所述业务服务器不可用时,根据业务服务器的负载资源计算得到新粒度路由;将所述报警数据转发到新粒度路由信息中的业务服务器。
[0026] 其中,将原粒度路由信息中的业务服务器中的粒度信息及对应的报警数据的上下文数据同步到新粒度路由中的业务服务器。
[0027] 其中,所述报警数据的原始信息包括设备IP、设备区域、机器设备特征信息、或者业务信息中定义的一种或多种特征字段。
[0028] 其中,所述粒度规则包括:根据业务信息中的特征字段、设备IP和/或设备区域确定粒度;或由规则引擎实现的可以热更新和动态生效的粒度规则确定粒度。
[0029] 其中,根据业务服务器的负载资源计算得到新粒度路由的步骤包括:计算每一个业务服务器的负载分数;根据负载分数的数值大小进行聚类,得到多个聚类值;对所述多个聚类值进行最小负载优先计算,确定多个候选业务服务器;以及根据随机算法,从所述多个候选业务服务器中确定一个业务服务器。
[0030] 其中,计算每一个业务服务器的负载分数的步骤包括:根据业务服务器的基础资源信息计算所述业务服务器的最大处理能力值;根据所述业务服务器的运行资源信息计算所述业务服务器当前能力空闲比例;以及计算所述业务服务器的最大处理能力值和当前能力空闲比例的乘积,得到所述业务服务器的负载分数。
[0031] 所述的报警数据处理方法还进一步包括:周期性地获取业务服务器的运行资源信息,根据最新的运行资源信息计算所述业务服务器当前能力空闲比例及所述业务服务器的负载分数。
[0032] 所述的报警数据处理方法进一步包括:周期性地查询粒度与业务服务器关联关系是否变化。
[0033] 其中,所述业务服务器根据所述粒度信息加载所述报警数据的上下文数据的步骤包括:
[0034] 查询业务服务器的内部存储模块中的粒度信息,在所述内部存储模块中有与接收到的所述粒度信息匹配的上下文数据时,从内部存储模块中加载所述上下文数据;以及[0035] 在所述内部存储模块中没有与接收到的所述粒度信息匹配的上下文数据时,从数据库集群中加载与接收到的所述粒度信息匹配的上下文数据。
[0036] 所述的报警数据处理方法还包括:所述业务服务器在实时处理所述报警数据时,在当前运行资源和业务资源不相匹配时,变更或拆分所述业务服务器的粒度。
[0037] 其中,所述变更或拆分所述业务服务器的粒度的步骤包括:所述业务服务器向调度服务器发送粒度变更请求;接收到所述粒度变更请求后,所述调度服务器根据所述业务服务器的基础资源数据和运行数据确定变更或拆分所述业务服务器的粒度;在变更所述业务服务器的粒度时,将所述粒度的粒度路由中的当前业务服务器变新的业务处理器;在拆分所述业务服务器的粒度时,根据拆分规则,将所述粒度拆分为多个子粒度,并分别为多个子粒度计算得到对应业务服务器,从而为多个子粒度确定对应的粒度路由。
[0038] 其中,在将所述粒度的粒度路由中的当前业务服务器变更为新的业务处理器时,还包括:将当前业务服务器中的报警数据的上下文数据同步到所述新的业务处理器;从当前业务服务器中删除对应所述粒度的报警数据的上下文数据;和在将所述粒度与业务服务器的关联关系中的当前业务处理器变更为新的业务处理器。
[0039] 其中,在拆分所述业务服务器的粒度时,还包括:从当前业务服务器中删除与所述粒度对应的报警数据的上下文数据;删除所述粒度与业务服务器的关联关系,并记录子粒度与对应粒度路由中的业务服务器的关联关系。
[0040] 本发明有效地解决了原数据中心遇到的资源利用不均问题,能够有效、灵活地调整及分配业务服务器所处理的报警数据量;适应数据量大、实时性要求高并且数据间上下文依赖性强的场景;系统扩展性好、可用性高,无单点故障隐患,保障系统7*24小时运行。

附图说明

[0041] 下面,将结合附图对本发明的优选实施方式进行进一步详细的说明,其中:
[0042] 图1是根据本发明的一个实施例的报警处理方法及系统的框图;
[0043] 图2是根据本发明的一个实施例的调度服务器的功能框图;
[0044] 图3是根据本发明的一个实施例的业务服务器的功能框图;
[0045] 图4是根据本发明的一个实施例的报警数据处理方法的流程图;
[0046] 图5是根据本发明的一个实施例的为接收到的报警数据划分粒度的处理流程图[0047] 图6是根据本发明的一个实施例的根据业务服务器的负载资源计算得到新的路由的处理流程图;以及
[0048] 图7是根据本发明的一个实施例的变更或拆分粒度请求的具体处理流程图。

具体实施方式

[0049] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050] 在以下的详细描述中,可以参看作为本申请一部分用来说明本申请的特定实施例的各个说明书附图。在附图中,相似的附图标记在不同图式中描述大体上类似的组件。本申请的各个特定实施例在以下进行了足够详细的描述,使得具备本领域相关知识和技术的普通技术人员能够实施本申请的技术方案。应当理解,还可以利用其它实施例或者对本申请的实施例进行结构、逻辑或者电性的改变。
[0051] 本发明提供了一种基于负载均衡及自适应粒度划分的报警数据处理方法及系统,其中,所述系统的原理图如图1所示,所述报警数据处理系统包括负载均衡服务器组1、调度服务器组2和业务服务器组3。其中,所述负载均衡服务器组1经配置用于将接入的报警数据负载到调度服务器。作为一个具体实施例,所述载均衡服务器组1为两台采用双机热备机制的主、备服务器FC。通过配置双机热备机制,使两台服务器FC分别作为主、备服务器按照负载均衡策略或随机地、动态地将进入的HTTP或HTTPS流量分配到不同的调度服务器DC中,因而提高了系统整体的应用可用性和响应能力。
[0052] 所述调度服务器组2包括多个调度服务器DC,调度服务器DC经配置,按照粒度规则为接收到的报警数据划分粒度,并将所述报警数据及其粒度信息转发到业务服务器BC。
[0053] 业务服务器组3包括多个业务服务器BC,业务服务器BC经配置接收报警数据及其粒度信息,根据所述粒度信息加载所述报警数据的上下文数据,根据所述上下文数据实时处理所述报警数据。
[0054] 如图2所示,为调度服务器的功能框图。所述调度服务器DC包括:粒度划分模块21、粒度路由模块22和数据转发模块23。其中,粒度划分模块21经配置用于根据所述粒度规则及所述报警数据的原始信息,确定所述报警数据的粒度。在一个实施例中,所述报警数据中的原始信息可以为设备IP、设备区域、机器设备特征信息、或者业务信息中定义的一种或多种特征字段。所述设备IP中记载了发送所述报警数据的报警前端的IP地址;业务信息中包括多个特征字段,例如代表所述报警数据的业务类型的收车字段,根据该字段,可以得知该报警数据来自于属于收车业务。设备区域如发送报警数据的报警前端所属的地理区域。本发明在粒度规则中设置了粒度划分标准,例如根据设备区域划分:粒度可以是华南、华北等地理区域;也可以是不同级别的行政区域,如河南省、河北省、北京市、上海市、西安市;还可以根据业务划分,例如,粒度可以根据业务信息的特征字段来划分。例如,粒度可以是收车业务、保卖业务、金融业务。也可以是上述两种标准的结合,例如收车业务(北京)、收车业务(上海)、保卖业务(北京)、保卖业务(上海)。通过IP地址查询对照表可以确定地域,通过业务信息中的字段可以确定对应的业务。
[0055] 所述的粒度规则可存储在数据同步集群服务器Z上,调度服务器DC可从数据同步集群服务器Z上动态获取。另外,还可以设置更为复杂的规则,规则的设置和划分可通过规则引擎实现,规则引擎可以进行灵活的热更新,且动态生效,具体可参见drools、siddhi等技术。
[0056] 所述粒度规则还设置了创建新粒度的方法,例如,如果当前的粒度规则只给出了北京市与上海市的粒度,当接收到来自于其他地域的报警前端的报警数据时,将报警前端的地域创建为一个粒度并记录到数据同步集群服务器Z中。
[0057] 粒度路由模块22,经配置用于确定与所述粒度对应的粒度路由,即确定处理所述粒度的报警数据的业务服务器BC。其中,所述粒度路由包括粒度和用来处理所述粒度的报警数据业务服务器BC。所述粒度路由表明了将所述粒度的报警数据分配到具体的业务服务器BC。其中,在一个实施例中,一个粒度的报警数据只分配给一台业务服务器BC处理。由于实时数据量很大,如果采用存储磁盘或者使用其他数据共享技术,都需要消耗更大代价(更多的服务器),本发明首先使用一台设备,如前述的一台业务服务器BC进行数据共享和数据交互,如果一台业务服务器BC处理不完,或者业务服务器BC故障,根据粒度拆分规则,将粒度进行拆分,将拆分后的部分粒度及对应的上下文数据同步到其他业务服务器BC上。粒度路由模块22根据已确定的粒度判断是否已有对应的粒度路由:在已经存在与所述粒度对应的粒度路由的情况下,通过查询便可以得到,如果当前没有与所述粒度对应的粒度路由,则通过计算来确定一个处理所述粒度的报警数据的业务服务器BC。具体地,粒度路由模块22包括第一查询单元221和计算单元222。其中,第一查询单元221经配置用于根据当前粒度,查询内存或数据同步集群服务器Z中的粒度数据,获取与当前粒度对应的业务服务器BC,从而得到了该粒度对应的粒度路由,并将其发送给数据转发模块23。其中,第一查询单元221优先查询调度服务器DC的内存,在调度服务器的内存中没有对应所述粒度的粒度路由时,再查询数据同步集群服务器Z。计算单元222从数据同步集群服务器Z中获取业务服务器的负载资源数据,根据业务服务器的负载资源计算得到与当前粒度对应的业务服务器,从而得到了与该粒度对应的粒度路由,并将其发送给数据转发模块23。其中,计算的过程将在后续的方法中详细说明。需要说明的是,为了提高粒度路由的实时计算速度,计算单元222可以预先计算出获得新粒度路由的参数值,由于所述参数值是通过业务服务器的负载资源数据得到的,因而,计算单元222周期性地获取业务服务器的负载资源,并根据业务服务器的负载资源得到对应的参数值,在需要计算粒度路由时使用,从而保证了当前得到的参数值符合业务服务器的当前负载资源情况。
[0058] 由于业务服务器的负载资源情况会发生变化,一个粒度的报警数据的数据量可以会由于各种原因而变得很大,这就会出现业务服务器的资源不足以允许他处理当前粒度的报警数据,此时,需要进行粒度路由的调整。因而,在一个实施例中,调度服务器组中的一个调度服务器DC1中包括粒度路由调整模块24,用于计算业务服务器组中每一个业务服务器的负载资源,根据所述负载资源调整粒度路由。
[0059] 数据转发模块23接收到粒度路由后,将报警数据转发到所述粒度路由信息中的业务服务器BC。
[0060] 由于系统中有多个调度服务器,因而,可对调度服务器分配不同的功能。在一个具体实施例中,在N台调度服务器时,将其中的一台用于确定各个业务服务器BC压力情况,调整粒度转发策略,即完成粒度路由调整模块24的功能,在此称为第一类调度服务器。由其他N-1台调度服务器完成根据粒度路由转发报警数据,即完成粒度划分模块21、粒度路由模块22和数据转发模块23,在此称为第二类调度服务器。在第二类调度服务器需要新粒度路由时,与第一类调度服务器通信,由第一类调度服务器计算出新路由并提供给第一类调度服务器。由于第二类调度服务器专注于报警数据的转发,第一类调度服务器专注于粒度路由和规则的维护,因而提高了各个调度服务器的处理效率。
[0061] 如图3所示,为业务服务器的功能框图。所述业务服务器BC包括数据上报模块30、上下文数据加载模块31和报警数据处理模块32。其中,数据上报模块30用于向同步数据库Z注册资源信息,并周期性地向同步数据库Z提交运行资源信息和业务资源信息。为了便于调度服务器获取业务服务器BC的负载资源,合理地创建粒度路由,业务服务器BC在启动后,数据上报模块30向数据同步集群服务器Z上注册当前的资源情况,所述资源及运行情况分为:
[0062] 基础资源信息:包括但不限于CPU型号、内存大小、磁盘转数及网络带宽。
[0063] 运行资源信息:包括但不限于CPU使用率、内存使用率、网卡流量信息、磁盘IO使用率。
[0064] 业务资源信息:包括但不限于当前正在或者将要处理和存储的报警统计信息。
[0065] 基础资源信息在注册时提供一次即可,运行资源信息和业务资源信息周期性地提交到数据同步集群服务器Z上。为了表明业务服务器BC是否可用,设置数据的存活时间,如果业务服务器BC提供的资源及运行情况信息超过设置的存活时间(如:超过15秒没有进行更新)即表示未提供信息的业务服务器BC不可用。
[0066] 所述上下文数据加载模块31用于根据所述粒度信息加载所述报警数据的上下文数据。具体地,所述上下文数据加载模块31包括第二查询单元311、第一加载单元312和第二加载单元313。其中,接收到来自于调度服务器DC的报警数据和粒度信息后,第二查询单元311根据当前的粒度查询业务服务器BC内存中的粒度信息;判断内存中是否有与接收到的所述粒度信息匹配的上下文数据。如果有,则向第一加载单元312发送加载指令,第一加载单元312从内存中加载所述上下文数据。如果业务服务器BC内存中没有与接收到的所述粒度信息匹配的上下文数据,则向第二加载单元313发送加载指令,第二加载单元313从数据库集群DB中获取与接收到的粒度相匹配的上下文数据。本发明中的业务服务器BC为大内存服务器,可以存储大量的报警数据的上下文数据,以此来保障一个粒度的报警数据在一个业务服务器BC上处理。因而避免了采用外置的存储设备存储上下文数据时使外置存储设备成为瓶颈的问题。
[0067] 报警数据处理模块32根据加载所述报警数据的上下文数据处理所述报警数据。其中,所述的报警上下文数据,是指负载到一台业务服务器BC上的多段报警数据。业务服务器BC按照规则可以将所述的多段报警数据判断为一条有意义的报警。例如,当某个设备的CPU使用率大于90%时,由报警前端向本系统发送报警数据,此时为报警的开始,如果再次收到相同报警,可以认为报警一直存在。直到如果收到报警恢复(该数据是在设备CPU使用率小于80%时发出的消息),可以确定所述设备已经恢复正常。从收到第一条报警数据到收到报警恢复这该时段内的多条报警,为一系列报警,经过业务服务器BC的处理,将这几段报警数据合并为一条有意义的报警:包括开始时间、结束时间、采样率等。并根据报警信息对应的触发及消除规则,进行报警的触发或消除。报警数据处理模块32在处理结束后,延时批量同步报警上下文数据到数据库集群DB中,从而减少了数据库集群DB的处理压力。
[0068] 另外,所述业务服务器BC还包括资源监控模块33和粒度变更请求模块34。所述业务服务器BC通过资源监控模块33监测自己的业务资源与当前运行资源是否相匹配,即当前的运行资源是否足够处理当前分配的业务。如果通过资源监控模块33确定当前运行资源紧张,和业务资源不相匹配时,由粒度变更请求模块34向调度服务器DC1发送粒度变更请求,以减小所述业务服务器BC的压力。
[0069] 调度服务器DC1收到所述粒度变更请求后,其粒度路由调整模块24根据业务服务器BC的当前业务资源、基础资源和运行资源,判断进行粒度更改还是粒度拆分。如果需要更改粒度,则更改当前粒度的路由信息,也就是确定由其他业务服务器BC处理该粒度的报警数据;如果是粒度拆分,即根据拆分规则,将该粒度拆分为多个子粒度,拆分后删除原有粒度的相关信息,并为拆分后的子粒度当作新增粒度处理。从而使资源紧张的业务服务器BC承担的粒度报警处理工作由其他业务服务器BC进行处理。
[0070] 在本发明中,还包括数据同步集群服务器Z和数据库集群DB用于系统中集群的管理,包括进程的同步、数据的存储等。处理这层处理关系的服务器连接关系如图1中的虚线所示。调度服务器DC和业务服务器BC分别与数据同步集群服务器Z和数据库集群DB相连接通信,由数据同步集群服务器Z同步集群内服务器各个进程的数据状态。例如,当调度服务器DC创建了一个新粒度时,将该新粒度及其粒度路由记录到数据同步集群服务器Z中。又例如,业务服务器BC向同步数据库Z注册资源信息,并周期性地向同步数据库Z提交运行资源信息和业务资源信息。同步集群服务器Z中存储有粒度数据,如创建的粒度及其路由、粒度与业务服务器的关联关系和粒度规则等。数据库集群DB用于存于存储报警数据的上下文数据。在一个具体实施方式中,所述的数据同步集群服务器Z由基于分布式应用程序的Zookeeper来实现,具体可参考Zookeeper的相关技术来实现。
[0071] 如图4所示,为本发明提供的报警数据处理方法的流程图,具体包括:
[0072] 步骤S1,负载均衡服务器将接入的报警数据负载到调度服务器。其中,负载均衡服务器中配置有负载均衡策略,用于将接入的Http或Https流量负载到系统中的合适的、不同的调度服务器,避免了将流量同时映射到一台调度服务器上而造成调度服务器的负载过大的问题。
[0073] 步骤S2,所述调度服务器按照粒度规则为接收到的报警数据划分粒度并确定粒度路由,将所述报警数据及其粒度信息转发到粒度路由中的业务服务器。其中,为接收到的报警数据划分粒度并转发的步骤具体如图5所示:
[0074] 步骤S21,查询粒度规则。
[0075] 步骤S22,根据所述粒度规则及所述报警数据的原始信息,判断是否可以确定所述报警数据的粒度。如果没有当前的粒度规则中没有与所述报警数据对应的粒度,则在步骤S28,创建新粒度。例如,当前的粒度规则中只有自于北京市和上海市的报警数据的粒度,但是当前收到的报警数据来自于山东省,此时的粒度规则中没有对应山东省的粒度,因而,此时需要创建一个新粒度。如果根据所述粒度规则可以确定所述报警数据的粒度,则在步骤S23确定对应所述报警数据的粒度。例如,根据所述报警数据中的“收车”字段及设备IP可以确定所述粒度为“收车-北京”。其中,所述粒度规则可以存储在调度服务器上,或者存储在同步集群服务器Z中。
[0076] 步骤S24,查询粒度路由信息。调度服务器在处理报警数据的转发的过程中,所以其内存中记录了很多条粒度路由信息。在确定了粒度后,查询其内存中的粒度路由信息,从而来判断是否已有对应的粒度路由。
[0077] 步骤S25,判断是否具有与所述粒度对应的粒度路由,如果具有与所述粒度对应的粒度路由,则转到步骤S26;如果不具有与所述粒度对应的粒度路由,则在步骤S29,根据业务服务器的负载资源计算得到新粒度路由,再执行步骤S27。
[0078] 步骤S26,判断粒度路由中的业务服务器是否可用。具体地判断方法,在一个实施例中,可以由调度服务器DC查看数据同步集群服务器Z中的业务服务器BC的资源数据的更新情况,如果数据同步集群服务器Z中的业务服务器BC的资源数据在存活时间段内没有更新,则认为所述业务服务器BC不可用。在另一个实施例中,数据同步集群服务器Z监控业务服务器的资源数据的更新情况,并维护所有业务服务器BC是否可用的状态。当数据同步集群服务器Z监控到某个业务服务器BC的资源数据在存活时间段内没有更新时,由数据同步集群服务器Z标记所述业务服务器的状态为不可用,如果有更新,则标记可用。调度服务器DC通过查询该状态可以获知当前要查询的业务服务器BC的可用状态。经过上述处理,如果所述业务服务器BC不可用,返回步骤S29,根据业务服务器的负载资源计算得到新的粒度路由;如果所述业务服务器BC可用,则转向步骤S27。
[0079] 步骤S27,将所述报警数据转发到粒度路由信息中的业务服务器BC并结束。
[0080] 其中,步骤S28中的创建新粒度,可以根据创建规则来创建新粒度,其中,所述的创建规则例如,将当前接收到的报警数据的设备IP对应的地域设置为一个粒度。例如,当前的报警数据来自于山东省的报警前端,则报警数据中的IP地址对应的是山东省,此时,将山东省作为一个新的粒度。在创建了一个新粒度后,将其记录到数据同步集群服务器Z中。
[0081] 在步骤S29中,根据业务服务器的负载资源计算得到新粒度路由的步骤如图6所示,具体包括:
[0082] 步骤S291,计算每一个业务服务器的负载分数。其中,具体包括:根据业务服务器BC的基础资源信息计算所述业务服务器的最大处理能力值Max;根据所述业务服务器BC的运行资源信息计算所述业务服务器当前能力空闲比例Percent;和按照公式m=max*percent计算所述业务服务器的最大处理能力值和当前能力空闲比例的乘积,得到所述业务服务器的负载分数m。
[0083] 步骤S292,根据负载分数m的数值大小进行聚类,得到多个聚类值;
[0084] 步骤S293,对所述多个聚类值进行最小负载优先计算,确定多个候选业务服务器;以及
[0085] 步骤S294,根据随机算法,从所述多个候选业务服务器中确定一个业务服务器。
[0086] 从而确定了与所述粒度对应的业务服务器,即得到了粒度路由。
[0087] 在得到了粒度路由后,将其存储到调度服务器的内存中,并同时记录到数据同步集群服务器Z中。
[0088] 步骤S3,所述业务服务器接收到所述报警数据及其粒度信息后,根据所述粒度信息加载所述报警数据的上下文数据,并根据所述上下文数据实时处理所述报警数据。
[0089] 具体地,所述业务服务器首先查询其内存中是否有与所述粒度对应的报警数据的上下文数据,如果有,则从内存中加载所述上下文数据。如果所述内存中没有与接收到的所述粒度信息匹配的上下文数据,从数据库集群DB中加载与接收到的所述粒度信息匹配的上下文数据。同时向数据同步集群服务器Z更新的粒度与业务服务器的关联关系。
[0090] 所述业务服务器在实时处理所述报警数据的过程中,监控其当前运行资源和业务资源是否相匹配,即是否有足够的资源来处理所述的报警数据。当所述业务服务器没有足够的资源来处理其上的报警数据时,需要变更或拆分粒度。具体处理流程如图7所示:
[0091] 步骤S301,所述业务服务器BC向调度服务器DC1发送粒度变更请求。在本发明中,调度服务器组中包括一个第一类调度服务器DC1,用于维护粒度路由和粒度规则。当业务服务器BC的当前运行资源不足以处理业务资源时,向调度服务器DC1发送粒度变更请求。
[0092] 步骤S302,接收到所述粒度变更请求后,所述调度服务器DC1根据所述业务服务器的基础资源数据和运行数据确定变更或拆分所述业务服务器的粒度。
[0093] 步骤S3031,在变更所述业务服务器的粒度时,通过进行负载计算确定一个新的业务服务器。
[0094] 步骤S3032,将所述粒度对应粒度路由中的当前业务服务器变更为新的业务处理器。
[0095] 步骤S3033,将所述粒度对应的报警数据的上下文数据从当前业务服务器同步到所述新的业务服务器。
[0096] 步骤S3041,在拆分所述业务服务器的粒度时,根据拆分规则,将所述粒度拆分为多个子粒度。例如,将省的粒度拆分成多个市的粒度,如前所述,将山东省的粒度拆分由济南市、青岛市、烟台市……等等多个子粒度。
[0097] 步骤S3042,分别为多个子粒度计算得到对应业务服务器,从而为多个子粒度确定对应的子粒度路由。
[0098] 步骤S3043,按照所述子粒度路由,将原来的报警数据到同步到子粒度路由中的业务服务器。
[0099] 步骤S305,修改各服务器中的粒度数据。具体为:在更改粒度时,从当前的业务服务器中删除所述的粒度信息及上下文数据,并修改数据同步集群服务器Z中对应的粒度路由信息、粒度与业务服务器的关联关系。在拆分粒度时,从当前的业务服务器中删除所述的粒度信息(粒度及粒度路由)及上下文数据,将子粒度及其子粒度路由信息记录到数据同步集群服务器Z,记录所述子粒度与业务服务器的关联关系。
[0100] 本发明分别在负载均衡服务器和调度服务器实施负载均衡策略,能够有效地解决原数据中心遇到的资源利用不均问题,减少了原数据中心服务器的开销。
[0101] 本发明采用自适应的粒度划分方式及划分规则,可以有效、灵活地调整及分配业务服务器所处理的报警数据量。
[0102] 本发明采用大内存的业务服务器,有效地解决了海量报警数据处理过程中需要上下文数据及处理结束后需要存储上下文数据时,外置存储设备出现的瓶颈及数据中心压力大的问题。
[0103] 本发明中的各个服务器分工明确,因而扩展性好,各个角色可以进行动态的添加和减少。
[0104] 本发明提供的系统可用性高,无单点故障隐患,保障系统7*24小时运行。
[0105] 上述实施例仅供说明本发明之用,而并非是对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明范围的情况下,还可以做出各种变化和变型,因此,所有等同的技术方案也应属于本发明公开的范畴。