项目经历
仿微信即时通讯系统 | 2024.XX - 2024.XX
项目描述: 基于前后端分离架构开发的分布式即时通讯系统,包含跨平台桌面客户端和高并发后端服务,实现了类似微信的完整聊天功能,支持文字、图片、视频消息收发,具备集群部署和高可用能力
技术架构:
前端技术栈:
- 桌面应用: Electron + Vue3 + Element Plus,构建跨平台桌面客户端
- 状态管理: Pinia 进行全局状态管理,Axios 处理 HTTP 请求
- 本地存储: SQLite 数据库支持离线数据持久化和快速查询
- 实时通信: WebSocket 客户端实现与服务端双向通信
- 文件服务: Express 搭建本地文件服务器,处理静态资源访问
- 多媒体: FFmpeg 音视频处理,DPlayer 视频播放,Viewer.js 图片预览
后端技术栈:
- 核心框架: Spring Boot 构建微服务架构,提供 RESTful API
- 数据持久化: MyBatis-Plus + MySQL,实现高效的数据库操作和查询优化
- 网络通信: Netty + WebSocket 实现高性能长连接服务
- 缓存中间件: Redis 缓存热点数据,Redisson 实现分布式锁和集群协调
- 集群部署: 基于 Redis 发布订阅机制实现消息广播,支持多节点集群部署
- 接口文档: Swagger 自动生成 API 文档,提升开发协作效率
核心功能:
- 即时通讯: 支持一对一、群聊等多种聊天模式,消息实时推送
- 多媒体消息: 文字、表情、图片、视频、文件等多种消息类型支持
- 离线消息: 客户端离线时消息服务端持久化,上线后自动同步
- 文件传输: 大文件分片上传,断点续传,支持多种文件格式
- 集群高可用: 多节点部署,单点故障自动切换,保证服务稳定性
- 用户管理: 用户注册登录、好友管理、群组管理等完整社交功能
技术亮点:
- 高并发架构: Netty NIO 模型 + 连接池优化,单节点支持 10K+ 并发连接
- 分布式消息: Redis 发布订阅 + Redisson 分布式锁,实现集群间消息同步
- 数据库优化: MyBatis-Plus 分页插件 + MySQL 索引优化,查询性能提升 70%
- 缓存策略: Redis 多级缓存 + 消息队列,系统响应时间控制在 100ms 内
- 连接管理: WebSocket 心跳检测 + 自动重连机制,保证连接稳定性
- 安全机制: JWT 令牌认证 + AES 消息加密,保障通信安全
系统架构:
- 客户端层: Electron 桌面应用,负责用户交互和本地数据管理
- 网关层: Nginx 负载均衡 + SSL 证书,提供统一入口和安全保障
- 应用层: Spring Boot 集群,处理业务逻辑和 API 服务
- 通信层: Netty 服务器集群,处理 WebSocket 长连接和消息推送
- 数据层: MySQL 主从复制 + Redis 集群,保证数据一致性和高可用
个人职责:
- 架构设计: 负责整体系统架构设计和技术选型,制定开发规范
- 后端开发: 完成 Spring Boot 核心业务模块开发,实现用户、消息、群组等功能
- 通信服务: 基于 Netty 开发 WebSocket 服务器,实现高性能实时通信
- 前端开发: 完成 Electron 客户端核心功能,优化用户体验和性能
- 集群部署: 设计并实现基于 Redis 的分布式消息广播机制
- 性能优化: 数据库索引优化、缓存策略设计,系统整体性能调优
项目成果:
- 系统支持 5000+ 并发用户同时在线,消息传输延迟低于 50ms
- 通过集群部署实现 99.9% 服务可用性,支持水平扩展
- 完整的开发文档和 API 接口文档,便于后续维护和功能扩展
专业技能
熟练掌握 Java,熟悉 Java 8 及以上版本,掌握面向对象编程、Lambda 表达式、。
熟练使用 Spring、Spring Boot、Spring MVC 等框架进行后端开发,了解微服务架构。熟练掌握 MySQL,能编写高效 SQL 语句及进行索引优化;了解 Oracle;熟悉 Redis 缓存机制。
熟练掌握 MyBatis、MyBatis-Plus,了解 Hibernate,具备良好的数据库建模与 ORM 映射能力。
熟练使用 HTML、CSS、JavaScript/typeScript,能够熟练使用 Vue3 + Element Plus 进行前端开发。
能够使用 Git 进行代码版本管理,具备良好的团队协作与代码管理能力。
具备网络编程基础,了解 TCP/IP、HTTP 、ws协议,基于 Netty 与标准 WebSocket 协议,实现低延迟双向推送即时通讯。
熟练使用 Swagger 自动生成文档、配合团队之间的协作,Postman 编写测试集合。项目经历
**项目描述:**基于 Spring Boot + Electron-Vite 实现的跨平台桌面客户端,支持单聊/群聊、好友管理、消息截图/媒体发送、离线存储与在线推送。
**前端技术栈:**
Electron + Vue3 + Element Plus,构建跨平台桌面客户端 Pinia 进行全局状态管理,Axios 处理 HTTP 请求
SQLite 数据库支持离线数据持久化和快速查询
WebSocket 实现客户端与服务端双向通信,重连策略,发送心跳。
Express 搭建本地文件服务器,处理静态资源访问 FFmpeg 音视频处理,DPlayer 视频播放,Viewer.js 图片预览
**后端技术栈:**
Spring Boot 构建服务架构,提供 RESTful API
MyBatis-Plus + MySQL,实现高效的数据库操作和查询优化
基于 Netty 的 WebSocket 实现长连接推送模块,实现心跳检测
使用redis实现心跳缓存,token权限管理,Redisson 实现集群协调,实现集群间消息同步。
Swagger 自动生成 API 文档,提升开发协作效率
**核心功能:**
支持一对一、群聊等多种聊天模式,消息实时推送
支持文字、表情、图片、视频、文件、截图等多种消息类型
用户注册登录、好友管理、群组管理等完整社交功能
后台功能提供用户在线状态,是否强制下线,支持客户端版本推送,等一些对用户,群组的管理操作。
客户端离线时消息服务端持久化,上线后自动同步
服务器支持集群部署、数据同步
WebSocket 心跳检测 + 自动重连机制,保证连接稳定性荣誉奖项
全国程序设计天梯赛三等奖
传智杯程序设计挑战赛校赛一等奖TODO
1、redis实现心跳缓存,作用用于查看在线情况
