项目总览
南生论坛(Nan's BBS)是一个基于 Spring Boot 3.x 与 Vue 框架构建的前后端分离社区系统。该项目采用 AGPL 3.0 协议开源,旨在为大厂微服务架构学习及中小型社区搭建提供高性能、多端适配的解决方案。系统分为用户系统(南生论坛)和管理系统(南生运营)两部分,支持商业授权使用 (README.md:3-15)。
项目定位为仿掘金风格的现代化论坛平台,具备优雅的界面设计与全面的功能覆盖。其核心价值在于通过前后端分离架构实现高效的性能表现与灵活的多端适配能力,同时提供完善的运营管理后台以支撑社区生态的健康发展 (README.md:45-50)。
技术架构
本项目采用经典的分层架构与微服务组件,构建了一个高可用、易扩展的论坛系统。
后端技术栈
后端核心基于 Spring Boot 3.5.11 构建,集成了多种企业级中间件与框架:
- 核心框架:Spring Boot 3.x 作为基础运行时框架。
- RPC 与服务治理:集成 Dubbo (v3.3.2) 实现远程过程调用,配合 Zookeeper (v3.3.2) 作为注册中心,为微服务架构提供支撑 (pom.xml:40-41)。
- 数据持久化:使用 MyBatis (v3.5.19) 作为 ORM 框架,配合 MySQL 数据库存储核心业务数据;同时引入 MongoDB 处理大数据存储场景 (pom.xml:42-43)。
- 缓存与会话:集成 Redis (v3.5.11) 用于缓存加速,并使用 Redisson (v3.42.0) 处理分布式场景下的并发控制与复杂对象操作 (pom.xml:51-52)。
- 安全与权限:采用 Shiro (v3.0.0-alpha-1) 进行身份认证与权限管理,结合 JWT (v3.15.0) 实现无状态认证 (pom.xml:57-58)。
- 消息队列:引入 RocketMQ 处理异步消息与削峰填谷。
- 实时通信:使用 WebSocket 支持实时消息推送。
- 对象存储:集成 七牛云 SDK 处理图片与文件存储 (pom.xml:62)。
前端技术栈
前端部分提供了 Vue 2 和 Vue 3 两个版本的独立仓库,采用现代化工程方案:
- 核心框架:Vue.js (v2/v3) 结合 Vuex 进行状态管理。
- UI 组件:使用 Ant Design of Vue 构建用户界面。
- 编辑器:集成 mavonEditor (Markdown) 和 wangEditor (富文本) 满足不同发帖需求。
- 数据可视化:引入 ECharts 展示运营数据。
系统架构图
下图展示了系统的整体架构布局,涵盖了从客户端接入到数据存储的完整链路 (README.md:41-44)。
正在加载图表渲染器...
架构说明:
- 客户端层:支持 Web 端与移动端访问,通过负载均衡分发请求。
- 应用服务层:采用 Maven 多模块结构,
bbs-rest作为主要接口入口,通过 Dubbo 调用bbs-user和bbs-article等微服务模块。 - 中间件层:Redis 提供缓存支持,RocketMQ 处理异步任务(如帖子发布后的通知),Zookeeper 维护服务间的调用关系。
- 数据存储层:MySQL 存储用户与核心业务数据,MongoDB 处理非结构化数据,七牛云托管静态资源。
模块结构
项目采用 Maven 多模块管理,通过父 POM 统一管理依赖版本与构建配置。这种结构有利于模块解耦与团队协作。
核心模块划分
根据 pom.xml 定义,项目主要包含以下核心模块 (pom.xml:17-22):
- bbs-common:公共模块。
- 职责:存放全局通用工具类、实体基类、常量定义以及公共配置。
- 关键依赖:被其他所有业务模块依赖,避免代码重复。
- bbs-user:用户服务模块。
- 职责:处理用户注册、登录、个人信息管理、积分体系及权限校验。
- 关键 API:用户信息查询、密码加密、Token 生成。
- 数据结构:User(用户实体)、Role(角色)、Permission(权限)。
- bbs-article:文章/内容服务模块。
- 职责:负责帖子的发布、编辑、删除、评论、点赞及分类管理。
- 关键 API:文章 CRUD 接口、评论列表接口。
- 数据结构:Article(文章)、Comment(评论)、Category(分类)。
- bbs-rest:REST 接口模块。
- 职责:系统的对外入口,负责接收前端 HTTP 请求,解析参数,并调用下游的 User 或 Article 服务。
- 关键组件:Controller 层、全局异常处理器、拦截器。
版本管理策略
项目使用 ${revision} 占位符统一管理版本号,当前版本为 3.0.0-SNAPSHOT。父 POM 中定义了所有第三方依赖的版本,确保子模块引用时版本一致 (pom.xml:24-31)。例如,nansheng-common.version 被显式指定为 3.5.11-open-1.1.0,体现了对内部组件的精细化管理。
功能概览
南生论坛功能设计全面,覆盖了社区运营的核心场景。
核心功能结构
系统功能分为“用户前台(南生论坛)”与“管理后台(南生运营)”两大部分 (README.md:77-86):
- 南生论坛(用户端):
- 内容互动:支持 Markdown 与富文本发帖、评论回复、点赞收藏。
- 社交体系:关注用户、私信通知、个人中心。
- 社区治理:举报机制、敏感词过滤。
- 南生运营(管理端):
- 用户管理:用户列表、封禁解封、角色权限分配。
- 内容管理:帖子审核、置顶推荐、分类管理。
- 系统配置:网站设置、公告发布、数据统计看板。
关键业务数据流
以下时序图展示了用户发帖这一核心场景的数据流转过程,体现了前后端分离架构下的交互逻辑。
正在加载图表渲染器...
流程说明:
- 鉴权:请求首先到达
bbs-rest,通过 Shiro 和 JWT 验证用户身份。 - 业务处理:
bbs-rest通过 Dubbo RPC 调用bbs-article服务。 - 存储分离:文章服务将元数据存入 MongoDB(或 MySQL,视具体配置而定),并将图片等资源上传至七牛云。
- 异步解耦:发布成功后,向 RocketMQ 发送消息,触发积分增加或粉丝通知等后续操作,避免阻塞主流程。
项目目录结构
后端项目遵循标准的 Maven 目录布局,代码结构清晰 (README.md:87-96)。
- src/main/java:存放 Java 源代码。
controller:接口层定义。service:业务逻辑层。dao/mapper:数据访问层。entity:数据库实体映射。util:工具类。
- src/main/resources:
application.yml:主配置文件(数据源、Redis、Dubbo 配置)。mapper:MyBatis XML 映射文件。
适用场景与阅读指南
适用场景
- 学习参考:非常适合作为学习 Spring Boot 3.x、Dubbo 3.x 以及前后端分离架构的实战模板。
- 二次开发:基于 AGPL 3.0 协议,个人学习可自由修改,商用需获取授权,适合快速搭建企业内部论坛或技术社区。
- 微服务演进:项目预留了 Dubbo 和 Zookeeper 接口,可作为从单体架构向微服务架构演进的参考案例。
报告阅读路线图
为了帮助开发者快速理解项目全貌,建议按照以下顺序阅读本技术分析报告:
正在加载图表渲染器...
阅读建议:
- 初级开发者:重点关注“项目总览”与“API 接口设计”,快速上手接口调用。
- 架构师/进阶开发者:深入阅读“技术架构”与“核心模块详解”,研究 Dubbo 服务调用细节与分库分表策略。
- 运维人员:参考“部署运维”章节,了解 Docker 容器化配置与中间件集群搭建。
