技术栈与定位
| 项 | 选型 | 说明 |
| 框架 | go-zero | RPC(zrpc)与 API(rest)统一开发模型,goctl 生成代码 |
| 协议接入 | EMQX MQTT | 设备长连接、消息订阅与指令下发(go-share/clients/mqttClient) |
| 事件总线 | NATS / JetStream | 跨服务异步消息,主题规范集中在 go-share/events/topics/nats.go |
| 时序数据 | TDengine | GPS 轨迹、遥测高频写入;go-share/utils/tdEngine 提供并发异步写入 |
| 流媒体 | ZLMediaKit / Pion WebRTC | 推拉流、抓拍、实时对讲(go-share/clients/zlmediaHttp) |
| 存储 | MinIO / 阿里云 OSS | 统一 oss 接口(go-share/oss) |
| 定位 | 基础设施与 IoT Hub | 高并发接入、实时计算、流媒体转发、实时推送 |
数据面架构图
Go 实时数据面参考图:按接入、处理、输出三层展示 MQTT、NATS、GPS 清洗、行程状态、告警计算、Redis 实时状态、TDengine 时序落库与 WebSocket 推送。来源:architecture/ChatGPT Image 2026年8月19日 15_17_54 (4).png。
三层结构
| 层 | 仓库目录 | 职责 |
| 底座支撑库 | go-share | 全平台通用工具与领域模型封装:utils、clients、oss、events/topics |
| 基础中台 | go-core | 系统管理、多租户、RBAC、项目/区域、物模型、数据分析、定时任务 |
| 业务服务层 | go-master | 车载安防核心业务:接入、设备、定位、行程、风控、告警、视频、OTA、AI |
依赖方向:go-master → go-core → go-share。公共消息主题、ID 生成、坐标纠偏、TDengine 写入等在 go-share 统一提供,业务服务不要重复实现。
服务组织方式
go-core(基础中台)
| 服务 | 类型 | 职责 |
apisvr | HTTP 网关 | 管理后台统一接口:用户、角色、部门、租户、项目/区域、字典、任务、日志 |
syssvr | RPC | 用户/角色权限(RBAC)、多租户、项目/区域、通知模板、操作审计 |
datasvr | HTTP/RPC | 物模型定义、Adcode 地理编码、统计配置与报表 |
timed | RPC | timedjobsvr 任务管理 + timedschedulersvr 调度执行 |
go-master(车载安防业务服务)
| 服务 | 类型 | 职责 |
apisvr | HTTP 网关 | 对外 REST:认证权限、设备/产品/协议/OTA/远程配置 |
dgsvr | RPC + MQTT | 设备认证、注册、消息订阅发布、在线状态 |
dmsvr | RPC | 设备/产品/物模型/协议/OTA/分组、设备影子 |
gpscodecsvr | NATS | GPS 私有协议 ↔ 标准物模型编解码 |
geosvr | RPC + NATS | 轨迹消费入库、查询、在线状态、围栏判断 |
tripsvr | 后台 | 行程/停留检测,写行程摘要 |
risksvr | NATS | H3 风险区域匹配、进出判定、告警事件 |
alertsvr | NATS | 行为规则(WHEN-THEN)评估 |
eventsvr | RPC | 规则注册/匹配、事件分发推送 |
iamsvr | RPC | PII 加解密、审计日志 |
otasvr | RPC + NATS | 固件升级任务与状态跟踪 |
videosvr | RPC | 实时监控 WebRTC、历史录像、云台控制 |
wssvr | WebSocket | 实时位置推送(Java Authorizer 统一鉴权) |
agentsvr | NATS + LLM | 行程智能文案、AI 分析 |
端口与运行
| 服务 | 配置文件 | Name / 端口 |
| dgsvr / dmsvr | etc/dg.yaml / etc/dm.yaml | go-dgsvr / go-dmsvr,58848 等内部端口 |
| gpscodecsvr | etc/gpscodec.yaml | gpscodec.rpc |
| geosvr | etc/geosvr.yaml | go-geosvr;订阅 GPS_RAW_V1、GPS_QUALITY_V1 |
| eventsvr / iamsvr / videosvr | etc/*.yaml | eventsvr.rpc / iamsvr.rpc / videosvr.rpc,9098/9097/9096 |
| risksvr / alertsvr / wssvr / agentsvr | etc/*.yaml | go-risksvr 等;多为后台/网关形态 |
- 服务通过 Nacos 注册与发现;Java 侧按服务名调用,不写死 IP。
- 消息流(NATS)驱动:gpscodecsvr/geosvr/tripsvr/risksvr/alertsvr 均为消费者形态,可独立部署或随 apisvr 进程内直连(
*direct 单例模式)。
- 新增服务用 goctl:
goctl rpc new rpcsvr --style=goZero -m;新增表按各服务 internal/repo/relationDB/example.go 模板生成模型。