Files
lislgosms/gateway/README.md
T

47 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CMPP Gateway Spike
阶段 0 的 `gateway/` 目录用于 Go CMPP Gateway 技术 Spike。当前环境未安装 Go 工具链,先保留工程边界和验收清单。
## 阶段 0 职责
- 读取一个 CMPP 通道配置。
- 基于 gocmpp 或评估后的协议库完成 connect、submit、deliver、active test、terminate。
- 消费 `cmpp.submit.commands`
- 发布 `cmpp.submit.results``cmpp.receipt.events``cmpp.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关联,允许按完成顺序返回。
## 建议骨架
```text
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 追踪、队列、限速、监控、幂等由本项目自研。