背景

我们如果想设计一个 SQL 指标/规则 系统,应该有哪些核心能力?

基础

用户+权限管理

系统设置

一些系统级别的常量+枚举

app 管理

相关应用管理

数据源管理

人工维护数据源

前期不失为一种过渡方案

告警模板

所有的模板支持自定义

日志记录

审计日志留痕

方便查问题+找出变更记录

进阶

报警+报表+直发

报警就是报警

报表,额外查询内容

直发:查询内容直接发送出来

配置信息

定时全量加载

构建对应的 datasource 数据源,动态更新

性能问题

针对比较慢的SQL,执行时熔断

提前构建好数据源

添加适当的缓存

数据量问题

针对量特别大的请求,熔断

有效性问题

链接因为引入缓存

所以可以需要定期验证 connection 有效性,避免域名切换等问题,导致的不可用。

分布式调度问题

可以抢锁,一个人负责任务的分分配。

ipList: 1min 一次的心跳,只读取最近 5min 内有心跳的服务列表。

执行的时候,每台机器只执行属于自己的数据。

参考资料