[关闭]
@student2018 2018-03-07T05:53:31.000000Z 字数 2588 阅读 563

新HCE详细设计

设计文档


背景

概述

新HCE愿景是设计成为一个集中的数据处理中间件,接收数据,并根据配置的业务规则进行路由,可直接根据配置数据库信息进入数据库,也可以进入规则引擎处理后进入数据库。
后期会添加通用的数据存取功能。

开发工具主要技术

功能设计:

流程图

流程图

模型设计

数据规则
用途:此表用于存储数据加工的规则,可用于派生字段。
例如巡检数据,如何判断定是否通过标准,可在这里编写。

这些规则中的rule_esql会在程序中加载到规则引擎

字段名称 字段类型 字段描述
规则ID 字符串 整型 自增
规则类型 字符串 巡检 合规 配置管理 其他
产品名称 字符串 此规则应用于哪些产品
属性名称 字符串 产品的属性
规则名称中文 字符串 用于输出展示,方便人阅读
规则名称 字符串 规则名称 用于匹配规则
规则内容 字符串 Esql内容
规则描述 字符串 字符串描述规则的用途
规则状态 整型 是否启用此规则过滤数据

mysql建表语句:

  1. create table t_data_rules(
  2. rule_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3. rule_type varchar(50),
  4. product varchar(50),
  5. property varchar(50),
  6. rule_name varchar(50),
  7. rule_name_cn varchar(100),
  8. rule_esql varchar(4000),
  9. rule_desc varchar(4000),
  10. sts int
  11. )

路由规则


  1. 归类这条数据是属于哪个业务的(OMDB,巡检)
  2. 这条属性的数据需要被哪些规则处理(每一条规则都会有单独的输出)
  3. 规则处理完后送到哪里去[表名](分析配置管理与巡检与其他可能数据模型)
  4. 记录事件处理的方式,是直接进入数据库还是通过规则引擎处理或是其他方式

     这个第一条属于哪个业务的如何使用?

字段名称 字段类型 字段描述
规则ID 整型 自增 主键
产品名称 字符串 用于和输入的数据关联
属性名称 字符串 用于和输入的数据关联
属性类别 字符串 用于和输入的数据关联
数据规则ID 字符串 逗号分隔,数据规则列表
存储类型 字符串 MYSQL,new4j
存储目标 字符串 MYSQL:表名, new4j?
处理方式 字符串 1.进入规则引擎 2.不修改直接进db 3.直接进db,支持动态添加列(未实现)
规则状态 整型 是否启用规则

mysql建表语句:

  1. create table t_meta_rules(
  2. meta_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  3. product varchar(50),
  4. property varchar(50),
  5. property_type varchar(50),
  6. rule_ids varchar(2000),
  7. store_type varchar(100),
  8. store_target varchar(4000),
  9. handle_type int ,
  10. sts int
  11. )

详细设计

路由规则实现

新写一个用于处理路由规则的RouteRuleActor
数据输入: workerActor处理完的数据,格式为Map[String,AnyRef]
数据输出: 把数据转发给规则引擎或DBActor
处理逻辑:
  使用一个Map来存储路由信息,
过来的数据,取其产品名称与产品属性,在map中找到对应的key,如果不存在,则忽略,并记录异常。
如果存在,则根据处理方式进行处理,如果是直接送到db,则直接给mysqlDBActor
发送消息,把表名和数据一同发送过去即可。
如果是使用规则引擎处理,则需要根据规则ID列表,把数据复制N份(每一个规则一份),发送给规则引擎处理。这里需要调整下原来用的数据结构。

除了传送要处理的原始数据,还需要把存储目标(表名)传送过去。
固定名称为tableName[key].
定义流和写规则的时候,不用管这一部分,在规则引擎里再添加一个数据结构,用来存储规则名称与表名的对应关系,也会动态更新。


数据存储模型设计

巡检

字段名称 字段类型 字段描述
ID 整型 自增 主键
产品名称 字符串 表明是哪个硬件设备
属性名称 字符串 检测设备的哪个属性
属性值 字符串 检测的值
产品地址 字符串 多数情况下是指ip
检查日期 日期 检测发生的时间
检查是否通过规则 字符串 检测的值
检查标准 字符串 判断标准
规则名称 字符串 规则名称

巡检类的模板是基于产品属性粒度的

配置管理

字段名称 字段类型 字段描述
ID 整型 自增 主键
产品名称 字符串 表明是哪个硬件设备
属性名称 字符串 检测设备的哪个属性
属性值 字符串 检测的值
产品地址 字符串 多数情况下是指ip
检查日期 日期 检测发生的时间

产品配置管理 属性收集的时候,不是一个属性一个属性做的,
往往同时把相关的多个属性一次收集过来;
但在前端展示的时候,有可能
对于一个产品的同一个属性,属性本身可能是复杂的,包含多个属性
如果是复杂属性,可以把检测的值本身存储为嵌套的json.

外部接口

接收数据

1. 目录文件监听

目前采用数据监听的方式,监听配置目录中文件的创建事件。
支持两种文件类型,一种是以.json为扩展名的内容为json的文件;
另一种是其他扩展名的,内容为符合xml格式的文件;
为了保持文件的完整性,创建文件的时候,有一定的技巧。
如果文件本身比较大,直接复制到监控目录可能会出问题,因为监听进程监听到文件创建,但是文件内容并没有完全写入,暂时程序中没有做相关处理。
解决方法是,复制大文件的时候,采用以.开头的文件名,待复制完成后再修改名字。例如

  1. cp Test_large_file.json /data/aops/.test_large_file.json && mv .test_large_file.json test_large_file.json

何为大文件 暂没有明确的定义,建议都按照上述方式进行,这样更安全稳定

2. Restful请求

设计为可以接收post请求,把待传入的json或xml格式的内容作为参数传入。
暂时没有实现。
 

使用方法说明

项目引入方式

使用scala IDE 导入已经存在的maven项目即可

运行方式

配置文件说明

其他功能

尝试加入规则引擎可以支持scala的功能,未实现

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注