# 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辅助和全文检索等核心功能,同时通过分布式中间件提升系统的可伸缩性和容错能力。通过微服务设计,实现了业务模块的解耦和独立部署,大幅提高了开发效率和系统稳定性。 ## 系统架构 🪜 ![项目架构图](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/design_TIP.png) ### 微服务架构 - 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` ## 系统预览 💻 > 以下是系统的部分界面预览 ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_1.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_2.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_3.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_4.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_5.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_6.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_7.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_8.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_9.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_10.png) ![Demo](https://evan-1304983303.cos.ap-nanjing.myqcloud.com/note/note_11.png) ## 核心设计 🧩 ### 微服务架构设计 系统采用领域驱动设计(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文件。