风险特征平台架构设计与实现

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 上。该子系统承担数据接入与预处理职责,是连接后管配置与实时计算之间的桥梁。

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 子系统完成结果存储,形成一套配置化、可扩展的实时指标计算解决方案。

相关推荐
ZealSinger5 分钟前
LangChain4j用AiServices拼Tool
java·rag·ai智能体·langchain4j
vx_Biye_Design13 分钟前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
Sweet锦1 小时前
不调 Python,不装向量库:我用纯 Java 写了一套以图搜图引擎
java·人工智能·开源·图搜索
如意猴2 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
可乐鸡翅yeah_2 小时前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
专业程序开发源3 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户094248568033 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu3 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
樱花落木兰3 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
HAHAXX83 小时前
电商RPA批量上架通用方案:一套流程如何同时跑通拼多多、抖店、淘宝和跨境平台
java·运维·rpa