栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

MQ+REDIS+Elasticsearch千万级任务监控解决方案

MQ+REDIS+Elasticsearch千万级任务监控解决方案

        背景介绍:某运营商云化数据中台全国业务生产任务监控,每天数据处理任务达千万级,要求做到任务报错、延迟实时告警,问题解决告警自动闭环关闭,以及亿级日志的快速查询要示。

        本篇文章重点介绍以下几点:

        1、任务日志如何做到实时告警

        2、解决消息时序问题

        3、告警闭环关闭实现方案

        4、上亿级日志秒级查询响应

一 、任务日志如何做到实时告警

        采集RocketMQ实现生产任务的实时传输与消费,全国生产任务并发实时将数据处理任务日志写入MQ,监控端实时消息。

        消息消费并入库Elasticsearch高峰时段TPS高达上千。

        监控系统告警模块完成预警配置,程序实时布控,捕捉到异常日志实时入库并触发告警。

二、如何解决消息时序问题

        针对时间较短的处理任务,开始和结束消息时间比较接近,会出现时序问题,即结束消息早于开始消息被消费掉,既而造成监控任务不完整,告警不准确问题,特别是开始消息找不到结束消息被一直认定为执行中。

        redis缓存解决方案,结束消息入库与开始消息合并,未找到开始消息即放入redis缓存,开始消息到达后并合入库后释放缓存数据。

        使用二级缓存方案,进行缓存设计。一级缓存为本地缓存,二级缓存为分布式缓存,对es进行优化,提高写入和检索性能,批量写入,进行几百一次批量写入,多线程写入。

三、告警闭环关闭实现方案

        通过自动识别错误任务恢复后新消息,对之前产生的告警进行关闭,实现告警清零的需求。

        每一个告警在入库时根据任务ID、时间批次等关键业务要素组合成唯一键值进行入库,之后所有消息消费时都会做一次业务组合键值比对,比对成功更新告警处理状态。

        利用Elasticsearch高效存储和毫秒级响应特性,以业务组合键值创建索引列,即使同一业务执行多次,通过键值获取+内存排序方式可以快速完成关闭处理。

四、上亿级日志秒级查询响应

        ES 使用lucene 的"term index -> term dictionary -> postings list" 的倒排索引结构,能够在数量巨大的 terms 中快速定位到某一个 term,同时节约对内存的使用和减少磁盘 io 的读取,然后,通过 FST 压缩放入内存,进一步提高了搜索效率。

        在联合查询时,在有 filter cache 的情况下,直接利用位图的原生特性快速求交并集得到联合查询结果,利用 skip list 对多个 postings list 求交并集,跳过遍历成本,节省了部分数据的解压缩 cpu 成本。

        增加segments的刷新时间,关闭不需要字段的doc values,使用keyword替代一些long或者int之类,关闭不需要查询字段的_source功能,最终实现资源占用比较少的情况下,还能做到亿级日志统计查询秒级响应。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761636.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号