监控平台当前使用storm对日志进行流式分析计算,用于支撑监控数据清洗,后来逐渐在storm上搭建起数据在线关联,数据离线关联,明细数据清洗,日志搜索等功能,本章节对各功能进行简要概述。

对storm不熟悉的话,建议先阅读相关文献:http://ifeve.com/getting-started-with-stom-index/

1. 正常业务数据清洗

该功能是mng系统最基本功能,也是最早搭建起来的,其目的是从日志中清洗出具有业务监控含义的数据,当前监控平台绝大多数数据均是通过该功能进行数据清洗,该功能的整体流程图如下:

数据清洗流程为:从源节点采集日志数据进入到mng-storm系统,数据流向split节点并在split节点完成日志记录的分割,随后数据进入count节点进行业务数据的统计和计算,计算完成后,在sum节点进行数据的汇总和落地到hbase。后续章节会详细介绍各节点的功能及实现。

2. 在线数据关联

该功能的出现是因为在实际业务监控中,某些日志由于业务系统的限制,无法打印完整的日志信息,如当面付SDK系统只有在请求阶段有完整的日志打印出来,而创建和支付阶段由于是走监听消息对监听内容做打印而无法打印出阶段信息,推动业务系统进行改造代价较大,由于各阶段都有相同的交易号信息,因此可以通过交易号进行信息关联,补全日志的创建,支付阶段。基于此,mng-storm系统实现了一套在线关联方案。

数据清洗过程复用split,count,sum节点功能,但在split节点和count节点中间增加一补全节点,该节点缓存一定时间的日志数据,并根据交易号和时间信息进行日志补全,由于补全信息来源于日志本身,因此又叫在线关联。

3. 明细数据

该功能较为简单,将日志信息进行简单的过滤后存储下来,提供给mng系统读取,通过数据存储落地的方式打破两个系统之间之间的隔阂。该功能的出现是因为早期mng-storm系统在未进行水平拆分和垂直拆分之前,功能相对薄弱,当需要进行数据离线关联时,会有大量读取hbase操作,会导致数据处理延时甚至积压。因此为实现较为耗时的数据关联功能,先通过storm系统将日志明细落地,由mng负责读取相关明细数据,并通过时间片调度任务的方式将数据分散到mng各机器上处理,减轻单机节点压力,通过该种方案监控平台实现了余额宝用户属性分析,2014年双十二线下交易及用户分析功能。

该功能在storm上较为简单,split处理完数据后,发送到detail节点,detail节点进行进行数据的处理及落地。在明细数据处理详细介绍中会介绍平台如何结合两个系统共同实现复杂关联的实现,在早期storm功能没那么强大的时候,该方案极其巧妙的解决了离线关联这一高难度问题。

4. 日志分析

日志分析功能同样是将日志数据落地,但该功能主要是将日志原始数据落地,同时根据交易号和pid等信息作为索引,通过交易号和pid在前端页面输入即能查到相关的原始日志信息,便于相关人员排查问题。

功能显而易见,在logAnalyse节点进行索引处理及原始日志落地。

5. 离线关联

明细数据功能的实现虽然完美的解决了离线数据关联的问题,但也有其缺点:数据处理链路过长;系统延时较高;tt数据源有延时的时候,无法自动恢复数据。随着mng系统垂直拆分和水平拆分功能后,当前系统已经具备在storm系统上实现离线数据关联的能力。

系统在split节点和count节点之前添加一个节点用于离线关联,在offline节点实现数据与离线数据的关联。

总结

本节概括介绍当前mng系统所涵盖的基本功能,及其链路实现,后续会陆续介绍各部分功能的实现以及storm应用中的一些通用性的问题。

Storm业务功能的更多相关文章

  1. storm的功能、三大应用

    storm的功能 Storm 有许多应用领域:实时分析.在线机器学习.持续计算.分布式 RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务). ETL(Extraction-Transfo ...

  2. Storm概念学习系列之storm的功能和三大应用

    不多说,直接上干货! storm的功能 Storm 有许多应用领域:实时分析.在线机器学习.持续计算.分布式 RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务). ETL(Extract ...

  3. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  4. OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  5. .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  6. 基于AOP注解实现业务功能的动态配置

    一.导入jar包 <dependency><!-- 4.引入AOP--> <groupId>org.springframework.boot</groupId ...

  7. SpringBoot整合MyBatis-Plus实现快速业务功能开发

    概览:使用MybatisPlus和它的代码生成整合SpringBoot可以实现快速的业务功能开发,具体步骤如下 一.添加依赖 <dependency> <groupId>org ...

  8. 架构探险——第二章(为web应用添加业务功能)

    第二章不使用框架完成了自己的Web应用. 重点: 服务层的完善优化过程,思路 在看这一段的时候引起了无数次的共鸣.相信大家在开始接触Java Web的时候,都做过类似的封装和优化. 第一版 在Serv ...

  9. JFinal极速开发实战-业务功能开发-通用表单验证器

    提交表单数据时,需要经过前端的验证才能提交到后台,而后台的验证器再做一道数据的校验,成功之后才能进入action进行业务数据的处理. 在表单数据的验证中,数据类型的验证还是比较固定的.首先是对录入数据 ...

随机推荐

  1. 《struts2》:指定多个配置文件和默认Action

    转载:http://m.blog.csdn.net/article/details?id=51212968

  2. OpenFlow交换机的实现总结

    先粗略介绍,后续会逐渐完善. OpenFlow交换机通过使用OpenFlow协议的安全通道与控制器进行通信.其具体实现如下示意图所示: 对于一个新到达的数据流,交换机通常的做法是,把该数据包发送给控制 ...

  3. Gitlab权限管理-issue管理[六]

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 设置好密码后登录进入管理目录 创建组 设置组名和权限 创建用户 已有四个用户了 给p ...

  4. Android开发模板代码(二)——为ImageView设置图片,退出后能保存ImageView的状态

    接着之前的那个从图库选择图片,设置到ImageView中去,但是,我发现了一个问题,就是再次进入的时候ImageView是恢复到了默认状态,搜索了资料许久之后,终于是发现了解决方法,使用SharePr ...

  5. 07_SSH免登录配置

    占位占位占位占位占位占位占位占位

  6. HBase 数据库检索性能优化策略--转

    https://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html HBase 数据表介绍 HBase 数据库是一个基于分布式的.面向列的 ...

  7. 51NOD 1222 最小公倍数计数 [莫比乌斯反演 杜教筛]

    1222 最小公倍数计数 题意:求有多少数对\((a,b):a<b\)满足\(lcm(a,b) \in [1, n]\) \(n \le 10^{11}\) 卡内存! 枚举\(gcd, \fra ...

  8. 闭包和es6实现循环绑定li输出固定索引值

    首先我们需要一个html结构 <div > <ul> <li>a</li> <li>a</li> <li>a< ...

  9. Azure Automation (6) 执行Azure SQL Job

    <Windows Azure Platform 系列文章目录> 因为China Azure SQL Database目前还没有SQL Job的功能,如果要异步执行SQL 存储过程,可以使用 ...

  10. 关于一些php规范

    <?php /** * 符合psr-1,2的编程实例 * * @author GreenForestQuan */ namespace Standard; // 顶部命名空间 // 空一行 us ...