通用业务平台设计(五):预警平台建设
前言
- 在上家公司,随着业务的不断拓展(从支持单个国家单个主体演变成支持多个国家多个主体),对预警的诉求越来越紧迫;
- 如何保障业务的稳定性那?预警可以帮我们提前甄别风险,从而让我们可以在风险来临前将其消灭;
- 每个业务组写自己的报警规则会极大的降低开发效率,于是我们设计一套通用的预警平台来解该问题;
通用业务平台系列
- 通用业务平台设计(一):概览
- 通用业务平台设计(二):扩展多国家业务
- 通用业务平台设计(三):自动化打包平台建设
- 通用业务平台设计(四):灰度发布架构升级
- 通用业务平台设计(五):预警平台建设
学习完这篇文章你将收获什么
适合哪类人学
- 后端开发(无论你是刚入门小白还是资深开发都能从中有所受益)
- 运维(无论你是刚入门小白还是资深运维都能从中有所受益)
你将收获什么
- 预警平台架构如何设计
预警平台设计
场景数据获取架构图
报警规则过滤架构图
记录待发送报警架构图
报警发送
涉及数据库脚本
预警平台相关脚本
-- 报警渠道信息
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…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...