1. 系统概述
本文围绕实时指标计算风险特征平台的整体架构展开,重点介绍后管子系统、EPC 子系统、Flink 任务以及 Data 子系统四个核心模块的功能设计与实现思路。平台通过配置化方式接入数据源,完成指标加工与结果存储,形成一套完整的实时数据处理链路。
2. 后管子系统
后管子系统负责平台的基础配置管理,主要包含数据源配置、指标数据集和指标配置三部分功能。
2.1 数据源配置
数据源配置通过配置化方式接入 Kafka 数据源,并维护相应的字段信息。管理员可以在界面中录入 Kafka 集群地址、Topic 名称、消费组等信息,同时配置该数据源对应的字段列表,为后续数据集加工提供基础数据来源。
2.2 指标数据集
指标数据集模块用于新建数据集,分别配置输出字段信息和方案配置信息。其中方案配置包含以下四类关键配置:
- S 数据源配置:选中步骤 1 中配置好的 Kafka 信息,作为数据集的输入来源。
- D 接口调用:配置外部接口调用信息,用于在加工过程中获取补充数据。
- R 结果集:配置匹配关联字段,用于将多路数据按指定字段进行关联。
- O 输出通道:选择输出的 Topic,指定加工结果发送的目标位置。
2.3 指标配置
指标配置模块允许用户选择已配置好的数据集,并配置维度字段、统计窗口、统计方法、统计字段、业务时间字段等参数。通过这些配置,平台可以明确指标的计算口径和统计范围,为 Flink 任务提供可执行的加工规则。
3. EPC 子系统
EPC 子系统根据后管配置好的 Kafka 主数据和数据集信息,消费 Kafka 消息并进行数据集加工,将加工好的信息发送到输出的 Topic 上。该子系统承担数据接入与预处理职责,是连接后管配置与实时计算之间的桥梁。
4. Flink 任务
Flink 任务根据后管配置的指标配置进行指标加工,并将计算结果抛出。平台将指标配置转换为可执行的 Flink 作业,在流式计算引擎中完成窗口统计、维度聚合等计算逻辑,最终输出指标结果。
5. Data 子系统
Data 子系统负责将指标数据存入缓存和 HBase 中。缓存层用于支撑高频查询和实时展示场景,HBase 则用于指标数据的持久化存储,满足历史回溯和批量分析需求。
历史指标存储hbase,rowkey设计: dataRowKey+指标计算时间戳
web页面上查询最近30的历史指标:
java
// 构建查询的RowKey :
Calendar startDate = Calendar.getInstance();
startDate.add(Calendar.DATE, -30); // 只查30天内数据
String startRowKey = this.buildRowKey(indexBean.getDimVal(), indexBean.getIndexCode(), String.valueOf(startDate.getTime().getTime()));
String endRowKey = this.buildRowKey(indexBean.getDimVal(), indexBean.getIndexCode(), String.valueOf((new Date()).getTime()));
LOGGER.info("queryIndexDetails 指标详情查询 startRowKey={} endRowKey={}", startRowKey, endRowKey);
byte[] startRow = Bytes.padTail(Bytes.toBytes(startRowKey), LONG_LENGTH);
byte[] endRow = Bytes.padTail(Bytes.toBytes(endRowKey), LONG_LENGTH);
//Scan scan = new Scan(startRow, endRow); // 顺序扫描时的scan
Scan scan = new Scan(endRow, startRow); //逆序扫描时的scan
scan.setReversed(true); //逆序扫描为true,顺序扫描为false
scan.addFamily(HbaseConstants.FAMILY);
// 设置一个PageFilter,pageSize=100,最多取100条记录
PageFilter pageFilter = new PageFilter(100);
scan.setFilter(pageFilter);
//scan.setMaxVersions(1); //设置数据的版本
//scan.setBatch(100); //指定最多返回的Cell数目
return this.getObjListByScanner(scan);
6. 总结
整个平台通过后管子系统完成配置管理,由 EPC 子系统完成数据接入与加工,Flink 任务负责指标计算,最终由 Data 子系统完成结果存储,形成一套配置化、可扩展的实时指标计算解决方案。