SpringCloud+Netty集群即时通讯项目
项目简介
本项目是一个基于多种主流技术栈构建的高可用即时通讯(IM)系统,专注于实现千万级用户规模的集群聊天服务。项目采用 SpringCloud 结合 Alibaba 体系构建分层聚合微服务架构,整合 Netty 集群实现高效异步通信,并集成多种中间件提供完善的 IM 功能支持。
技术栈
- 核心框架:Spring Boot 3.0.13、Spring Cloud 2022.0.4、Spring Cloud Alibaba 2022.0.0.0
- 通信框架:Netty 4.1.25.Final(WebSocket 服务器、集群通信)
- 服务注册与发现:Zookeeper(节点注册、分布式锁、在线人数统计)
- 消息队列:RabbitMQ(服务间异步通信、集群内部消息广播、离线消息处理)
- 缓存与存储:
- Redis(动态端口分配、黑名单隔离、限流)
- MinIO(分布式对象存储,处理图片 / 语音 / 视频等文件消息)
- MySQL 8.0.43(业务数据存储)
- 搜索引擎:Elasticsearch(海量数据检索、GEO 地理位置统计)
- 负载均衡:Nginx(集群水平扩展、静态资源发布)
- 容器化:Docker(中间件容器化部署)
- 其他工具:
- FFmpeg、Jcodec(视频处理)
- Jedis(Redis 客户端)
- Curator(Zookeeper 客户端)
- MyBatis-Plus(ORM 框架)
项目结构
plaintext
wechat-dev/
├── api/ # 微服务API模块
│ ├── auth-service-88/ # 认证服务
│ ├── main-service-66/ # 主业务服务
│ ├── file-service-55/ # 文件处理服务
│ ├── base-service/ # 基础服务
│ └── chat-server-875/ # Netty聊天服务器
├── gateway-1000/ # 网关服务
├── wechat-common/ # 公共工具类
└── wechat-pojo/ # 实体类定义
核心功能
即时通讯:
- 基于 Netty 的 WebSocket 集群聊天服务
- 单聊与群聊支持
- 用户心跳机制与连接管理
消息处理:
- 离线消息存储与同步
- 消息广播与集群内同步
- 多媒体消息(图片 / 语音 / 视频)处理与存储
用户功能:
- 用户认证与授权
- 黑名单管理与限流
- 地理位置相关功能(漂流瓶)
系统支撑:
- 服务动态扩缩容
- 分布式锁与资源共享
- 负载均衡与高可用设计
快速开始
环境要求
- JDK 17+
- Maven 3.6+
- Docker(可选,用于中间件部署)
- 中间件:Zookeeper、Redis、RabbitMQ、Elasticsearch、MinIO、MySQL
构建项目
bash
# 克隆项目
git clone <项目仓库地址>
cd wechat-dev# 编译打包
mvn clean install -Dmaven.test.skip=true
运行服务
- 启动依赖的中间件服务(可通过 Docker 快速部署)
- 分别启动各微服务模块:
- 网关服务(gateway-1000)
- 认证服务(auth-service-88)
- 主业务服务(main-service-66)
- 文件服务(file-service-55)
- 聊天服务器集群(chat-server-875,可启动多个实例)
模块详情
聊天服务(chat-server-875)
基于 Netty 实现的 WebSocket 服务器,负责处理实时聊天消息,通过 Zookeeper 实现服务注册与发现,Redis 管理动态端口,RabbitMQ 实现消息广播与离线消息处理。
文件服务(file-service-55)
处理多媒体文件的上传、存储与转换,集成 MinIO 进行分布式存储,使用 FFmpeg 和 Jcodec 处理视频文件,支持语音识别功能。
主业务服务(main-service-66)
提供核心业务逻辑支持,包括朋友圈评论管理等功能,基于 MyBatis-Plus 实现数据访问层。
认证服务(auth-service-88)
负责用户认证与授权,保障系统安全访问。
网关服务(gateway-1000)
统一入口,实现请求路由、负载均衡等功能
需要源码及部署过程可私信
