# wow-note-spring
**Repository Path**: uyevan/wow-note-spring
## Basic Information
- **Project Name**: wow-note-spring
- **Description**: 📚基于SpringCloud,React框架的下一代个人云笔记项目后端.其接入到Redis、MQ、Nacos、MongoDB、Docker等技术栈.
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://note.jfkj.xyz
- **GVP Project**: No
## Statistics
- **Stars**: 80
- **Forks**: 35
- **Created**: 2023-12-25
- **Last Updated**: 2025-12-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, SpringCloud, MongoDB, Redis, MySQL
## README
# wow-note 个人云储笔记
🍔
> 本仓库为后端仓库,前端仓库请访问 [https://gitee.com/uyevan/wow-note-react](https://gitee.com/uyevan/wow-note-react)
>
> 在线预览: [https://note.jfkj.xyz](https://note.jfkj.xyz)
## 项目简介 👨💻
Wow-note 后端基于Spring Cloud微服务架构构建,为云笔记平台提供强大而灵活的服务支持。系统采用多级服务架构,包括网关层、业务服务层和中间件层,实现了高性能、高可用的分布式系统。
后端服务群提供笔记管理、用户认证、实时协作、AI辅助和全文检索等核心功能,同时通过分布式中间件提升系统的可伸缩性和容错能力。通过微服务设计,实现了业务模块的解耦和独立部署,大幅提高了开发效率和系统稳定性。
## 系统架构 🪜

### 微服务架构
- Spring Cloud微服务体系
- Nacos服务注册与配置中心
- Gateway API网关
- Feign声明式服务调用
- Sentinel熔断与限流保护
### 数据存储架构
- 关系型数据库(MySQL)管理用户数据与元数据
- 文档数据库(MongoDB)存储笔记内容
- 搜索引擎(ElasticSearch)提供全文检索
- 缓存系统(Redis)加速数据访问
- 对象存储(MinIO)管理媒体资源
### 消息与日志系统
- RabbitMQ实现可靠消息传递与异步日志记录
- 分布式日志收集与分析
- 操作审计追踪系统
### CI/CD流水线
- Jenkins自动化构建与部署
- 阿里云容器镜像服务托管Docker镜像
- Kubernetes集群部署与编排
- 自动化测试与质量检测
## 功能特性 🎉
### 核心功能
- **用户认证授权**: 基于JWT的安全认证系统,支持多种认证方式
- **笔记服务**: 创建、编辑、删除笔记,支持版本控制
- **集合管理**: 分层组织笔记和文档,提供树形结构管理
- **标签服务**: 灵活标记与分类系统
- **分享服务**: 安全可控的笔记分享机制
- **搜索服务**: 全文检索与多维度查询
- **评论服务**: 互动评论功能
### 技术特性
- **微服务通信**: 基于OpenFeign的RPC服务通信
- **分布式配置**: Nacos实现配置集中管理与动态刷新
- **服务发现**: 自动服务注册与发现
- **API网关**: 请求路由、过滤与负载均衡
- **熔断保护**: Sentinel提供服务保护与流量控制
- **消息队列**: RabbitMQ实现异步处理与事件驱动
- **分布式日志**: 统一日志收集、存储与分析
- **对象存储**: MinIO提供高性能对象存储服务
- **数据一致性**: 分布式事务处理
### 新增特性
- **实时协作服务**: WebSocket实现多用户同时编辑
- **AI辅助服务**: 自然语言处理与智能内容生成
- **异步日志系统**: 基于RabbitMQ的延迟消息处理
- **服务监控**: 全方位系统监控与性能分析
- **自动扩缩容**: 支持服务实例动态伸缩
## 技术栈 🍵
### 核心框架
- **Spring Boot**: 3.0.12
- **Spring Cloud**: 2022.0.0
- **Spring Cloud Alibaba**: 2022.0.0.0-RC2
- **MyBatis-Plus**: 3.5.5
### 微服务组件
- **Nacos**: 服务注册与配置中心
- **Gateway**: API网关
- **OpenFeign**: 声明式服务调用
- **Sentinel**: 流量控制与熔断降级
### 存储技术
- **MySQL**: 8.0.13
- **MongoDB**: 文档存储
- **Redis**: 缓存系统
- **ElasticSearch**: 搜索引擎
- **MinIO**: 8.4.5
### 消息与中间件
- **RabbitMQ**: 消息队列
- **WebSocket**: 实时通信
### 开发与部署
- **Maven**: 项目构建
- **Docker**: 容器化部署
- **Kubernetes**: 容器编排与管理
- **Jenkins**: CI/CD自动化
- **Swagger/Knife4j**: API文档
## 项目结构 🗃️
```
wow-note-spring
├─note-app # 主应用服务
├─note-gateway # API网关服务
├─note-middleware # 中间件服务
└─note-common # 通用工具模块
```
## 部署方案 🚀
### Docker容器化部署
项目使用Docker容器化技术实现应用隔离和快速部署,每个微服务都有独立的Dockerfile:
```dockerfile
# 基础镜像
FROM openjdk:19-jdk-alpine
# 工作目录
WORKDIR /app
# 复制jar包
COPY target/应用名称.jar .
# 暴露端口
EXPOSE 应用端口
# 运行指令
ENTRYPOINT ["java","-jar","/app/应用名称.jar","--spring.profiles.active=prod"]
```
### Kubernetes部署流程
系统使用Kubernetes实现容器编排与服务管理,主要资源配置包括:
1. **部署配置(Deployment)**:
- 每个微服务一个Pod实例
- 设置资源限制与健康检查
- 配置环境变量与服务依赖
2. **服务配置(Service)**:
- ClusterIP类型服务暴露内部接口
- 配置端口映射与服务发现
3. **持久化存储**:
- 使用PersistentVolume实现数据持久化
### CI/CD自动化流程
项目通过Jenkins实现持续集成与部署:
1. **代码拉取**: 从Git仓库拉取最新代码
2. **构建编译**: Maven构建生成JAR包
3. **单元测试**: 执行自动化测试
4. **代码质量**: SonarQube代码质量检测
5. **镜像构建**: 构建Docker镜像
6. **镜像推送**: 推送到阿里云容器镜像仓库
7. **K8s部署**: 自动更新Kubernetes部署
8. **部署验证**: 验证服务是否正常运行
```
代码提交 → Jenkins触发 → 构建测试 → 镜像构建推送 → K8s部署 → 验证服务
```
## 快速开始 🔛
### 环境要求
- JDK 17+
- Maven 3.8+
- Docker & Docker Compose
- MySQL 8.0+
- MongoDB 5.0+
- Redis 6.0+
- Nacos 2.2.0+
- RabbitMQ 3.9+
- ElasticSearch 7.17+
### 本地开发
1. **克隆仓库**
```bash
git clone https://gitee.com/uyevan/wow-note-spring.git
cd wow-note-spring
```
2. **配置Nacos**
- 启动Nacos服务(端口10010)
- 导入配置文件(配置示例位于`config/nacos`目录)
3. **启动依赖服务**
```bash
cd docker
docker-compose up -d mysql mongodb redis rabbitmq elasticsearch minio
```
4. **构建项目**
```bash
mvn clean package -DskipTests
```
5. **启动服务**
按以下顺序启动服务:
1. 注册中心(Nacos已启动)
2. 网关服务(note-gateway, 端口9091)
3. 中间件服务(note-middleware, 端口8082)
4. 主应用服务(note-app, 端口8081)
```bash
java -jar note-gateway/target/note-gateway-1.0.0.jar
java -jar note-middleware/target/note-middleware-1.0.0.jar
java -jar note-app/target/note-app-1.0.0.jar
```
### Docker部署
使用Docker Compose快速部署完整环境:
```bash
cd docker
docker-compose up -d
```
这将启动所有必要的服务,包括基础设施(MySQL, MongoDB, Redis等)和应用服务。
### Kubernetes部署
1. **准备镜像**
```bash
# 登录阿里云容器镜像仓库
docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com
# 构建并推送镜像
docker build -t registry.cn-hangzhou.aliyuncs.com/wow-note-spring/note-app:版本 -f note-app/Dockerfile note-app/
docker push registry.cn-hangzhou.aliyuncs.com/wow-note-spring/note-app:版本
# 同样方式处理其他服务镜像
```
2. **应用K8s配置**
```bash
# 创建命名空间
kubectl create namespace note-system
# 应用配置
kubectl apply -f k8s/note-app.yaml -n note-system
kubectl apply -f k8s/note-gateway.yaml -n note-system
kubectl apply -f k8s/note-middleware.yaml -n note-system
```
## API文档 📚
服务启动后,可通过以下地址访问API文档:
- Swagger UI: `http://localhost:9091/swagger-ui.html`
- Knife4j: `http://localhost:9091/doc.html`
## 系统监控 📊
项目集成了监控工具,可通过以下地址查看系统状态:
- Spring Boot Admin: `http://localhost:8081/admin`
- Nacos控制台: `http://localhost:10010/nacos`
- Sentinel控制台: `http://localhost:8718`
## 系统预览 💻
> 以下是系统的部分界面预览











## 核心设计 🧩
### 微服务架构设计
系统采用领域驱动设计(DDD)思想,将业务领域拆分为多个微服务,每个服务负责特定的业务功能。服务间通过RESTful API或RPC进行通信,实现松耦合架构。
### 数据分层设计
系统针对不同类型的数据采用不同的存储策略:
- 关系数据: MySQL存储结构化数据
- 文档数据: MongoDB存储笔记内容
- 缓存数据: Redis提高读取性能
- 搜索数据: ElasticSearch实现全文检索
- 媒体数据: MinIO存储图片等大文件
### 安全设计
采用多层次安全防护:
- 网关层: 身份认证、请求过滤、限流控制
- 服务层: JWT令牌验证、权限检查
- 数据层: 防SQL注入、数据加密
## 贡献指南 🤝
欢迎贡献代码、提交问题或建议!请先fork本仓库,然后提交Pull Request。
## 联系方式 📬
项目维护者: Evan
- Email: [uyevan@163.com](mailto:uyevan@163.com)
- 微信:
## 许可证 📄
本项目采用MIT许可证,详情请查看LICENSE文件。