一种超大规模集群告警处理方法转让专利

申请号 : CN201110069524.2

文献号 : CN102135907B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 史登连赵欢王清

申请人 : 曙光信息产业股份有限公司

摘要 :

本发明提供了一种超大规模集群告警处理方法,包括信息缓冲区,多线程缓冲区,待处理信息缓冲区;处理过程包括告警信息处理流程,恢复信息处理流程和事件信息处理流程;本发明有效解决了超大规模集群告警信息处理的性能问题:可以处理100条/秒的告警信息,很好的解决了在处理超大规模集群(大于2000台)告警信息时遇到的各种性能瓶颈问题。

权利要求 :

1.一种超大规模集群告警处理方法,其特征在于:所述处理方法包括:告警信息处理,恢复信息处理和事件信息处理;

其中,所述告警信息处理为:

A、从信息缓冲区中获取一条信息;

B、将此信息插入待处理信息缓冲区;

C、检查信息类型,如果是告警信息则使用告警信息处理对象进行处理;

D、检查待处理信息缓冲区是否存在需要此信息延迟处理的信息,如果存在则延迟处理此信息;如没有则进行下一步;

E、检查多线程临时缓冲区中是否有重复告警信息,如果无则将告警信息插入多线程临时缓冲区;如果有则延迟处理此信息;

F、检查数据库活动告警信息视图,是否有重复信息;

G、有重复信息则使用数据库更新操作,将表中的重复告警次数字段加1,更新告警时间;无重复信息则使用数据库插入操作;

H、从多线程临时缓冲区中删除信息;

I、从待处理信息缓冲区删除此信息;

J、线程重复步骤A,同时调用其他处理程序;

所述恢复信息处理流程为:

A1、从信息缓冲区中获取一条信息;

B1、将此信息插入待处理信息缓冲区;

C1、检查信息类型,如果是恢复信息则使用恢复信息处理对象进行处理;

D1、检查待处理信息缓冲区是否存在需要此信息延迟处理的信息,如果存在则延迟处理此信息;如没有则进行下一步;

E1、检查多线程临时缓冲区是否有重复的信息,如果无则将此信息插入多线程临时缓冲区;如果有则延迟处理此信息;

F1、检查数据库活动告警信息视图,是否有此恢复信息对应的告警信息;

G1、如果有则将此信息更新入数据库;如果没有,检查恢复信息的是否可抛弃标记位;

如果标记位为fasle,则将此信息延迟处理,可抛弃标记位设置为true;如果为true则抛弃此信息;

H1、从多线程临时缓冲区中删除信息;

I1、从待处理信息缓冲区删除此信息;

J1、线程重复步骤A1,同时调用其他处理程序;

所述事件信息处理为:

A2、从信息缓冲区中获取一条信息;

B2、将此信息插入待处理信息缓冲区;

C2、检查信息类型,如果是事件信息则使用事件信息处理对象进行处理;

D2、直接将事件信息存储入数据库。

2.如权利要求1所述一种超大规模集群告警处理方法,其特征在于:所述信息缓冲区存储大型机ID和预处理阻塞队列的引用。

3.如权利要求1所述一种超大规模集群告警处理方法,其特征在于:多线程缓冲区由线程池中线程进行插入和移除操作。

4.如权利要求1所述一种超大规模集群告警处理方法,其特征在于:所述待处理信息缓冲区由多个线程进行插入和移除操作。

5.如权利要求1所述一种超大规模集群告警处理方法,其特征在于:所述信息缓冲区含有两条相同的告警信息但彼此对应的时间不同,首先检查待处理信息缓冲区中是否有比此信息更早的信息,如果有,则此信息延迟处理。

6.如权利要求1所述一种超大规模集群告警处理方法,其特征在于:所述信息缓冲区含有一条告警信息和此信息对应的告警恢复信息时,两个处理线程首先检查待处理信息缓冲区中是否有比此信息更早的信息,如果有,则此信息延迟处理。

7.如权利要求1所述一种超大规模集群告警处理方法,其特征在于:可抛弃标志位初始默认值为false,如果标记位为ture表明已经进行过一次等待操作,则丢弃此信息。

说明书 :

一种超大规模集群告警处理方法

技术领域

[0001] 本发明涉及集群监控领域,具体涉及一种超大规模集群告警处理方法。

背景技术

[0002] 在高性能集群监控系统中,会产生大量的集群性能告警数据,另一方面管理人员需要及时掌握集群的情况,实时的对集群进行监控,将设备产生的告警数据以合理的处理方式通知给用户或者管理员,及时解决问题。传统方式,处理超大规模集群(大于2000台)告警信息会遇到各种性能瓶颈问题,该技术解决了超大规模集群告警信息处理的性能问题:大规模数据校验、存储、更新、查询的性能问题。
[0003] 现有技术并没有充分的使用并行,比如没有使用ConcurrentHashMap这种并行粒度更小的数据结构;信息的接收和存储并不是同时并行进行。

发明内容

[0004] 为解决以上问题,本发明涉及了三个并行缓冲区,有效提高了处理性能问题。
[0005] 一种超大规模集群告警处理方法,所述处理方法包括:
[0006] 告警信息处理,恢复信息处理和事件信息处理;
[0007] 其中,所述告警信息处理为:
[0008] A、从信息缓冲区中获取一条信息;
[0009] B、将此信息插入待处理信息缓冲区;
[0010] C、检查信息类型,如果是告警信息则使用告警信息处理对象进行处理;
[0011] D、检查待处理信息缓冲区是否存在需要此信息延迟处理的信息,如果存在则延迟处理此信息;如没有则进行下一步;
[0012] E、检查多线程临时缓冲区中是否有重复告警信息,如果无则将告警信息插入多线程临时缓冲区;如果有则延迟处理此信息;
[0013] F、检查数据库活动告警信息视图,是否有重复信息;
[0014] G、有重复信息则使用数据库更新操作,将表中的重复告警次数字段加1,更新告警时间;无重复信息则使用数据库插入操作;
[0015] H、从多线程临时缓冲区中删除信息;
[0016] I、从待处理信息缓冲区删除此信息;
[0017] J、线程重复步骤A,同时调用其他处理程序;
[0018] 所述恢复信息处理流程为:
[0019] A1、从信息缓冲区中获取一条信息;
[0020] B1、将此信息插入待处理信息缓冲区;
[0021] C1、检查信息类型,如果是恢复信息则使用恢复信息处理对象进行处理;
[0022] D1、检查待处理信息缓冲区是否存在需要此信息延迟处理的信息,如果存在则延迟处理此信息;如没有则进行下一步;
[0023] E1、检查多线程临时缓冲区是否有重复的信息,如果无则将此信息插入多线程临时缓冲区;如果有则延迟处理此信息;
[0024] F1、检查数据库活动告警信息视图,是否有此恢复信息对应的告警信息;
[0025] G1、如果有则将此信息更新入数据库;如果没有,检查恢复信息的是否可抛弃标记位;如果标记位为fasle,则将此信息延迟处理,可抛弃标记位设置为true;如果为true则抛弃此信息;
[0026] H1、从多线程临时缓冲区中删除信息;
[0027] I1、从待处理信息缓冲区删除此信息;
[0028] J1、线程重复步骤A1,同时调用其他处理程序;
[0029] 所述事件信息处理为:
[0030] A2、从信息缓冲区中获取一条信息;
[0031] B2、将此信息插入待处理信息缓冲区;
[0032] C2、检查信息类型,如果是事件信息则使用事件信息处理对象进行处理;
[0033] D2、直接将事件信息存储入数据库。
[0034] 优选的,所述信息缓冲区存储大型机ID和预处理阻塞队列的引用。
[0035] 优选的,所述多线程缓冲区由线程池中线程进行插入和移除操作。
[0036] 优选的,所述待处理信息缓冲区由多个线程进行插入和移除操作。
[0037] 优选的,所述信息缓冲区含有时间不同的两条相同的告警信息,首先检查待处理缓冲区中是否有比此信息更早的信息,如果有,则此信息延迟处理。
[0038] 优选的,所述信息缓冲区含有一条告警信息和此信息对应的告警恢复信息时,两个处理线程首先检查待处理缓冲区中是否有比此信息更早的信息,如果有,则此信息延迟处理。
[0039] 优选的,所述可抛弃标志位初始默认值为false,如果标记位为ture表明已经进行过一次等待操作,则丢弃此信息。
[0040] 本发明有效解决了超大规模集群告警信息处理的性能问题:可以处理100条/秒的告警信息,很好的解决了在处理超大规模集群(大于2000台)告警信息时遇到的各种性能瓶颈问题。

附图说明

[0041] 图1是本发明处理流程图

具体实施方式

[0042] 本发明设计了三个并行缓冲区:信息缓冲区、多线程缓冲区、待处理信息缓冲区。每个缓冲区的详细情况如下:
[0043] 信息缓冲区(并行)
[0044] ConcurrentHashMap>hmInfomationBuffer
[0045] Map的key存储大型机ID,value部分存储预处理阻塞队列的引用[0046] 1、信息按大型机进行分类;
[0047] 2、每个大型机内部进行告警产生时、等级、告警恢复优先顺序排列;
[0048] 3、当前数据结构由webservice接收信息进行插入,一个key对应多个线程的插入,一个线程只处理一个key的插入,在插入后线程消失。
[0049] 4、在读取时,每个key和一个线程一一对应,对于每个key为单线程读取。
[0050] 5、优先级阻塞队列可以进行排序,优先级根据:时间>等级>信息类型(告警信息,恢复信息)进行排序。取信息时进行阻塞获取。
[0051] 6、ConcurrentHashMap在原子操作中是线程安全的。ConcurrentHashMap在并发时处理效率较高,此数据结构是进行分段存储读取,其锁的粒度比较细,能够更好的解决效率问题。
[0052] 多线程缓冲区(并行)
[0053] ConcurrentHashMapmapMultiThreadsBufferMap:key =信息,Value=线程名
[0054] 此缓冲区需要进行多线程同步;
[0055] 1、当前数据结构由多个线程池中多个线程进行插入操作,一个key对应一个线程池中的多个线程的插入,一个线程只处理一个key的插入。
[0056] 2、在移除时,一个key对应一个线程池中的多个线程的移除操作,一个线程只处理一个key的对应的ConcurrentHashMap中的信息移除操作。
[0057] 待处理信息缓冲区(并行)
[0058] ConcurrentHashMapmapInfoToDealBufferMap:key =id(产生的随机数),Value=信息
[0059] 1、当前数据结构由多个线程进行插入操作,一个key对应一个线程的插入,一个线程只处理一个key的插入,即对于每一个key插入操作是单线程操作。
[0060] 2、在移除时,一个key对应一个线程池中的多个线程的移除操作,一个线程只处理一个key的对应的ConcurrentHashMap中的信息移除操作。告警信息处理流程(每个大型机内部多线程并行)
[0061] 1、从信息缓冲区中获取一条信息;
[0062] 2、将此信息插入待处理信息缓冲区;
[0063] 3、检查信息类型,如果是告警信息则使用告警信息处理对象进行处理;
[0064] 4、检查待处理信息缓冲区是否存在需要此信息延迟处理的信息,如果存在则延迟处理此信息;如没有则进行下一步;
[0065] 5、检查多线程临时缓冲区中是否有重复告警信息,如果无则将告警信息插入多线程临时缓冲区;如果有则延迟处理此信息;
[0066] 6、检查数据库活动告警信息视图,是否有重复信息;
[0067] 7、有重复信息则使用数据库更新操作,将表中的重复告警次数字段加1,更新告警时间;无重复信息则使用数据库插入操作;
[0068] 8、从多线程临时缓冲区中删除信息;
[0069] 9、从待处理信息缓冲区删除此信息;
[0070] 10、线程重复步骤1,同时调用其他处理程序。
[0071] 恢复信息处理流程(每个大型机内部多线程并行)
[0072] 1、从信息缓冲区中获取一条信息;
[0073] 2、将此信息插入待处理信息缓冲区;
[0074] 3、检查信息类型,如果是恢复信息则使用恢复信息处理对象进行处理;
[0075] 4、检查待处理信息缓冲区是否存在需要此信息延迟处理的信息,如果存在则延迟处理此信息;如没有则进行下一步;
[0076] 5、检查多线程临时缓冲区是否有重复的信息,如果无则将此信息插入多线程临时缓冲区;如果有则延迟处理此信息;
[0077] 6、检查数据库活动告警信息视图,是否有此恢复信息对应的告警信息;
[0078] 7、如果有则将此信息更新入数据库;如果没有,检查恢复信息的是否可抛弃标记为(此标记为初始默认值为false,如果标记位为ture表明已经进行过一次等待操作,则丢弃此信息)。如果标记位为fasle,则将此信息延迟处理,可抛弃标记位设置为true;如果为true则抛弃此信息。
[0079] 8、从多线程临时缓冲区中删除信息;
[0080] 9、从待处理信息缓冲区删除此信息;
[0081] 10、线程重复步骤1,同时调用其他处理程序。
[0082] 事件信息处理流程
[0083] 1、从信息缓冲区中获取一条信息;
[0084] 2、将此信息插入待处理信息缓冲区;
[0085] 3、检查信息类型,如果是事件信息则使用事件信息处理对象进行处理;
[0086] 4、直接将事件信息存储入数据库
[0087] 延迟处理场景分析
[0088] 延迟处理基于一下几种场景:
[0089] 场景一:信息缓冲区中有两条相同的告警信息,区别只是时间不同。
[0090] 线程池同时获取两条信息,由两个线程开始执行。如果直接进行执行,可能导致:
[0091] 1、两条信息都进行存储操作,导致其中一条信息存储失败。
[0092] 2、两条信息中时间较晚的先行存入数据库,另外一条信息进行更新操作,此时第一次告警时间要比第二次告警时间晚,逻辑异常。
[0093] 因此,两个线程都需要首先检查待处理缓冲区中有没有比此信息更早的信息,如果有则此信息需要延迟处理。
[0094] 场景二:信息缓冲区中有一条告警信息和此信息对应的告警恢复信息。
[0095] 线程池同时获取两条信息,由两个线程开始执行。如果直接进行执行,可能导致:
[0096] 恢复信息被丢弃,告警得不到恢复。
[0097] 因此,两个线程都需要首先检查待处理缓冲区中有没有比此信息更早的信息,如果有则此信息需要延迟处理。