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

报警规则过滤架构图

记录待发送报警架构图

报警发送

涉及数据库脚本
预警平台相关脚本
-- 报警渠道信息
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…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
