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使用的教程和记录,欢迎持续关注!

相关推荐
sanduo1121 小时前
docker 构建编排过程中常见问题
运维·docker·容器
y***n6141 小时前
Redis设置密码
数据库·redis·缓存
l***37092 小时前
基于SpringBoot和Leaflet的行政区划地图掩膜效果实战
java·spring boot·后端
小坏讲微服务2 小时前
Spring Boot 4.0 与 Spring Cloud Alibaba 2025 整合完整指南
java·spring boot·分布式·后端·spring cloud·微服务·架构
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于Spring Boot的酒店管理系统为例,包含答辩的问题和答案
java·spring boot·后端
小时候的阳光3 小时前
使用Docker版Percona Xtrabackup备份恢复MySQL8.0.x
mysql·docker·备份·xtrabackup
今天你TLE了吗3 小时前
通过RocketMQ延时消息实现优惠券等业务MySQL当中定时自动过期
java·spring boot·后端·学习·rocketmq
v***16023 小时前
【Redis】设置Redis访问密码
数据库·redis·缓存
eddy-原3 小时前
Docker与DevOps实战训练:从容器管理到全链路项目部署
docker·容器·devops