首页 / 系统架构 / Go 平台架构

技术栈与定位

选型说明
框架go-zeroRPC(zrpc)与 API(rest)统一开发模型,goctl 生成代码
协议接入EMQX MQTT设备长连接、消息订阅与指令下发(go-share/clients/mqttClient)
事件总线NATS / JetStream跨服务异步消息,主题规范集中在 go-share/events/topics/nats.go
时序数据TDengineGPS 轨迹、遥测高频写入;go-share/utils/tdEngine 提供并发异步写入
流媒体ZLMediaKit / Pion WebRTC推拉流、抓拍、实时对讲(go-share/clients/zlmediaHttp)
存储MinIO / 阿里云 OSS统一 oss 接口(go-share/oss)
定位基础设施与 IoT Hub高并发接入、实时计算、流媒体转发、实时推送

数据面架构图

Go 实时数据面架构图
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(基础中台)

服务类型职责
apisvrHTTP 网关管理后台统一接口:用户、角色、部门、租户、项目/区域、字典、任务、日志
syssvrRPC用户/角色权限(RBAC)、多租户、项目/区域、通知模板、操作审计
datasvrHTTP/RPC物模型定义、Adcode 地理编码、统计配置与报表
timedRPCtimedjobsvr 任务管理 + timedschedulersvr 调度执行

go-master(车载安防业务服务)

服务类型职责
apisvrHTTP 网关对外 REST:认证权限、设备/产品/协议/OTA/远程配置
dgsvrRPC + MQTT设备认证、注册、消息订阅发布、在线状态
dmsvrRPC设备/产品/物模型/协议/OTA/分组、设备影子
gpscodecsvrNATSGPS 私有协议 ↔ 标准物模型编解码
geosvrRPC + NATS轨迹消费入库、查询、在线状态、围栏判断
tripsvr后台行程/停留检测,写行程摘要
risksvrNATSH3 风险区域匹配、进出判定、告警事件
alertsvrNATS行为规则(WHEN-THEN)评估
eventsvrRPC规则注册/匹配、事件分发推送
iamsvrRPCPII 加解密、审计日志
otasvrRPC + NATS固件升级任务与状态跟踪
videosvrRPC实时监控 WebRTC、历史录像、云台控制
wssvrWebSocket实时位置推送(Java Authorizer 统一鉴权)
agentsvrNATS + LLM行程智能文案、AI 分析

端口与运行

服务配置文件Name / 端口
dgsvr / dmsvretc/dg.yaml / etc/dm.yamlgo-dgsvr / go-dmsvr,58848 等内部端口
gpscodecsvretc/gpscodec.yamlgpscodec.rpc
geosvretc/geosvr.yamlgo-geosvr;订阅 GPS_RAW_V1GPS_QUALITY_V1
eventsvr / iamsvr / videosvretc/*.yamleventsvr.rpc / iamsvr.rpc / videosvr.rpc,9098/9097/9096
risksvr / alertsvr / wssvr / agentsvretc/*.yamlgo-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 模板生成模型。