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)

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

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

相关推荐
陈果然DeepVersion3 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(十)
java·spring boot·ai·kafka·面试题·向量数据库·rag
摇滚侠4 小时前
Spring Boot3零基础教程,Reactive-Stream 四大核心组件,笔记106
java·spring boot·笔记
一叶飘零_sweeeet4 小时前
幂等性 VS 分布式锁:分布式系统一致性的两大护法 —— 从原理到实战的深度剖析
分布式·分布式锁·接口幂等
陈果然DeepVersion4 小时前
Java大厂面试真题:Spring Boot+微服务+AI智能客服三轮技术拷问实录(六)
java·spring boot·redis·微服务·面试题·rag·ai智能客服
更深兼春远4 小时前
Spark on Yarn安装部署
大数据·分布式·spark
Mxsoft6196 小时前
电力设备绝缘状态分布式光纤传感实时监测与多维度诊断技术
分布式
Java爱好狂.6 小时前
分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
java·数据库·分布式·分布式id·es·java面试·java程序员
爱宇阳6 小时前
从容器化到自动化:Spring Boot 项目 Docker 部署与 GitLab CI/CD 集成 Harbor 全流程
spring boot·docker·自动化
极造数字7 小时前
从EMS看分布式能源发展:挑战与机遇并存
人工智能·分布式·物联网·信息可视化·能源·制造