一个已上线运行的内容博客平台,支持多用户注册、内容创作、分类管理与互动沉淀。项目由我独立设计、开发并部署上线,目前线上稳定运行,架构可直接复用于企业内容管理、社区、后台管理系统等场景。
【核心功能模块】
用户模块:注册、登录(JWT 无状态鉴权 + BCrypt 密码加密)、退出登录、个人中心(昵称与头像维护、修改密码、头像文件上传)。
内容模块:文章的发布、编辑、删除、分页浏览与详情查看;分类的增删改查;文章浏览量统计。
互动模块:评论(查看/发布/删除)、点赞、收藏,以及“我的文章”“我的收藏”列表。
系统支撑:统一响应格式与全局异常处理、登录失败锁定、接口限流、Swagger 在线接口文档。
【业务流程】 用户注册或登录后,由服务端签发 JWT 令牌,前端保存并随每次请求携带 → 在首页分页浏览文章列表、按分类筛选 → 进入详情页阅读(浏览量自动 +1,可点赞、收藏、评论)→ 在创作页撰写文章并选择分类发布 → 在个人中心管理自己的文章、收藏与账号资料。
【交付说明】 项目提供完整接口文档(Swagger / Apifox 可直接导入),配置按 dev/prod 多环境拆分,本地开发与线上部署互不干扰,支持替换 jar 包快速迭代上线,便于后续二次开发与长期维护。
【整体架构与设计思路】 采用前后端分离架构:前端为浏览器端页面(HTML/CSS/JavaScript + fetch),后端为 Spring Boot 提供的 RESTful API,两端以 JSON 交互、以 JWT 完成无状态认证。后端严格分层:Controller(接收参数、返回统一结果)→ Service(业务逻辑)→ Mapper(MyBatis 操作 MySQL),实体与响应对象分离,配合统一响应结构与全局异常处理,便于二次开发和维护。Redis 承担缓存与计数职责:JWT 登出黑名单、登录失败计数、文章详情缓存、点赞收藏去重、接口限流计数。
【我负责的部分与结果】 我独立负责该项目的需求梳理、数据库设计、后端接口开发、前端页面与线上部署全流程:设计 4 张核心数据表(用户、文章、分类、评论),实现 25 个 RESTful 接口、8 个功能页面。项目已部署在阿里云服务器(Ubuntu 22.04),使用 1Panel 管理 MySQL/Redis/Nginx,通过 Nginx 反向代理 80 → 8085 对外提供服务,并支持替换 jar 包的方式迭代上线。
【难点与解决方案】
详情页读多写少、数据库压力大:引入 Redis 做 Cache Aside 缓存,并针对缓存穿透(空值标记短过期时间)、击穿(互斥锁 + 重试)、雪崩(随机过期时间)分别做防护;写操作后主动删除缓存以保证一致性。
登录被暴力尝试、评论被刷屏:用 Redis 计数器 + TTL 实现登录失败 5 次锁定 5 分钟、评论 60 秒内最多 3 条,并把限流逻辑收敛到拦截器统一校验,避免每个接口重复实现。
点赞、收藏的重复提交与列表查询:用 Redis Set 天然去重,判断“我是否点过赞”;用数据库计数字段保存总数,并维护“用户 → 收藏文章”的反向索引支撑收藏列表查询。
头像上传后重新发版图片丢失:文件写入 jar 包之外的独立目录、以 UUID 重命名,再通过静态资源映射暴露为可访问 URL,本地与线上表现一致。
异常信息直接抛给前端不友好:增加全局异常处理(@RestControllerAdvice)与自定义业务异常,统一返回友好提示,异常堆栈仅记日志、不对外暴露。