首页 > 代码库 > Storm项目:流数据监控1《设计文档…

Storm项目:流数据监控1《设计文档…

该文档为实实在在的原创文档,转载请注明作者及出处。

 

类型

详细

备注

该文档为原创模拟项目:流数据监控<1>文档《流数据监控设计文档》,相继会给出流数据监控<2>文档《流数据监控代码解析》及其他文档

该部分有源码(熬夜写出来的哦)

CSDN中相应项目CODE链接:戳这里

 

 

相关描述

有任何其他想法,可以邮件874450476@qq.com

文档及相关资料下载请到个人360云盘http://yunpan.cn/QGf2GDaRFpcDt及百度文库、新浪爱问搜索

部分文档涉及到源码,有需要的博客留言

欢迎加入storm-分布式-IT技术交流群(191321336,群中有详细的资料),一起讨论技术,一起分享代码,一起分享设计。

 



1 流数据监控设计概述

 

1.1 概述前言

 

之前跟大家说要给大家写一些storm实时处理的代码,本来打算周末写的,但周末去爬香山了,所以…迟了几天(这些算是废话)。

网上有人贴出的关于GPS实时处理的代码,个人感觉其实时处理只是在速度这一属性上进行上限处理有些简单了,所以想自己设计个项目,所以有了“流数据监控”这个模拟项目。

目前这个模拟项目比较简单(高手眼中),但总体框架有了,我会一步一步晚上,慢慢会补充完整。

 

1.2 设计大体概述

 

1.2.1 数据流产生:Spout

 

数据流的产生目前使用的比较多的是:log文件读取、从mysql(或者是相关db)中获取、从消息中间件(如metaq)中获取及使用socket从网络中获取。

补充:

在该项目中,由于我的metaq还没搭好,所以就直接采用读取log的方式作为源数据,往后会给出metaq作为数据源的接口及mysql作为数据源的接口等。

1.2.2 处理数据:HandleBolt

这里的HandleBolt是宽泛的概念,指对数据进行处理的相关Bolt,目前比较常见的处理方式是数据过滤、数据添加、部分数据统计、数据监控等等。这些都是比较常见的数据实时处理方式。

补充:

该项目中数据处理部分使用数据监控处理,及对数据流进行条件过滤,将部分符合条件的数据筛选出来做进一步处理,达到条件数据监控的目的。目前该部分支持多种条件判断方式组合,多个字段组合判断及多种逻辑判断方式。往后会进一步晚上。

1.2.3 数据持久化:LastingBolt

LastingBolt泛指数据在处理之后进行持久化操作的接口,常见的持久化操作接口是:直接打印(这个貌似不算)、写入file中、写入mysql(及其他db)中、写入消息中间件(metaq)供其他业务调用、使用Socket写入网络端口中等等。

补充:

该项目中暂时设计两个数据持久化Bolt,一个是直接打印出来(比较直观),二是存入mysql中。其他方式接口会慢慢的给出。

 

2 数据监控设计框架

 

2.1 数据监控设计拓扑

 

 



图2.1 数据监控设计拓扑

数据监控设计拓扑说明:

ReadLogSpout:

该部分spout从domain.log(稍后给出log说明)读取数据,每次读取一行记录,该数据为域名出售log,读取数据后交给MonitorBolt进行处理。

MonitorBolt:

该部分Bolt对数据进行解析,读取配置文件MonitorBolt.xml中的逻辑判断及相关过滤规则等,进行数据过滤,将符合条件的数据发射到下一级(稍后有Bolt分析)。

MysqlBolt:

在MonitorBolt处理完数据之后将数据存入mysql的库表中,数据库相关配置从配置文件MysqlBolt.xml中读取。

PrintBolt:

将结果直接打印出来。

 

2.2 数据流监控环境拓扑

 

 

图2.2 网络环境拓扑

拓扑说明:

该项目只搭建三个storm节点一个为Nimbus节点,两个supervisor节点,其中在Nimbus节点中又安装有mysql。

 

3 数据监控详细设计

 

3.1 源数据说明

 

目前源数据从domain.log中读取,该log为人工构造,模拟域名拍卖的log,其中有五个字段,分别为domain(域名)、value(售价)、time(申请年份)、validity(有效期)、seller(卖家)。详细如下:



图3.1 源数据说明

一行数据为一条记录,每条记录有5个属性。

 

3.2 数据监控设计

 

从Monitor的配置文件中说明数据监控的设计:

 



图3.2 MonitorBolt.xml截图

参数说明:

MatchLogic:条件间的逻辑关系,用于如下几个条件间的逻辑关系指明,其有“AND”及“OR”两种逻辑关系设置。

MatchType:判断类型列表,该列表指明了某个字段用何种匹配算法进行判断,regular为正则匹配、range为范围匹配、routine0为常规模糊匹配、routine1为常规完全匹配。

MatchField:匹配字段列表,指明对哪几个字段进行判断。

FieldValue:对应的字段值。

如上配置说明:对字段1/2/5分别进行正则、范围及常规模糊匹配,字段1满足正则匹配.*google.*,字段2满足从200到2001,字段5满足模糊匹配ina,只有三个条件同时满足“AND”,该数据才会发射到下一级。

 

3.3 数据Mysql处理

从MysqlBolt.xml中进行说明:



 

图3.3 MyslqBolt.xml截图

Myslq数据存储处理指明myslq的host,指明database及from,使用username及password将数据存储已经创建好的mysql表中。

 

3.4 源码简介

 

 

图3.4 源码树

源码简单说明:Storm包中为总体运行的Topology,Storm.base目前只有myslq预处理的一个类,storm.bolt为bolt处理类,包括monitorbolt及printbolt,storm.spout包中为spout源数据接口,storm.source为构造源数据的一个类(这个可以忽略),storm.xml为配置文件读取类,domain.log为源数据,MonitorBolt.xml及MyslqBolt.xml分别为配置文件。

 

4 文档说明

该文档是数据流监控的总体设计文档,详细的代码解析将会继续给出。该设计附有代码,需要的请到博客中留下邮箱,我会发给你。

 

 

 

 

 

 

 

 

 

 

 

 

Storm项目:流数据监控1《设计文档…