首页 / Go 平台(cloud-go) / 告警风控:risksvr + alertsvr + eventsvr
告警风控:risksvr + alertsvr + eventsvr
H3 风险区域匹配、行为规则评估与事件分发推送。
告警链路总览
GPS 数据流(NATS)
├─► risksvr:H3 风险区域进出判定 → 告警事件
├─► alertsvr:行为规则 WHEN-THEN 评估 → 告警事件
▼
eventsvr:规则匹配 + 动作执行(推送/日志)
▼
Java alarm:落告警记录 → notify:消息任务 → wssvr / APNs / FCM → App
risksvr 区域风险匹配
实时风险检测服务,内部 risk(匹配逻辑)、source(风险区域数据源)、device(设备索引)、mq(NATS 消费):
- 消费 NATS GPS 数据流,使用 H3 空间索引匹配设备与风险区域
- 判断设备进入/离开风险区域,发布告警事件到 JetStream
- 容错机制:冷却去重、批量限流、死信队列
alertsvr 行为规则评估
专门消费设备上报数据并执行行为告警规则判断,不对外提供 RPC API。内部结构:
| 目录/文件 | 职责 |
|---|---|
internal/domain/rule | 规则领域模型 |
internal/mq/consumer | NATS 消费者 + workerPool 并发处理 + 消费指标 |
internal/processor/alarmEvaluator | 规则评估引擎(WHEN-THEN) |
internal/processor/ruleIndexCache | 规则索引缓存:启动时从 Java alarm 拉取设备启用规则 |
internal/processor/stateCache | 状态缓存:告警去重、冷却 |
internal/processor/pendingRules | 待处理规则队列(pending replay) |
评估结果必须与 Java 侧告警记录、通知任务配合核对;缓存与队列是性能关键,也是排查"规则不生效/重复告警"的入口。
eventsvr 事件分发
事件规则服务(gRPC event.proto):
RegisterRule(ruleExpr, action):注册规则,如动作push(推送)、log(日志)MatchEvent(payload):匹配事件,返回是否命中与动作- 将告警实时推送至车主 App 端(联动 wssvr / 推送通道)
排查要点
- 按链路逐段确认:数据是否到达 risksvr/alertsvr → 规则是否命中 → 事件是否发布 → Java 是否落记录。
- 规则变更后检查 alertsvr 规则索引缓存是否刷新。
- 重复/漏告警:检查 stateCache 去重与 JetStream 消费组、pendingRules 重放。