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/             # 实体类定义

核心功能

  1. 即时通讯

    • 基于 Netty 的 WebSocket 集群聊天服务
    • 单聊与群聊支持
    • 用户心跳机制与连接管理
  2. 消息处理

    • 离线消息存储与同步
    • 消息广播与集群内同步
    • 多媒体消息(图片 / 语音 / 视频)处理与存储
  3. 用户功能

    • 用户认证与授权
    • 黑名单管理与限流
    • 地理位置相关功能(漂流瓶)
  4. 系统支撑

    • 服务动态扩缩容
    • 分布式锁与资源共享
    • 负载均衡与高可用设计

快速开始

环境要求

  • 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

运行服务

  1. 启动依赖的中间件服务(可通过 Docker 快速部署)
  2. 分别启动各微服务模块:
    • 网关服务(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)

统一入口,实现请求路由、负载均衡等功能

需要源码及部署过程可私信

相关推荐
初次攀爬者17 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺17 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart18 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
Nyarlathotep01131 天前
SpringBoot Starter的用法以及原理
java·spring boot
dkbnull2 天前
深入理解Spring两大特性:IoC和AOP
spring boot
洋洋技术笔记2 天前
Spring Boot条件注解详解
java·spring boot
洋洋技术笔记3 天前
Spring Boot配置管理最佳实践
spring boot
用户8307196840824 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
初次攀爬者4 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
大道至简Edward4 天前
Spring Boot 2.7 + JDK 8 升级到 Spring Boot 3.x + JDK 17 完整指南
spring boot·后端