27 lines
1.9 KiB
Markdown
27 lines
1.9 KiB
Markdown
# P6 SDK 重连风暴边界回归
|
||
|
||
日期:2026-09-20。本批为独立 Go SDK 的受控协议回归,补充连接连续中断时的退避、处理器调用和最终 ACK 证据。它不是生产网络故障、跨节点公平性或慢消费者容量验收。
|
||
|
||
## 场景
|
||
|
||
`TestEventConsumerReconnectStormUsesBoundedBackoff` 使用真实 TLS WebSocket 客户端和受控测试服务器:前 4 次连接在握手后立即以传输错误关闭,第 5 次连接交付一条相同结果事件。消费器配置容量1、重连退避10–40ms、收尾1秒。处理器只在收到事件时增加一次本地调用计数,服务端收到合法 ACK 后才结束测试。
|
||
|
||
| 证据 | 结果 |
|
||
| --- | ---: |
|
||
| 连接尝试 | 5 |
|
||
| 断线后重连次数 | 4 |
|
||
| 退避上限 | 40ms |
|
||
| 事件处理器调用 | 1 |
|
||
| ACK确认 | 1 |
|
||
| 重复/本地立即重跑 | 0 |
|
||
| SDK竞态测试耗时 | 1.964s |
|
||
| SDK vet/build | 通过 |
|
||
|
||
测试通过 `go test -race ./...`、`go vet ./...` 和 `go build ./...`(Docker Go 1.25.14 临时 modfile)运行;仓库 `go.mod` 声明的 Go 1.27.1 未修改。协议服务器只用于测试,未调用外部业务副作用。
|
||
|
||
重连时消费器保留订阅和事件交付身份;只有处理器返回成功后才提交 ACK。这个用例只验证连接层的有界重连和一次处理器调用,不能证明断线期间服务端租约、跨消费者业务 Inbox 去重、真实网络分区或多节点重连风暴的全局结果。处理器必须在业务 Inbox 与业务效果同一事务中按事件 ID 去重,SDK 本地计数不能替代该持久事实。
|
||
|
||
## 后续门槛
|
||
|
||
生产验收仍需固定目标网络和节点数量,加入慢处理器、事件积压、租约到期、多个消费者同时重连、数据库锁等待和采集资源曲线;应记录交付租约、ACK确认、Inbox处理、连接池、CPU、内存和磁盘指标,并核对重启后原身份恢复。当前证据不升级为跨故障域高可用、RPO/RTO或容量结论。
|