【技术实现步骤摘要】
一种支持多级缓存高并发的实时告警处理方法
[0001]本专利技术涉及一种支持多级缓存高并发的实时告警处理方法,属于电网实时数据处理
技术介绍
[0002]目前配电云主站面临大量设备与终端接入,设备上下线、遥信、遥测等实时数据的处理面临重大考验,在采用Spark Streaming、Flink等流式处理技术后,性能得到了进一步提升。
[0003]然而当配电云主站集成告警处理后,性能明显有所下降,主要原因在于告警数据的原子性,即针对每条数据都需要从数据库或分布式缓存中查询对应的模型进行组装,而Spark Streaming/Flink等流处理是分布式计算,原生不支持大量数据的缓存与共享,导致流处理耗费大量时间拉取模型数据,极大的降低了数据处理的性能。
[0004]因此,如何提高配电云主站告警处理的性能,是本领域技术人员急需要解决的技术问题。
技术实现思路
[0005]目的:为了克服现有技术中存在的配电网中流计算处理告警数据的性能瓶颈问题,本专利技术提供一种支持多级缓存高并发的实时告警处理 ...
【技术保护点】
【技术特征摘要】
1.一种支持多级缓存高并发的实时告警处理方法,其特征在于:包括如下步骤:步骤1:从数据库查询告警定义元数据,将告警定义元数据初始化到多级缓存中;步骤2:监控Redis中告警定义元数据变化Topic,消费告警定义元数据变化Topic会话中的告警定义元数据变化消息;步骤3:解析告警定义元数据变化消息,更新多级缓存中的告警定义元数据;步骤4:监控Kafka中遥信事件变化Topic,消费遥信事件变化Topic中一次设备的遥信变化消息;步骤5:提取遥信变化消息中的KeyId属性,根据KeyId属性从多级缓存中获取设备的模型信息;步骤6:当多级缓存中不存在当前变化消息对应的设备的模型信息时,再根据KeyId属性从数据库中查询当前设备的模型信息;步骤7:将从数据库中查询的设备的模型信息缓存到多级缓存中;步骤8:结合告警接口规范,将遥信变化消息与设备的模型信息组装成告警消息。2.根据权利要求1所述的一种支持多级缓存高并发的实时告警处理方法,其特征在于:所述步骤1中的告警定义元数据是指在配电云主站系统中用来标识告警类型和告警状态,告警类型分为告警父类型与告警子类型,在设置告警类型时,当子类型存在则取子类型,子类型不存在取父类型;告警父类型是系统内置类型,不支持自定义,存储在告警类型定义表中;告警子类型支持自定义,存储在告警子类型定义表中。3.根据权利要求1所述的一种支持多级缓存高并发的实时告警处理方法,其特征在于:所述步骤1中的多级缓存包括:一级缓存,二级缓存;一级缓存采用Caffeine,二级缓存采用Redis。4.根据权利要求3所述的一种支持多级缓存高并发的实时告警处理方法,其特征在于:所述一级缓存包括:静态区域、动态区域、实时区域;其中,静态区域中缓存的模型属性信息数据,该区域数据不淘汰,不过期,在项目初始化阶段被载入,运行期间不再发生变化;动态区域中缓存的是告警定义元数据,该区域数据不淘汰,不过期,在项目初始化阶段被载入,运行期间通过对Redis监听得到的告警定义元数据变化消息而动态更新的本地缓存数据;实时区域中缓存的数据生命周期较短,有淘汰过期策略,存储一次设备的模型信息。5.根据权利要求1所述的一种支持多级缓存高并发的实时告警处理方法,其特征在于:所述步骤1中的将告警定义元数据初始化到多级缓存中,包括:在项目启动阶段查询告警父类型定义表,以事件类型为Key,告警父类型为Value存储在多级缓存中;查询告警子类型定义表,以事件类型@表号@域号@遥信值为Key,告警子类型为Value存储在多级缓存。6.根据权利要求1所述的一种支持多级缓存高并发的实时告警处理方法,其特征在于:所述Redis作为消息中间件,支持基于频道的发布/订阅和基于模式的订阅/发布,在分布式多实例运行的场景下,使所有实例都能消费到告警定义元数据变化消息。7.根据权利要求3所述的一种支持多级缓存高并发的实时告警处理方法,其特征在于:所述步骤3包括:
当在告警定义页面操作告警定义元数据时,数据持久化到数据库,同时异步修改二级缓存中的告警定义元数据,并向二级缓存消息队列中发送告警定义元数据变化消息;当Redis监听到二级缓存消息队列中告警定义元数据变化消息后,删除或更新当前实例中一级缓存里的告警定义元数据。8.根据权利要求1所述的一种支持多级缓存高并发的实时告警...
【专利技术属性】
技术研发人员:胡振洲,周福,陶定元,张艳,何鸣一,吕非,宗伟康,陈凯旋,王立旭,马德超,王晓超,侯继鑫,赵京虎,张名扬,
申请(专利权)人:国电南瑞南京控制系统有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。