首页 / 典型链路 / 典型业务链路

链路一:GPS 上报 → 告警推送

  1. 设备经 MQTT/TCP 上报坐标,dgsvr 完成设备认证与接入
  2. gpscodecsvr 将私有 Protobuf 载荷解码为标准物模型 JSON
  3. geosvr 消费 NATS 原始点数据(GPS_RAW_V1),坐标纠偏后写 TDengine,维护在线状态(Redis ZSET)
  4. risksvr / alertsvr 进行风险区域(H3)与行为规则(WHEN-THEN)判断,产生告警事件
  5. eventsvr 分发事件;Java alarm 落告警记录并校验订阅权益,notify 创建消息任务
  6. wssvr / APNs / FCM 将告警实时推送到 App

排查入口:先看 NATS 主题是否有事件,再分别检查 geosvr(轨迹入库)、risksvr/alertsvr(规则命中)、alarm(记录)、notify(任务状态)。

链路二:实时视频监控

  1. App 调用 Java 业务接口发起拉流请求,获取访问权限与令牌
  2. Java 校验权限与订阅权益,返回 Go videosvr 的 WebRTC 直连地址与短效 Token
  3. App 与 videosvr 建立 WebRTC 通道;videosvr 向设备发送 SIP INVITE 唤醒推流
  4. 视频流经 ZLMediaKit 转发,全程不占用 Java 服务 IO;历史录像从 OSS 生成临时 URL

关键点:音视频走 Go 数据面;临时凭证短效过期保证隐私。

链路三:OTA 升级

  1. Java 管理后台创建 OTA 任务并落库(iot/ota
  2. Java 发布 NATS 主题 device.down.ota.{productID}.{deviceName} 通知 Go
  3. Go dmsvr / otasvr 接收任务,向设备下发升级指令并跟踪升级状态
  4. 设备上报升级结果,Go 回写状态,Java 侧查询升级进度;失败支持 Confirm / Cancel / Retry

关键点:升级结果以设备上报为准;任务状态跟踪与超时重试由任务系统保障。

链路四:设备绑定 + 权益分配

  1. App 发起设备绑定,Java iot 创建绑定 task/session 记录中间状态
  2. Java member 校验用户身份,subscription 分配 Seat 占用权益(Saga 预占)
  3. 需要支付时 pay 完成支付/对账,支付成功回查订阅 active 状态并激活
  4. 绑定完成回写设备归属(iot.binding.completed),失败走 Seat 释放补偿

关键点:绑定过程必须幂等可恢复,不以单行设备归属字段替代完整流程;所有事件统一 topic entrax-subscription-binding-saga-v1

排查入口总表

场景第一层第二层最终事实
设备不上线EMQX 连接dgsvr 认证日志device.up.status.connected 事件
轨迹缺失gpscodecsvr 解码geosvr NATS 消费TDengine 原始点
告警未推送risksvr/alertsvr 命中eventsvr 分发alarm 记录 → notify 任务状态
拉流失败Java 权限/权益videosvr SIP INVITEZLMediaKit 流状态
绑定卡住binding_task 状态Saga 事件(RocketMQ)seat 占用 + 支付对账