🚀 Lucky IM:一款高性能即时通讯,从零到亿万级并发!
✨ 一款开源、现代化、高性能的即时通讯(IM)项目,支持万级并发连接,完整覆盖消息、音视频、推送、文件传输等核心能力。
Github主页地址: github.com/LucklySpace
📱移动端预览
| |
💻桌面端预览
✉️ 聊天页面
📺️ 视频通话
🔤 多语言支持
📄 文件在线预览
🍀 项目简介
Lucky IM Server 是一个基于 Spring Boot 3 + Spring Cloud Alibaba 构建的高性能即时通讯后端系统。
它采用 微服务架构,模块拆分清晰,轻松支撑万级用户并发连接。
从登录认证到消息推送,从音视频通话到文件传输,它提供了一个 完整的即时通讯后端解决方案,非常适合:
- 想构建聊天、社交或客服系统的开发者
- 想学习分布式消息系统与微服务架构的工程师
- 想深入理解 WebRTC、RabbitMQ、SRS 实战的同学
🔧 技术架构一览
| 技术栈 | 说明 |
|---|---|
| Java 21 | 利用虚拟线程与现代语法,性能更强 |
| Spring Boot 3.2.0 | 完美支持 JDK 21,简洁高效 |
| Spring Cloud Alibaba | 一站式微服务治理方案 |
| Netty | 高性能 WebSocket 长连接管理 |
| RabbitMQ | 异步解耦、消息分发中心 |
| Redis | 会话缓存与连接状态管理 |
| MinIO | 文件与图片对象存储 |
| SRS + WebRTC | 音视频通话支持 |
| PostgreSQL + MyBatis Plus | 数据持久化层 |
| Docker + Nginx | 容器化部署与流量分发 |
💡 一句话总结:
“Spring Cloud 构架出骨架,RabbitMQ 传递血液,Netty 管理神经,SRS 负责声音与表情。”
💬 核心通讯能力
📨 即时消息系统
- 支持文本、图片、语音、视频、文件消息
- 群聊、单聊统一通道
- 离线消息自动补发
- 支持消息状态跟踪(发送中、已送达、已读)
🎥 音视频通话
- 基于 WebRTC + SRS
- 一对一 / 群组通话
- 低延迟、自适应网络环境
💾 文件传输
- MinIO 对象存储
- 支持断点续传、文件预览、秒传
🔐 安全机制
- JWT + RSA 登录认证
- 敏感数据加密存储
- 权限控制与防重放机制
🏗️ 系统模块划分
im-server/
├── im-gateway/ # 网关服务(限流 + 路由)
├── im-auth/ # 认证服务(JWT + 登录注册)
├── im-connect/ # 长连接服务(WebSocket、消息推送)
├── im-server/ # 业务核心(消息、群聊、文件)
├── im-common/ # 公共模块(工具、模型、协议)
├── im-database/ # 数据库服务(数据持久化)
└── docs/ # 项目文档
每个模块均可独立部署、独立扩容,真正做到“微服务解耦”。
🔄 一条消息的旅程
一条消息,从客户端发出到对方接收,要经历怎样的“旅程”?👇
客户端 → im-gateway → im-server → RabbitMQ → im-connect → 客户端
🚉 Step by Step
1️⃣ im-server:可靠生产
- 消息持久化 + 写入 outbox(事务保证)
- 发布至 RabbitMQ(开启 publisher confirm)
- 失败自动重试(定时扫描补偿)
2️⃣ RabbitMQ:可靠分发
- 队列/交换机全 durable
- 消息 persistent + DLX 死信队列
- 保证不丢、不重、不乱
3️⃣ im-connect:可靠投递
- 消费消息,查 Redis 获取目标连接
- WebSocket 投递到客户端
- 客户端 ACK 确认后标记为已送达
4️⃣ 客户端:可靠确认
- 接收后回 ACK
- 消息去重、存储、展示
🧰 快速上手
1️⃣ 启动基础组件
docker run -d --name redis -p 6379:6379 redis
docker run -d --name nacos -p 8848:8848 nacos/nacos-server:v2.2.1
docker run -d --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
docker run -d --name minio -p 9000:9000 -p 9090:9090 minio/minio server /data
2️⃣ 启动应用服务
# 依次启动服务
im-database → im-auth → im-server → im-connect → im-gateway
或直接一键启动:
./deploy-all.sh
3️⃣ 浏览器访问
- 🌐 网关服务:http://localhost:9191
- 🔑 认证中心:http://localhost:8084
- 💬 业务服务:http://localhost:8085
- 🐰 RabbitMQ 管理:http://localhost:15672
- 💾 MinIO 控制台:http://localhost:9090
💡 架构亮点
✅ Outbox Pattern 消息可靠性
防止消息丢失与重复投递,IM 消息一致性的关键保障。
♻️ 可水平扩展的连接层
im-connect 节点可动态扩容,用户连接注册至 Redis,支持亿万级用户分片。
🧱 模块化与可插拔设计
各功能模块解耦,支持独立开发与快速集成。
🎙️ WebRTC + SRS 实时通话
轻量自建音视频服务,无需第三方 SDK。
🧠 写在最后
即时通讯系统是后端工程师的“硬核课题”:
它融合了 网络编程 + 分布式系统 + 消息一致性 + 并发优化 的全部精华。
Lucky IM 的目标,是帮助你从
“能跑通聊天” ➜ “理解架构设计与高性能实现”
⭐ 如果觉得项目对你有帮助,请点个 Star 支持一下!
这将是对开源作者最大的鼓励 ❤️