Lucky IM:一款高性能即时通讯,从零到亿万级并发!

191 阅读4分钟

🚀 Lucky IM:一款高性能即时通讯,从零到亿万级并发!

✨ 一款开源、现代化、高性能的即时通讯(IM)项目,支持万级并发连接,完整覆盖消息、音视频、推送、文件传输等核心能力。

Github主页地址: github.com/LucklySpace

📱移动端预览

微信图片_20251004101621_49486_139.jpg微信图片_20251002182912_109_167.jpg
微信图片_20251004103355_119_167.jpg微信图片_20251004103346_118_167.jpg

💻桌面端预览

✉️ 聊天页面

message_search.png

📺️ 视频通话

group_call.png

🔤 多语言支持

language.png

📄 文件在线预览

preview_file.png


🍀 项目简介

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️⃣ 浏览器访问


💡 架构亮点

✅ Outbox Pattern 消息可靠性

防止消息丢失与重复投递,IM 消息一致性的关键保障。

♻️ 可水平扩展的连接层

im-connect 节点可动态扩容,用户连接注册至 Redis,支持亿万级用户分片。

🧱 模块化与可插拔设计

各功能模块解耦,支持独立开发与快速集成。

🎙️ WebRTC + SRS 实时通话

轻量自建音视频服务,无需第三方 SDK。

🧠 写在最后

即时通讯系统是后端工程师的“硬核课题”:
它融合了 网络编程 + 分布式系统 + 消息一致性 + 并发优化 的全部精华。

Lucky IM 的目标,是帮助你从

“能跑通聊天” ➜ “理解架构设计与高性能实现”

⭐ 如果觉得项目对你有帮助,请点个 Star 支持一下!
这将是对开源作者最大的鼓励 ❤️