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

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

相关推荐
写后端的胖头鱼1 小时前
【高频面试题】面试题里常出现的Bitmap是什么(附源码和多种场景)
java·开发语言·面试·位图·bitmap
benbenAItalk10 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
sunshine22 girl10 小时前
Java学习二 基本语法2, 算术运算符
java·学习
niucloud-admin10 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_9628857210 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
滕州市燕猫虎计算机科技工作室个体工商户10 小时前
Java锁
java·开发语言
shehuiyuelaiyuehao12 小时前
1计算机是如何工作的
java·计算机网络
letisgo513 小时前
JAVA 高级进阶07篇《@Transactional失效的8个场景:代理机制到传播行为》
java·面试·transactional·spring事务·aop动态代理
水域安全老周13 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络