Files
2026-07-02 00:02:21 +08:00

2.6 KiB
Raw Permalink Blame History

Go Vehicle Gateway Native Deployment

本目录用于 ECS 原生部署。当前 goal 后续不再使用 Docker/Portainer 作为 Go 接入链路的部署方式。

Runtime Layout

/opt/lingniu-go-native/
  current -> /opt/lingniu-go-native/releases/<git-short-sha>
  releases/<git-short-sha>/
    gateway
    history-writer
    stat-writer
    realtime-api
  env/
    gateway.env
    history-writer.env
    stat-writer.env
    realtime-api.env
  spool/gateway/

Services

systemd unit Binary Purpose
lingniu-go-gateway.service gateway GB32960 TCP 32960、JT808 TCP 808、宇通 MQTT 接入,写 Kafka RAW/unified
lingniu-go-history-writer.service history-writer 消费 RAW topic写 TDengine raw_frames 和核心时序表
lingniu-go-stat-writer.service stat-writer 消费 RAW topic写 MySQL vehicle_daily_metric
lingniu-go-realtime-api.service realtime-api 消费 unified topic写 Redis并提供 realtime/raw/stat 查询 API

Build

在开发机或 CI 上构建 Linux amd64 二进制:

cd go/vehicle-gateway
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o /tmp/lingniu-go-native/gateway ./cmd/gateway
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o /tmp/lingniu-go-native/history-writer ./cmd/history-writer
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o /tmp/lingniu-go-native/stat-writer ./cmd/stat-writer
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o /tmp/lingniu-go-native/realtime-api ./cmd/realtime-api

Cutover Notes

  1. 先上传二进制到新 release 目录并更新 current symlink。
  2. 从现有生产 env 生成四个 systemd 专用 env 文件;不要把密钥写入仓库。
  3. 停止旧 Docker Go 容器或 Java 容器,释放 8083296020210
  4. 执行:
systemctl daemon-reload
systemctl enable lingniu-go-gateway lingniu-go-history-writer lingniu-go-stat-writer lingniu-go-realtime-api
systemctl restart lingniu-go-gateway lingniu-go-history-writer lingniu-go-stat-writer lingniu-go-realtime-api

Verification

systemctl is-active lingniu-go-gateway lingniu-go-history-writer lingniu-go-stat-writer lingniu-go-realtime-api
ss -lntp | egrep ':(808|32960|20210)\b'
journalctl -u lingniu-go-gateway --since '5 minutes ago' --no-pager
curl -sS 'http://127.0.0.1:20210/api/history/raw-frames?protocol=JT808&limit=1'
curl -sS 'http://127.0.0.1:20210/api/history/raw-frames?protocol=GB32960&limit=1'
curl -sS 'http://127.0.0.1:20210/api/history/raw-frames?protocol=YUTONG_MQTT&limit=1'