Files
lislgosms/docs/phase-0-spike-progress.md

4.1 KiB
Raw Permalink Blame History

阶段 0 Spike 进度记录

2026-07-01

已完成

  • 阅读第一版需求文档、UI 设计规范、前端路由、客户端布局、运营端布局和 package.json。
  • 确认第一版边界:保留短信业务,彩信为待开发或隐藏,账户计费进入第一版。
  • 创建阶段 0 最小工程计划。
  • 创建 NestJS 与 Go Gateway 队列消息 Schema 和示例消息。
  • 创建队列契约校验脚本。
  • 完成 bigwhite/gocmppJoeCao/cmpp-gateway 在线资料初评,记录到 docs/phase-0-open-source-evaluation.md
  • 创建 api/gateway/ 阶段 0 README 骨架,明确 Spike 边界。
  • 安装 Go 1.26.4,补齐 Gateway Spike 可编译环境。
  • 创建 Go Gateway 队列消息结构、追踪器、内存模拟 submit resp/deliver 链路和 15000 条模拟压测命令。
  • 使用 goproxy.cn 成功接入 github.com/bigwhite/gocmpp,并创建编译级适配测试。
  • 安装 Redis Windows portable fork 8.8.0,启动本地 Redis 并通过 PONG 验证。
  • 安装 BullMQ/ioredis,创建 api/src/spike/bullmq-link-spike.mjs,跑通 15000 条 Redis/BullMQ 模拟链路。
  • 基于 gocmpp 创建本地 TCP 集成测试,覆盖 CMPP 3.0 connect、submit、submit resp、active test。
  • 基于 gocmpp 完成 deliver 回执 PDU pack/unpack 测试。
  • 创建 Gateway 重连状态机和测试,验证首次断线后第二次连接成功的重试路径。

验证记录

  • node --versionv24.16.0。
  • npm --version11.13.0。
  • go versiongo1.26.4 windows/amd64。
  • npm run spike:contracts:通过,4 个队列消息示例通过校验。
  • npm run build:通过,Vite 输出 chunk 大小告警,不阻塞构建。
  • npm run spike:gateway:通过,包含 gocmpp 编译级接入、追踪器测试和内存模拟链路测试。
  • go run ./cmd/spike:通过,15000 条内存模拟链路全部生成 submit result 和 receipt event;本次运行耗时 32.8761 ms,吞吐 456258.50 msg/s。
  • Redis:通过本地 portable Redis 启动并返回 PONG
  • npm run spike:bullmq:通过,15000 条消息;入队 3444.88 ms,端到端 24377.45 ms,入队 TPS 4354.29,端到端 TPS 615.32,满足 500 条/秒 Spike 指标。
  • docker --version / docker compose version:未通过,本机未安装 Docker。

当前阻塞与后续增强

  • Docker 仍不可用;阶段 1 需要补齐 Docker Compose 或给出 Windows 本地替代启动方式。
  • gocmpp 已完成本地 TCP connect、submit、active test 和 deliver PDU 验证;terminate、慢响应、窗口满、重复回执、sequence 回绕需在阶段 7 稳定性压测继续补充。
  • 当前 BullMQ Spike 使用 Node 模拟 Gateway worker,不是 Go 进程直接消费 BullMQ;阶段 1/7 需要决定 Go 侧 Redis/BullMQ 兼容消费方式,或通过 NestJS Send Worker 将队列转为 Gateway 内部协议。

下一步

  1. 进入阶段 1:工程骨架。
  2. 输出阶段 1 实施计划和验收标准。
  3. 建立 web/api/gateway/infra/docs 的工程结构与基础命令。

阶段 0 验收状态

验收项 状态 说明
模拟短信链路:NestJS 入队 -> Go Gateway 提交 -> submit resp -> deliver 回执 -> NestJS 更新状态 已完成 BullMQ/Redis 模拟链路已通过,Node 模拟 Gateway worker 回传 submit result 和 receipt eventGo 内存链路同步通过。
Go Gateway 断线后可重连,并继续消费后续消息 已完成 已完成 Gateway 重连状态机测试;真实通道断线恢复将在阶段 7 加强。
全消息具备 traceId、messageId、channelId、sequenceId 或追踪映射 已完成 Schema、示例、Go tracker 均已覆盖。
Spike 文档记录是否采用 gocmpp、是否 fork、哪些能力自研 已完成 初步结论:协议层优先直接依赖 gocmpp,暂不 fork;连接管理、追踪、队列、限速、监控由本项目自研。
500 条/秒链路 Spike 已完成 BullMQ/Redis 端到端 TPS 615.32Go 内存基线同步超过 500 条/秒。

阶段 0 结论

阶段 0 已完成。第一版可以进入阶段 1 工程骨架建设。