福师畅聊 - 全栈开发
基于 Spring Boot、Netty、Redis 开发的即时通讯应用,负责全栈开发工作,包括前端和后端。
项目背景
福师畅聊是一款面向高校师生的即时通讯应用,旨在为校园用户提供便捷的沟通工具。项目需求包括支持私聊、群聊、离线消息、文件传输、语音视频通话等功能,同时需要保证系统的高并发性能和稳定性。作为全栈开发工程师,我负责从架构设计到功能实现的全流程开发工作。
技术架构
项目采用前后端分离架构,后端基于 Spring Boot 框架,使用 Netty 实现高性能的实时消息推送,Redis 作为缓存和消息队列,MySQL 持久化存储用户数据和聊天记录,MinIO 处理文件存储。前端使用 Vue 3 + TypeScript 构建,通过 WebSocket 与后端保持实时连接,实现消息的即时推送和接收。
核心功能
实时消息推送:基于 Netty 长连接和 WebSocket,支持私聊、群聊的实时消息推送
离线消息处理:用户离线时消息存储到 Redis,上线后自动推送离线消息
文件传输:支持图片、文档等多种文件类型的上传和下载,使用 MinIO 对象存储
语音视频通话:集成 WebRTC 实现点对点的语音视频通话功能
好友管理:支持好友添加、删除、分组管理等功能
群组功能:支持创建群组、邀请成员、群组消息推送等功能
消息已读回执:实时显示消息的已读状态
用户设置:支持个人信息修改、隐私设置、通知设置等功能
技术栈
工作职责
- 1
设计并实现基于 Netty 的实时消息推送系统,支持私聊、群聊、离线消息等核心功能
- 2
开发 RESTful API 接口,实现用户认证、消息管理、好友关系等后端功能
- 3
构建 Vue 3 + TypeScript 前端应用,实现消息列表、聊天界面、用户设置等功能
- 4
集成 WebSocket 实现前后端实时通信,确保消息即时送达
- 5
设计 Redis 缓存策略,优化消息查询性能和系统响应速度
- 6
使用 Docker 容器化部署,配合 Nginx 实现负载均衡和 HTTPS 配置
技术难点与解决方案
高并发消息推送性能优化
使用 Netty 的 NIO 模式和线程池优化,结合 Redis 的 Pub/Sub 机制实现消息分发,通过连接池管理减少连接创建开销,最终支持 1000+ 并发连接,消息延迟控制在 100ms 以内
离线消息存储和推送
设计离线消息存储策略,用户离线时消息存储到 Redis Sorted Set,用户上线时通过定时任务批量推送,同时设置消息过期时间避免内存占用过大
前端性能优化
使用 Vue 3 的 Composition API 和响应式系统优化,实现虚拟滚动减少 DOM 操作,使用 Web Worker 处理消息历史记录查询,最终将页面加载时间优化至 0.8 秒
消息可靠性保证
实现消息确认机制,发送方收到接收方的确认后才标记为已送达,对于未确认的消息设置重试机制,确保消息送达率达到 100%
项目成果
实现了支持 1000+ 并发连接的实时消息系统
前端页面加载速度优化至 0.8 秒,用户体验显著提升
系统稳定性达到 99.9%,消息送达率 100%
代码质量优秀,通过了团队代码审查,获得好评