Files
lislgosms/gateway

CMPP Gateway Spike

阶段 0 的 gateway/ 目录用于 Go CMPP Gateway 技术 Spike。当前环境未安装 Go 工具链,先保留工程边界和验收清单。

阶段 0 职责

  • 读取一个 CMPP 通道配置。
  • 基于 gocmpp 或评估后的协议库完成 connect、submit、deliver、active test、terminate。
  • 消费 cmpp.submit.commands
  • 发布 cmpp.submit.resultscmpp.receipt.eventscmpp.uplink.events
  • 维护 messageId -> sequenceId -> gatewayMessageId 映射。
  • 支持断线重连和后续消息继续消费。
  • 暴露健康检查和最小指标。
  • Redis Stream Submit Worker 使用持续补位的有界工作池并逐条 ACK;默认并发64,可用GATEWAY_SUBMIT_WORKER_CONCURRENCY调整,最大1024。供应商通道的真实上限仍由TPS限速、连接数和CMPP窗口共同决定。
  • 客户CMPP入站Submit按认证接口返回的应用cmppWindowSize在单连接内并发,Gateway再以GATEWAY_CMPP_INBOUND_MAX_CONCURRENCY实施默认64、最大1024的全局单连接保护。登录保持串行,心跳和Deliver ACK不等待慢SubmitSubmitResp依靠Sequence_Id关联,允许按完成顺序返回。

建议骨架

gateway/
├── cmd/
│   ├── gateway/
│   └── smsc-simulator/
└── internal/
    ├── cmpp/
    ├── config/
    ├── connection/
    ├── metrics/
    ├── queue/
    └── tracker/

当前环境状态

已安装 Go 1.26.4。当前 Spike 已完成:

  • 队列消息结构定义。
  • messageId -> sequenceId -> gatewayMessageId 追踪器。
  • 内存模拟 submit resp 与 deliver 回执链路。
  • 15000 条内存链路压测基线。
  • gocmpp 编译级接入点。
  • gocmpp 本地 TCP connect、submit、submit resp、active test 集成测试。
  • gocmpp deliver 回执 PDU pack/unpack 测试。
  • 断线重连状态机测试。

阶段 0 决策:协议层优先直接依赖 gocmpp,服务层连接管理、重连、SEQID/MSGID 追踪、队列、限速、监控、幂等由本项目自研。