面向高并发实时通信场景,设计并实现分布式 IM 系统,采用 Comet 网关层 + Logic 业务层 + Job 异步任务层 的分层架构,基于 WebSocket、gRPC、Kafka、Redis、MySQL 实现长连接接入、消息路由、实时推送、离线持久化与多端同步,支持服务独立扩缩容与故障隔离。
1. 负责 Comet / Logic / Job 三层服务核心链路设计与实现:客户端通过 WebSocket 与 Comet 保持长连接,Comet 与 Logic 之间基于 gRPC 双向流 + Protobuf 通信,Logic 与 Job 之间通过 Kafka 异步解耦,完成消息收发、路由分发、推送与持久化;
2. 基于 Redis 实现 token 鉴权、用户/房间路由、消息序号、在线人数与已读游标管理;单聊场景采用 Hash + INCR 支持用户多连接路由、多端同步与历史消息增量拉取,聊天室场景采用 Set 维护房间路由关系,支撑消息广播与房间下线处理;
3. 设计 Kafka 双消费组机制:推送消费组负责低延迟下行推送,结合指数退避、超时控制、DLQ 日志提升失败场景下的可恢复性;持久化消费组负责离线消息写入 MySQL,结合唯一键实现幂等去重;
4. 针对消息热路径持续优化:将 Logic 中同步 MySQL 操作改为 Job 异步持久化,引入本地路由缓存并结合 shared_mutex 降低 Redis 查询开销,将 Comet 到 Logic 的逐条 Unary 调用改为 gRPC 双向流;在多 WebSocket 连接并发压测下,单聊场景吞吐由 8200 QPS 提升至约 5 万 QPS。