上线检查清单:IM 系统自检项

这份清单覆盖整套 IM 教程的落点,按七个维度组织:协议与模型、连接与网关、投递与可靠性、群聊、存储与扩容、安全、观测与演练。每一项都给出要点与可执行的验收口径,打勾前必须先跑出证据(压测报告、演练记录、用例结果),不接受“已经实现了”这类口头确认。

协议与模型

检查项要点验收口径
帧格式定版长度前缀 + 版本号 + 消息类型 + 序列号,字段只增不改不删新旧客户端双向兼容用例通过,未知字段被忽略而不是报错
消息 ID全局唯一且趋势递增,不依赖数据库自增抽样 100 万条无重复;同会话内 ID 严格递增
会话序列号接收端可检测序号空洞并触发补拉注入丢包后无残留空洞,补拉后位点连续
错误码表区分可重试与不可重试,含义稳定不随版本变化错误码文档与代码一致,客户端按码决策的用例覆盖
幂等键client_msg_id 由客户端生成并保证唯一重复发送返回同一个 msgID,服务端只产生一条消息
时间口径时间戳统一用服务端毫秒时间,客户端时间只做展示跨时区设备的消息排序与显示一致性用例通过
版本灰度协议变更走灰度,老版本在灰度期功能可用灰度期间老版本客户端收发成功率无下降

连接与网关

检查项要点验收口径
心跳与离线判定心跳 30s、服务端 90s 未收到即判定离线弱网与休眠场景误判率 < 0.1%,不出现“在线却收不到”
鉴权与续期token 有效期、续期路径与续期失败后的降级路径明确续期失败可平滑转为重新登录,不掉消息、不重复提示
单机连接水位达到设计值的 70% 触发扩容,内存与 fd 在预算内压测报表给出单机连接拐点与当时的 CPU/内存占用
内核与 fd 参数ulimit、somaxconn、端口范围随镜像或初始化脚本固化新机器上线即生效,无人工调参;ListenOverflows 为 0
建连限速与退避客户端重连退避带抖动,服务端限制单 IP 建连速率制造断网恢复后建连速率不超设计值 3 倍
慢客户端保护写缓冲设硬上限,超限断开并单独计数模拟只连不读的客户端,单机内存不异常增长
多端登录策略同账号多设备上限与踢人规则明确被踢端有明确提示,重新登录后历史与未读完整
网关发布支持分批重启或连接迁移单批发布期间掉线率 < 0.5%,无消息丢失

投递与可靠性

检查项要点验收口径
ACK 语义ACK 表示已落库,不代表对端已读客户端实现与文档一致,弱网下不出现重发风暴
重发与去重发送端超时重发,接收端按 msgID 去重刻意重复投递,用户侧不可见重复消息
顺序性单会话内乱序自动重排或明确拒绝乱序率有指标与告警,人为乱序可被纠正
离线补拉上线按位点补拉,位点推进幂等补拉完整率 100%,重复拉取不重复入库
多端同步已读、撤回、编辑在多端表现一致三端并发操作的同步用例通过,无状态回退
落库成功率目标 ≥ 99.99%,失败有可重入的补偿任务补偿任务演练一次可从缺口恢复到一致
撤回与编辑边界时限、已读后能否撤回、撤回后的多端表现写清边界用例全部覆盖,撤回后客户端不再展示正文
推送与补拉配合离线推送与上线补拉不重复打扰收到推送后进入会话,不出现重复未读提醒

群聊

检查项要点验收口径
群规模分档按规模分档(写扩散/读扩散/广播加拉取),阈值有压测依据各档群在目标延迟与存储预算内,跨档切换有迁移方案
成员变更一致性入群补历史、退群停投递、被踢立即生效变更生效时间 < 1 分钟,无“退群后仍收消息”用例
权限模型群主、管理员、成员的操作权限矩阵明确权限用例全覆盖,越权操作返回明确错误码
大群限流与合并单群下行速率上限与消息合并窗口生效热点群压测不拖垮共享集群,有独立配额或独立部署
未读数与摘要未读数与最后一条摘要可低成本获得群列表首页 P99 在预算内,不出现 N 次聚合查询
群消息幂等同一 client_msg_id 在群内只产生一条消息并发重复提交用例通过
解散与归档解散后可读不可发,归档数据访问权限明确解散群的历史查询与权限用例通过

存储与扩容

检查项要点验收口径
分片键与路由分片键选 uid,路由函数有单测跨分片查询清单化且有数量上限,新增查询需评审
单表水位单表行数与磁盘水位阈值明确超阈值前完成归档或扩容,不出现临时紧急扩容
冷热分离热数据在线、冷数据归档,归档任务可回放归档后冷数据查询可用,回放校验通过
备份与恢复备份周期与保留时长明确,做过真实恢复有一次恢复演练记录,含耗时与数据校验结果
在线迁移双写、校验、回滚步骤齐全迁移演练完成,切换窗口与回滚耗时已量化
副本与切换主从或多副本配置明确,切换演练过切换演练中应用自动重连,无脏读导致的可见错误
保留与合规消息保留期与删除策略符合合规要求注销用户的数据处理路径明确且可验证

安全

检查项要点验收口径
鉴权与越权拉取会话与历史都校验成员关系横向越权用例全部被拦截,含 ID 遍历场景
频控与风控单用户上行、单 IP 建连、登录失败次数均有阈值阈值可配置,压测与脚本攻击场景触发限流且不影响正常用户
防重放关键接口带时间戳与随机数重放窗口外的请求被拒,窗口内重放被去重
内容安全先审后发或先发后审的边界明确审核、撤回、封禁链路可用,且与降级预案衔接
敏感数据日志不落明文消息与手机号,传输全程 TLS抽样日志无敏感字段;存储侧敏感字段加密
客户端存储本地消息库加密,注销后清理明确卸载与注销两条路径的清理用例通过
三方依赖SDK 与厂商推送按最小权限接入,密钥可轮换密钥轮换演练一次,业务无中断

观测与演练

检查项要点验收口径
核心看板CCU、建连速率、上下行 QPS、P99、送达率、离线位点延迟看板齐全且口径与文档一致,能按机房与实例下钻
告警可行动每类告警有阈值、影响面说明与处置手册无重复告警;每条告警都能指向一个动作
链路追踪一条消息可用 msgID 串起全链路抽样 10 条消息可完整还原上行、路由、下行与落库耗时
日志规范关键节点结构化日志带 traceID日志量在磁盘预算内,采样策略明确
水位预警连接、内存、磁盘、MQ 积压均有预警与严重两档预警档在严重档之前触发,且有历史命中记录
预案演练降级与容灾预案至少演练一遍有演练记录与量化判据,未通过项已闭环
上线前压测压测测试项全部达标并附拐点证据压测报告包含环境、方法、曲线与瓶颈证据
回滚方案版本回滚与数据回滚的步骤、耗时、验证方式明确回滚演练一次,恢复时间与预期一致

使用方式

  • 分三档判定:阻塞上线(任何一项不通过,或口径无法给出证据)、限期整改(不影响正确性,一周内闭环)、可选优化(记入技术债看板)。
  • 每次上线由作者之外的人抽查 20% 的条目,防止“自评自过”;抽查记录与结果一并归档。
  • 清单每季度回归一次,把新出现的故障与演练发现的问题补成新条目,删除已经不再适用的条目。
  • 涉及线上开关的条目(降级、限流、灰度)必须能在演练环境复现,只写文档不算通过。

小结:这份清单把前面 29 章的可验收点收拢成七组自检项——协议与模型保证兼容与唯一性,连接与网关保证掉线可控,投递与可靠性保证不丢不重不乱,群聊保证分档与成员一致性,存储与扩容保证水位与可迁移,安全保证越权与合规边界,观测与演练保证出问题时能发现、能止血、能回滚。上线前逐项拿到证据,IM 系统的第一道防线才算立住。

笔记加载中…