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)

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

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

相关推荐
豆奶特浓68 分钟前
Java面试模拟:当搞笑程序员谢飞机遇到电商秒杀与AIGC客服场景
java·spring boot·微服务·面试·aigc·高并发·电商
每天进步一点_JL26 分钟前
事务与消息中间件:分布式系统中的可见性边界问题
分布式·后端
踏浪无痕2 小时前
PageHelper 防坑指南:从兜底方案到根治方案
spring boot·后端
静若繁花_jingjing3 小时前
ZooKeeper & Nacos
分布式·zookeeper·云原生
wanhengidc3 小时前
云手机中分布式存储的功能
运维·服务器·分布式·游戏·智能手机·云计算
摇滚侠3 小时前
2025最新 SpringCloud 教程,编写微服务 API,笔记08
笔记·spring cloud·微服务
通往曙光的路上3 小时前
焚决糟糕篇
java·spring boot·tomcat
6***v4173 小时前
spring boot 项目打印sql日志和结果,使用logback或配置文件
spring boot·sql·logback
u***j3243 小时前
HarmonyOS分布式能力核心技术深度解析
分布式·华为·harmonyos
7***n753 小时前
HarmonyOS分布式数据管理
分布式·华为·harmonyos