本项目面向即时通讯与实时互动场景,主要解决传统系统在高并发连接、低延迟消息投递、多端同步和离线消息可靠存储方面的问题。适用于企业内部沟通、社交聊天、直播聊天室、视频弹幕等业务场景。随着用户规模增长,单体架构难以同时支撑大量长连接、消息路由和消息持久化,因此项目采用分布式架构,将接入、业务处理、异步推送和落库解耦,提升系统的扩展性、稳定性和吞吐能力。
点击空白处退出提示
本项目面向即时通讯与实时互动场景,主要解决传统系统在高并发连接、低延迟消息投递、多端同步和离线消息可靠存储方面的问题。适用于企业内部沟通、社交聊天、直播聊天室、视频弹幕等业务场景。随着用户规模增长,单体架构难以同时支撑大量长连接、消息路由和消息持久化,因此项目采用分布式架构,将接入、业务处理、异步推送和落库解耦,提升系统的扩展性、稳定性和吞吐能力。
项目主要包含单聊、聊天室、用户登录鉴权、历史消息拉取、最近会话管理、未读数统计、多端在线同步等功能模块。客户端通过 WebSocket 与服务端保持长连接,支持实时收发消息;服务端支持 token 鉴权、用户上下线感知、房间成员管理和消息广播;用户离线时消息会异步持久化到 MySQL,上线后可按会话增量拉取历史消息;系统还提供会话列表刷新、已读游标维护、滑动窗口限流等能力,满足 IM 系统的核心业务需求。
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。




评论