4K QPS 博客社区:CCBlog 全栈开源,Springboot项目实战,Docker一键部署

引入

学习java有一段时间了,但是总感觉看着视频写代码少了点意思,更喜欢自己创作的感觉,于是阅读了一些开源代码项目,最终确定下来写一个博客社区网站。

本来想的是简单试试水,但是真正写起来遇到问题很多,随着功能逐渐完善,就想着干脆写一个成熟一点的项目,于是引入了很多中间件来优化性能,项目的缓存结构是最复杂的部分,经历了多轮重构。

由于对很多后端和前端技术也是边学变改,因此项目总耗时较长,一共约600h,这个过程中把很多会踩的坑都踩了一遍。

该项目作为高并发和性能优化的学习入门应该是没有问题的,还请大佬轻喷🙏🙏🙏

项目简介

本项目是一个博客社区项目,采用前后端分离架构 开发,基本实现博客所有相关的功能,该项目也可作为内容社区 的模板。项目包括五大模块分别是用户、文章、评论、通知、聊天模块后端所有核心模块均为独立自主开发 ,项目注释完整(个人代码习惯不是AI生成所以注释多),非常适合学习交流和二次开发。

功能实现

  • 无限层级评论树,无限叠楼
  • 通知点击跳转评论,自动置顶评论并展开到目标
  • 用户聊天WebSocket 实时聊天,支持聊天框预览 ,支持删除撤回
  • AI 大模型接口 接入,目前支持Qwen3,AI回答SSE流式渲染
  • Docker 一键部署,三行代码运行

项目亮点

  • 双层缓存架构:Redis + Caffeine
  • 批量聚合:Disruptor + Redis
  • 异步批量落库:Redis + RabbitMQ + Mysql
  • 批操作优化:Lua+Pipeline批量操作Redis、Mysql批量读写

项目已在10000篇文章,1000用户,每篇文章Payload约为1.5KB的环境下使用Jmeter 对文章详情接口实测, 在500并发的测试环境下取得了4000QPS,0 错误 的成绩。

下图为项目的整体结构

项目展示

项目整体采用活泼可爱的界面和交互,操作体验好。


搜索简易实现


用户主页


通知跳转评论置顶渲染


实时聊天实时预览渲染,支持删除撤回(使用两个浏览器同时发送得到)


大模型对话,后续会更新加入更多模型。

技术栈

核心技术栈:

  • 前端:Vue3 + Vite + TypeScript

  • 后端:Spring Boot 3.x + MyBatis

  • 缓存:整体 Redis 7 + Caffeine 双层缓存,ConcurrentMap 辅助

  • 性能优化:Disruptor + Lua

  • 消息队列:RabbitMQ 3.12

  • 数据库:MySQL 8.0

  • 测试:Jmeter

  • 部署:Docker + Nginx

这些技术都是在遇到问题后查阅资料并深思熟虑后引入的技术,经过了类似技术的横向对比,而非技术栈的简单堆砌

项目地址

项目目前已经全部开源,包括前端代码、后端代码和Docker运行代码,下面是仓库地址:

GithubCCBlog-Github

GiteeCCBlog-Gitee

一键部署

注意 :运行前请先确保 Docker 功能正常,Win 下安装和打开 Docker DesktopLinux 下配置好 Docker就可以,可使用 docker version 确认。

bash 复制代码
git clone https://github.com/C2Z666/ccblog.git
cd ccblog/ccblog-docker
docker compose up

看到 server started 后到浏览器输入 localhost:8080 即可访问,默认用户包括czc、lcx、rk、ywl、ccblog,密码都是123,可以登录测试哦。图片上传和大模型聊天需要额外配置才可用。

如果项目对您有帮助,给项目点一个Star⭐吧!😊😊😊感谢支持!🙏🙏🙏

后续计划

个人精力时间有限,项目目前还未全部重构完毕,并且还有功能未加入。部署到云服务器正在筹备,在申请域名备案中。

最后,开发的涉及面太广太多,本人技术有限,不可能考虑到面面俱到。欢迎大家测试并提出问题,提出心愿功能,欢迎对开发感兴趣的道友合作开发,一起学习交流,同时欢迎大佬指导架构,作者虚心求教!😊😊😊

本人联系方式:

QQ:1839156312

后续我会整理开发过程中记录的文档,发布一系列关于技术实现(评论展开、异步落库、批量聚合、实时聊天系统、AI大模型接入等)、Jmeter测试、踩坑记录、性能优化、docker使用的教程和记录,欢迎持续关注!

相关推荐
JIngJaneIL22 分钟前
基于java+ vue交友系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·交友
苹果酱056730 分钟前
解决linux mysql命令 bash: mysql: command not found 的方法
java·vue.js·spring boot·mysql·课程设计
horizon72741 小时前
【Redis】Redis 分片集群搭建与故障转移实战指南
java·redis
qq_455760851 小时前
docker - 网络
运维·docker·容器
大学生资源网2 小时前
基于springboot的乡村信息化管理系统的研究与实现(源码+文档)
java·spring boot·后端
Java水解2 小时前
Spring Bean生命周期深度剖析:从创建到销毁的完整旅程
spring boot·后端
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue职位管理推荐系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Angletank2 小时前
SpringBoot用JPA接口实现分页和排序
windows·spring boot·后端
m0_488777653 小时前
Docker容器技术场景化操作实战及网络模式部署
运维·docker·容器·网络模式
2501_939909053 小时前
Docker
运维·docker·容器