通用业务平台设计(五):预警平台建设
前言
- 在上家公司,随着业务的不断拓展(从支持单个国家单个主体演变成支持多个国家多个主体),对预警的诉求越来越紧迫;
- 如何保障业务的稳定性那?预警可以帮我们提前甄别风险,从而让我们可以在风险来临前将其消灭;
- 每个业务组写自己的报警规则会极大的降低开发效率,于是我们设计一套通用的预警平台来解该问题;
通用业务平台系列
- 通用业务平台设计(一):概览
- 通用业务平台设计(二):扩展多国家业务
- 通用业务平台设计(三):自动化打包平台建设
- 通用业务平台设计(四):灰度发布架构升级
- 通用业务平台设计(五):预警平台建设
学习完这篇文章你将收获什么
适合哪类人学
- 后端开发(无论你是刚入门小白还是资深开发都能从中有所受益)
- 运维(无论你是刚入门小白还是资深运维都能从中有所受益)
你将收获什么
- 预警平台架构如何设计
预警平台设计
场景数据获取架构图
报警规则过滤架构图
记录待发送报警架构图
报警发送
涉及数据库脚本
预警平台相关脚本
-- 报警渠道信息
CREATE TABLE `monitor_channel` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`channel_no` varchar(32) DEFAULT NULL COMMENT '渠道编码',`channel_name` varchar(20) DEFAULT NULL COMMENT '通道名称',`type` int(2) DEFAULT '0' COMMENT '渠道类型:0企业微信;1邮箱;2钉钉',`sort` decimal(4,2) DEFAULT NULL COMMENT '排序(越大越靠前);支持正负数,支持两位整数两位小数', `status` int(2) DEFAULT '0' COMMENT '状态(0启用 1停用 2作废)', `remark` varchar(20) DEFAULT NULL COMMENT '备注',`create_uid` varchar(32) DEFAULT NULL COMMENT '创建人ID 系统初始化为 -1',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',`update_uid` varchar(32) DEFAULT NULL COMMENT '修改人ID 系统修改为 -1',`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(32) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(64) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(128) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_channel_cno` (`channel_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警渠道表';-- 报警渠道明细表
CREATE TABLE `monitor_channel_detail` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`channel_no` varchar(32) DEFAULT NULL COMMENT '渠道编码', `data_key` varchar(128) DEFAULT NULL COMMENT '数据项key',`data_value` varchar(128) DEFAULT NULL COMMENT '数据项value',`data_remark` varchar(20) DEFAULT NULL COMMENT '数据项说明', `status` int(2) DEFAULT '0' COMMENT '状态(0启用 1停用 2作废)', `create_uid` varchar(32) DEFAULT NULL COMMENT '创建人ID 系统初始化为 -1',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',`update_uid` varchar(32) DEFAULT NULL COMMENT '修改人ID 系统修改为 -1',`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(32) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(64) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(128) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_channel_detail_cds` (`channel_no`,`data_key`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警渠道表';-- 报警路由表
CREATE TABLE `monitor_routing` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',`routing_no` varchar(32) NOT NULL COMMENT '路由编号',`country_no` varchar(32) NOT NULL COMMENT '国家编号',`country_name` varchar(32) NOT NULL COMMENT '国家名称',`info_type` int(2) DEFAULT NULL COMMENT '报警场景类型:0验证类短信成功率;',`channel_no` varchar(32) DEFAULT NULL COMMENT '渠道编码',`channel_name` varchar(20) DEFAULT NULL COMMENT '通道名称', `sort` decimal(4,2) DEFAULT NULL COMMENT '排序(越大越靠前);支持正负数,支持两位整数两位小数',`status` int(2) DEFAULT '0' COMMENT '状态(0启用 1停用 2作废)',`create_uid` varchar(32) DEFAULT NULL COMMENT '创建人ID',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_uid` varchar(32) DEFAULT NULL COMMENT '修改人ID',`update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_routing_rt_no` (`routing_no`),UNIQUE KEY `uk_monitor_routing_cno_cpno_status_type` (`country_no`,`channel_no`,`status`,`info_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警路由表';-- 报警模板表
CREATE TABLE `monitor_mod` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`mod_no` varchar(32) DEFAULT NULL COMMENT '模板编码',`title` varchar(20) DEFAULT NULL COMMENT '标题',`status` int(2) DEFAULT '0' COMMENT '状态(0启用 1停用 2作废)',`content` varchar(512) DEFAULT NULL COMMENT '报警模板内容',`content_chinese` varchar(512) DEFAULT NULL COMMENT '报警模板内容对应中文',`info_type` int(2) DEFAULT NULL COMMENT '报警场景类型:0验证类短信成功率;',`send_type` int(2) DEFAULT NULL COMMENT '发送类型【1实时 2定时】', `remark` varchar(20) DEFAULT NULL COMMENT '备注',`create_uid` varchar(32) DEFAULT NULL COMMENT '创建人ID',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_uid` varchar(32) DEFAULT NULL COMMENT '修改人ID',`update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_mod_mno` (`mod_no`),KEY `key_monitor_mod_info_type` (`info_type`),KEY `key_monitor_mod_info_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警模板表';-- 报警国家模板对应关系表
CREATE TABLE `monitor_country_mod` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`bu_no` varchar(32) DEFAULT NULL COMMENT '业务编码',`country_no` varchar(32) DEFAULT NULL COMMENT '国家编码',`country_name` varchar(32) DEFAULT NULL COMMENT '国家名称',`mod_no` varchar(32) DEFAULT NULL COMMENT '报警模板编码',`info_type` int(2) DEFAULT NULL COMMENT '报警场景类型:0验证类短信成功率;',`status` int(2) DEFAULT '0' COMMENT '状态(0启用 1停用 2作废)',`remark` varchar(20) DEFAULT NULL COMMENT '备注',`create_uid` varchar(32) DEFAULT NULL COMMENT '创建人ID',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_uid` varchar(32) DEFAULT NULL COMMENT '修改人ID',`update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(32) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(128) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_country_mod_bu_no` (`bu_no`),UNIQUE KEY `uk_monitor_country_mod_cno_mno_itype_status` (`country_no`,`mod_no`,`info_type`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警的国家模板对应表';-- 预警规则路由表
CREATE TABLE `monitor_rule_route` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`bu_no` varchar(32) DEFAULT NULL COMMENT '业务编码',`info_type` int(2) DEFAULT NULL COMMENT '报警场景类型:0验证类短信成功率;',`country_no` varchar(32) DEFAULT NULL COMMENT '国家编码', `rule_no` varchar(32) DEFAULT NULL COMMENT '规则编码',`sort` decimal(4,2) DEFAULT NULL COMMENT '排序(越大越靠前);支持正负数,支持两位整数两位小数',`status` int(2) DEFAULT '0' COMMENT '状态 0启用 1停用',`remark` varchar(20) DEFAULT NULL COMMENT '备注', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_rule_route_bno` (`bu_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警规则路由表';-- 预警规则表
CREATE TABLE `monitor_rule` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`rule_no` varchar(32) DEFAULT NULL COMMENT '规则编码', `sort` decimal(4,2) DEFAULT NULL COMMENT '排序(越大越靠前);支持正负数,支持两位整数两位小数',`fun_code` varchar(64) DEFAULT NULL COMMENT '表达式',`fun_desc` varchar(64) DEFAULT NULL COMMENT '表达式描述',`threshold_val` varchar(255) DEFAULT NULL COMMENT '阈值', `status` int(2) DEFAULT '0' COMMENT '状态 0启用 1停用',`remark` varchar(20) DEFAULT NULL COMMENT '备注', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_rule_rno` (`rule_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警规则表';-- 报警发送表
CREATE TABLE `monitor_send_log` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`sl_no` varchar(32) DEFAULT NULL COMMENT '业务编码',`country_no` varchar(32) DEFAULT NULL COMMENT '国家编码',`channel_product_no` varchar(32) DEFAULT NULL COMMENT '渠道产品编码',`mod_no` varchar(32) DEFAULT NULL COMMENT '报警模板编码', `content` varchar(255) DEFAULT NULL COMMENT '内容中变量【多个以;为分割】',`info_type` int(2) DEFAULT NULL COMMENT '报警场景类型:0验证类短信成功率;', `expect_send_time` timestamp NULL DEFAULT NULL COMMENT '预计报警发送时间',`reality_send_time` timestamp NULL DEFAULT NULL COMMENT '实际报警发送时间',`status` int(2) DEFAULT NULL COMMENT '发送状态:0待发送;1发送成功;2发送失败', `retry_times` int(2) DEFAULT '2' COMMENT '剩余重试次数', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(32) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(64) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(128) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_send_log_slno` (`sl_no`),UNIQUE KEY `uk_monitor_send_log_cno_itype_estime` (`country_no`,`info_type`,`expect_send_time`),KEY `key_monitor_send_log_cno` (`country_no`),KEY `key_monitor_send_log_chpno` (`channel_product_no`),KEY `key_monitor_send_log_exstime` (`expect_send_time`),KEY `key_monitor_send_log_status` (`status`),KEY `key_monitor_send_log_retimes` (`retry_times`),KEY `key_monitor_send_log_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警发送记录表';-- 报警发送历史表
CREATE TABLE `monitor_send_log_hist` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`sl_no` varchar(32) DEFAULT NULL COMMENT '业务编码',`country_no` varchar(32) DEFAULT NULL COMMENT '国家编码',`channel_product_no` varchar(32) DEFAULT NULL COMMENT '渠道产品编码',`mod_no` varchar(32) DEFAULT NULL COMMENT '报警模板编码', `content` varchar(255) DEFAULT NULL COMMENT '内容中变量【多个以;为分割】',`info_type` int(2) DEFAULT NULL COMMENT '报警场景类型:0验证类短信成功率;', `expect_send_time` timestamp NULL DEFAULT NULL COMMENT '预计报警发送时间',`reality_send_time` timestamp NULL DEFAULT NULL COMMENT '实际报警发送时间',`status` int(2) DEFAULT NULL COMMENT '发送状态:0待发送;1发送成功;2发送失败', `retry_times` int(2) DEFAULT '2' COMMENT '剩余重试次数', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(32) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(64) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(128) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),KEY `uk_monitor_send_log_hist_slno` (`sl_no`),KEY `key_monitor_send_log_hist_cno` (`country_no`),KEY `key_monitor_send_log_hist_chpno` (`channel_product_no`),KEY `key_monitor_send_log_hist_exstime` (`expect_send_time`),KEY `key_monitor_send_log_hist_status` (`status`),KEY `key_monitor_send_log_hist_retimes` (`retry_times`),KEY `key_monitor_send_log_hist_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警发送记录历史表';
业务系统相关脚本
-- 预警历史数据表
CREATE TABLE `monitor_hist_data` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`bu_no` varchar(32) DEFAULT NULL COMMENT '业务编码',`info_type` int(2) DEFAULT NULL COMMENT '场景类型:0验证类短信成功率;1活体成功率;',`begin_time` timestamp NULL DEFAULT NULL COMMENT '数据统计开始时间',`end_time` timestamp NULL DEFAULT NULL COMMENT '数据统计结束时间',`numerator_count` int(4) DEFAULT NULL COMMENT '统计时间段分子数量',`denominator_count` int(4) DEFAULT NULL COMMENT '统计时间段分母数量', `rate` decimal(8,4) DEFAULT NULL COMMENT '统计时间段比例(统计时间段分子数量/统计时间段分母数量)',`remark` varchar(20) DEFAULT NULL COMMENT '备注', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_record_bno` (`bu_no`),UNIQUE KEY `uk_monitor_record_itype_btime_etime` (`info_type`,`begin_time`,`end_time`),KEY `monitor_hist_data_btime` (`begin_time`),KEY `monitor_hist_data_etime` (`end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警历史信息统计表';-- 预警记录表
CREATE TABLE `monitor_record` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`bu_no` varchar(32) DEFAULT NULL COMMENT '业务编码',`info_type` int(2) DEFAULT NULL COMMENT '报警场景类型:0验证类短信成功率;1活体成功率;',`country_no` varchar(32) DEFAULT NULL COMMENT '国家编码',`begin_time` timestamp NULL DEFAULT NULL COMMENT '统计数据开始时间',`end_time` timestamp NULL DEFAULT NULL COMMENT '统计数据结束时间',`content` varchar(1024) DEFAULT NULL COMMENT '报警内容多个以英文分号进行分割', `compare_val` varchar(512) DEFAULT NULL COMMENT '对比项值', `rule_retry_time` int(2) DEFAULT '2' COMMENT '调用报警规则剩余重试次数',`send_retry_time` int(2) DEFAULT '2' COMMENT '调用报警记录剩余重试次数',`status` int(2) DEFAULT '0' COMMENT '状态 0待调用报警规则 1调用报警规则失败 2调用报警规则成功且不需要报警 3调用报警规则成功且需要报警 4调用报警记录成功 5调用报警记录失败', `remark` varchar(20) DEFAULT NULL COMMENT '备注', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_record_bno` (`bu_no`),UNIQUE KEY `uk_monitor_record_type_cno_btime_etime` (`info_type`,`country_no`,`begin_time`,`end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警信息记录表';-- 预警基本信息统计表
CREATE TABLE `monitor_basic_data` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`group_no` varchar(32) DEFAULT NULL COMMENT '组编码',`country_name` varchar(20) DEFAULT NULL COMMENT '国家名称',`begin_time` timestamp NULL DEFAULT NULL COMMENT '数据统计开始时间',`end_time` timestamp NULL DEFAULT NULL COMMENT '数据统计结束时间',`info_type` int(2) DEFAULT NULL COMMENT '类型:0催收', `status` int(2) DEFAULT '0' COMMENT '状态 0待生成excel上传oss 1上传oss成功 2上传oss失败',`file_url` varchar(255) DEFAULT NULL COMMENT '文件OSS的url地址',`retry_time` int(2) DEFAULT '2' COMMENT '剩余重试次数',`remark` varchar(20) DEFAULT NULL COMMENT '备注', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),UNIQUE KEY `uk_monitor_basic_data_gno` (`group_no`),UNIQUE KEY `uk_monitor_basic_data_cn_btime_etime` (`country_name`,`begin_time`,`end_time`),KEY `key_monitor_basic_data_btime` (`begin_time`),KEY `key_monitor_basic_data_etime` (`end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警基本信息统计表';-- 预警基本信息详细统计表
CREATE TABLE `monitor_basic_data_item` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`group_no` varchar(32) DEFAULT NULL COMMENT '组编码',`case_id` varchar(32) DEFAULT NULL COMMENT '订单号',`external_no` varchar(128) DEFAULT NULL COMMENT '外部流水号(第三方交易流水号)',`repayment_money` decimal(20,8) DEFAULT NULL COMMENT '应还金额',`practical_repayment_money` decimal(20,8) DEFAULT NULL COMMENT '金额',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`param1` int(2) DEFAULT NULL COMMENT '预留字段1',`param2` int(4) DEFAULT NULL COMMENT '预留字段2',`param3` int(11) DEFAULT NULL COMMENT '预留字段3',`param4` varchar(20) DEFAULT NULL COMMENT '预留字段4',`param5` varchar(32) DEFAULT NULL COMMENT '预留字段5',`param6` varchar(64) DEFAULT NULL COMMENT '预留字段6',PRIMARY KEY (`id`),KEY `key_monitor_basic_data_item_gno` (`group_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='预警基本信息详细统计表';
总结
- 预警平台的建设远超预期,多次提前预警风险,从而避免故障发生
- 预警平台投入使用推广,获得了业务团队的一致好评
- 当业务发展一定规模后,公司在竞争中获胜的一个很关键因素在于谁更少的犯错,建立一个提前甄别风险的系统是必要的
相关文章:

通用业务平台设计(五):预警平台建设
前言 在上家公司,随着业务的不断拓展(从支持单个国家单个主体演变成支持多个国家多个主体),对预警的诉求越来越紧迫;如何保障业务的稳定性那?预警可以帮我们提前甄别风险,从而让我们可以在风险来临前将其消灭ÿ…...

Windows openssl-1.1.1d vs2017编译
工具: 1. perl(https://strawberryperl.com/) 2. nasm(https://nasm.us/) 3. openssl源码(https://www.openssl.org/) 可以自己去下载 或者我的网盘提供下载: 链接:…...

【深蓝学院】手写VIO第2章--IMU传感器--笔记
0. 内容 1. 旋转运动学 角速度的推导: 左ω∧\omega^{\wedge}ω∧,而ω\omegaω是在z轴方向运动,θ′[0,0,1]T\theta^{\prime}[0,0,1]^Tθ′[0,0,1]T 两边取模后得到结论: 线速度大小半径 * 角速度大小 其中,对旋转矩…...

网络基础(二)之HTTP与HTTPS
应用层 再谈 "协议" 协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢? 为什么要转换呢? 如果我们将struct message里面的信息…...

Python每日一练(20230306)
目录 1. 翻转二叉树 ★★ 2. 最长公共前缀 ★★ 3. 2的幂 ★ 1. 翻转二叉树 翻转一棵二叉树。 示例 1: 输入: 4/ \2 7/ \ / \ 1 3 6 9 输出: 4/ \7 2/ \ / \ 9 6 3 1示例 2: 输入: 1…...

C/C++每日一练(20230305)
目录 1. 整数分解 ☆ 2. 二叉树的最小深度 ★★ 3. 找x ★★ 1. 整数分解 输入一个正整数,将其按7进制位分解为各乘式的累加和。 示例 1: 输入:49 输出:497^2示例 2: 输入:720 输出:720…...
SAS字典的应用
数据字典中常用信息检索DICTIONARY.COLUMNS、DICTIONARY.TABLES以及DICTIONARY.MEMBERS等字典表的内容。在编程实践中,如何以SAS字典表来提高效率。 1、DICTIONARY.COLUMNS 对于当前SAS任务的全部数据集,表格DICTIONARY.COLUMNS包含了诸如变量的名称、类…...
Mysql中的函数和触发器
函数函数是什么?多用于查询语句,实现了某种功能;用途与存储过程不同,但语法是类似的;函数语法create function 函数名([参数列表]) returns 数据类型 begin DECLARE 变量; sql 语句; return 值; end; 设置函…...

分布式架构之(Zookeeper原理)
Zookeeper是一个典型的分布式数据一致性的结局方案,分布式应用程序可以基于它实现注入数据发布、订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能, Zookeeper可以保证如下分布式一致性特性: 顺…...
Java框架学习 | MyBatis
问题导向学习MyBatis 为什么要有MyBatis框架? 避免Java开发者直接使用 JDBC重复做数据库操作,同时更便捷地实现想要的数据库相关功能,让Java专注于开发业务。 MyBatis框架如何实现该目的? MyBatis是半自动化持久层ORM框架&#x…...

Cookie+Session详解
文章目录批量删除会话技术简介CookieCookie 查看Cookie 的删除Cookie 使用页面获取 cookie 信息cookie 特点Sessionsession 的使用Session 登录权限验证过滤器简介过滤器的使用WebFilter 注解过滤放行登录权限验证批量删除 servlet 类 dao 层 会话技术 简介 在计算机领域…...

CAPL脚本要注意区分elcount和strlen求数组长度的区别,不然要吃大亏
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...

CSS常用选择器
目录 1.CSS是什么 2.CSS的三种写法 2.1内部样式 2.2内联样式 2.3外部样式 3.CSS选择器 3.1标签选择器 3.2类选择器(更好的选择) 3.3ID选择器 3.4后代选择器 3.5子选择器 3.6并集选择器 3.7伪类选择器(复合选择器的特殊用法) 1.CSS是什么 CSS全称Cascding Style Sh…...

Registry与DGC的攻击利用
0x01 2022-02-03写的一篇文章。 0x02 Registry Registry指的是RMI的注册表,攻击的目标是注册表所在的机器,一般注册表和RMI Server在同一个机器上,特殊情况下也会在不同机器上。 在我们通过LocateRegistry#getRegistry获取到目标开启的注…...
赛道持续降温!又一家自动驾驶公司裁员,市值曾超50亿美元
从去年下半年开始,自动驾驶赛道的裁员、倒闭风潮盛行。 本周,美股卡车自动驾驶上市公司Embark Trucks(EMBK)宣布将裁员70%,同时大幅缩减业务。“痛苦可能还没有结束,”公司首席执行官Alex Rodrigues在给员…...

路径规划 | 图解动态A*(D*)算法(附ROS C++/Python/Matlab仿真)
目录0 专栏介绍1 什么是D*算法?2 D*算法核心概念一览3 D*算法流程图4 步步图解:算法实例5 算法仿真与实现5.1 ROS C实现5.2 Python实现0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详…...

GraphCut、最大流最小割定理
G(V,E);V为点集,E为边集; 节点集V中的节点分为: (1)终端节点。不包含图像像素,用S和T表示。S为源点,T为汇点。图像分割中通常用S表示前景目标&a…...

Word文档的密码忘记了怎么办?
Word文档可以设置两种密码,文件的“限制密码”和“打开密码”,今天来分享一下忘记这两种密码可以如何处理。 如果忘记的是Word文档的“限制密码”,文档就无法编辑及更改了,菜单目录中的相关选项也都是灰色状态,无法点…...

Java分布式事务(二)
文章目录🔥分布式事务处理_认识本地事务🔥关系型数据库事务基础_并发事务带来的问题🔥关系型数据库事务基础_MySQL事务隔离级别🔥MySQL事务隔离级别_模拟异常发生之脏读🔥MySQL事务隔离级别_模拟异常发生之不可重复读&…...

游戏项目中的程序化生成(PCG):算法之外的问题与问题
本篇讨论的是什么 从概念上讲,PCG(程序化生成)的含义很广:任何通过规则计算得到的内容,都可算作是PCG。但在很多游戏项目的资料,包括本篇,讨论PCG时特指是:用一些算法/工具(特别是H…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...