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)

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

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

相关推荐
碎碎念_4922 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
六bring个六3 小时前
open Harmony中分布式软总线的学习任务清单
分布式·学习·c/c++·open harmony
wuqingshun3141593 小时前
说一下 Kafka 中关于事务消息的实现?
分布式·kafka
Fuzio6 小时前
用 Spring Boot + Vue + Fuzio 构建现代 Java 桌面应用
vue.js·spring boot
乐观的Terry7 小时前
1、为什么要自己造发布系统
java·spring boot·后端·spring cloud·架构
名字还没想好☜7 小时前
用 Redis + Redisson 实现分布式锁:从踩坑到生产可用
java·redis·分布式·junit·分布式锁·redisson
董可伦9 小时前
Spark 源码 | SparkSubmitArguments 参数解析(三)
大数据·分布式·spark
web行路人9 小时前
Spring Boot 第四周:集成 Spring Security 与 JWT 鉴权实践
spring boot·后端·spring
运维行者_9 小时前
广域网性能监控:分布式IT架构下的链路质量保障
开发语言·网络·分布式·后端·架构·数据库架构
QQ_216962909610 小时前
【项目编号:project05966】SpringBoot/Vue 电影推荐系统:用户端推荐、电影资讯与后台数据管理全流程
vue.js·spring boot·后端