监控平台当前使用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. 转 intValue()的用法

    intValue()是java.lang.Number类的方法,Number是一个抽象类.Java中所有的数值类都继承它. 不单是Integer有intValue方法,Double,Long等都有此方 ...

  2. shell第三篇

    第三篇本文摘自鸟哥的私房菜:http://cn.linux.vbird.org/linux_basic/0105computers.php#program(当年看的时候浮光掠影,现在回头发现,经典就是 ...

  3. MySQL常见SQL语句用法

    标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 表字段类型 TINYINT 微小整数类型,可存储的容量为1字节 INT 整数类型 ...

  4. java Object类是可以接收集合类型的

    废话不多说,上代码: package com.core.test; import java.util.ArrayList; import java.util.HashMap; import java. ...

  5. office2013使用空格符

    空格符:所有的空格都以点表示出来. 作用:挑出空格符后,可以很方便的看到所有的空格,分页符等,使页面更容易调整的工整(在写正规的word文档时,需要这样做). 用法:很简单,根据图片上操作的顺序即可调 ...

  6. [PHP] Phalcon操作示范

    这篇内容将对下列操作进行示范: Insert.Select.Update.Calculation.Transaction.models advanced.dev-tools.cookies [ Ins ...

  7. Docker+Jenkins持续集成环境(5): android构建与apk发布

    项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...

  8. Windows系统安装pip方法

    pip是一款非常方便的python包管理工具,本文主要介绍在windows 10系统下安装pip方法. 1. 下载pip 地址:https://pypi.python.org/pypi/pip#dow ...

  9. JAVA设计模式---模板方法

    1.定义: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. (为了防止子类改变模板方法中的算法,可以将模板方法声明为 ...

  10. 浅谈python的对象的三大特性之封装

    我们家里都有电视机,从开机,浏览节目,换台到关机,我们不需要知道电视机里面的具体细节,只需要在用的时候按下遥控器就可以完成操作,这就是功能的封装. 在用支付宝进行付款的时候,只需要在用的时候把二唯码给 ...