4.1 KiB
4.1 KiB
阶段 0 Spike 进度记录
2026-07-01
已完成
- 阅读第一版需求文档、UI 设计规范、前端路由、客户端布局、运营端布局和 package.json。
- 确认第一版边界:保留短信业务,彩信为待开发或隐藏,账户计费进入第一版。
- 创建阶段 0 最小工程计划。
- 创建 NestJS 与 Go Gateway 队列消息 Schema 和示例消息。
- 创建队列契约校验脚本。
- 完成
bigwhite/gocmpp与JoeCao/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 --version:v24.16.0。npm --version:11.13.0。go version:go1.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 实施计划和验收标准。
- 建立 web/api/gateway/infra/docs 的工程结构与基础命令。
阶段 0 验收状态
| 验收项 | 状态 | 说明 |
|---|---|---|
| 模拟短信链路:NestJS 入队 -> Go Gateway 提交 -> submit resp -> deliver 回执 -> NestJS 更新状态 | 已完成 | BullMQ/Redis 模拟链路已通过,Node 模拟 Gateway worker 回传 submit result 和 receipt event;Go 内存链路同步通过。 |
| Go Gateway 断线后可重连,并继续消费后续消息 | 已完成 | 已完成 Gateway 重连状态机测试;真实通道断线恢复将在阶段 7 加强。 |
| 全消息具备 traceId、messageId、channelId、sequenceId 或追踪映射 | 已完成 | Schema、示例、Go tracker 均已覆盖。 |
| Spike 文档记录是否采用 gocmpp、是否 fork、哪些能力自研 | 已完成 | 初步结论:协议层优先直接依赖 gocmpp,暂不 fork;连接管理、追踪、队列、限速、监控由本项目自研。 |
| 500 条/秒链路 Spike | 已完成 | BullMQ/Redis 端到端 TPS 615.32;Go 内存基线同步超过 500 条/秒。 |
阶段 0 结论
阶段 0 已完成。第一版可以进入阶段 1 工程骨架建设。