Skip to content

qinYY3000/java_template

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎨 Yoyo Data 系统

Java Spring Boot MySQL Redis MongoDB Kafka MinIO License

📖 项目简介

🚀 Yoyo Data

Yoyo Data 是一个基于 Spring Boot 的高并发单体项目框架,集成了多种中间件,包括 MySQL、MongoDB、Redis、Kafka 和 MinIO 等,适用于处理高并发场景下的数据业务。

高性能 可扩展 安全可靠 功能丰富 易于部署

✨ 核心特性

  • 高性能:采用多级缓存、异步处理等优化策略
  • 可扩展:模块化设计,易于扩展和维护
  • 安全可靠:完善的认证授权和安全防护机制
  • 功能丰富:集成多种中间件,满足各种业务需求
  • 易于部署:支持容器化部署和集群扩展

🏗️ 系统架构设计

📐 分层架构设计

系统采用清晰的分层架构,分离各层职责,提高系统的可维护性和扩展性。

整体架构

┌───────────────────────────────────────────────────────────────────────────┐
│                                接入层 🎯                                  │
├──────────────┬──────────────┬──────────────┬──────────────────────────────┤
│   API接口    │  认证授权    │  流量控制    │           负载均衡           │
├──────────────┼──────────────┼──────────────┼──────────────────────────────┤
│  Controller  │  Security   │  RateLimit   │       外部负载均衡器         │
└──────────────┴──────────────┴──────────────┴──────────────────────────────┘
                              │
┌─────────────────────────────▼─────────────────────────────────────────────┐
│                              业务层 🏭                                   │
├──────────────┬──────────────┬──────────────┬──────────────┬──────────────┤
│  业务服务    │  事务管理    │  业务规则    │  事件处理    │  异步任务    │
├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│   Service    │  Transaction │  BusinessRule│  EventHandler│  AsyncTask   │
└──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘
                              │
┌─────────────────────────────▼─────────────────────────────────────────────┐
│                              数据层 💾                                   │
├──────────────┬──────────────┬──────────────┬──────────────┬──────────────┤
│  数据访问    │  缓存管理    │  消息队列    │  文件存储    │  数据同步    │
├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│   Repository │   Cache      │   Kafka      │   MinIO      │   SyncTask   │
└──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘
                              │
┌─────────────────────────────▼─────────────────────────────────────────────┐
│                              基础设施层 🔧                               │
├──────────────┬──────────────┬──────────────┬──────────────┬──────────────┤
│  配置管理    │  监控告警    │  日志管理    │  工具类      │  连接池管理  │
├──────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│  Config      │  Monitoring  │  Logging     │  Utils       │  ConnectionPool│
└──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘
                              │
┌─────────────────────────────▼─────────────────────────────────────────────┐
│                              中间件层 🛠️                                   │
├──────────────┬──────────────┬──────────────┬──────────────┬──────────────┤
│   MySQL      │   MongoDB    │   Redis      │   Kafka      │   MinIO      │
└──────────────┴──────────────┴──────────────┴──────────────┴──────────────┘

设计原则

🎯 核心设计理念

系统设计遵循以下原则,确保系统的高性能、可靠性和可扩展性。

🏗️ 分层架构

清晰的职责分离,便于维护和扩展

🔗 高内聚低耦合

模块间依赖最小化,提高系统稳定性

⚡ 高并发优化

通过缓存、异步处理、连接池等手段提升并发能力

🔍 可观测性

完善的监控、日志和告警机制

🔒 安全性

包含认证、授权、加密等安全措施

📈 可扩展性

模块化设计,支持水平扩展

🛡️ 可靠性

完善的错误处理和容错机制

📁 目录结构

yoyo_data/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── yoyo_data/
│   │   │               ├── YoyoDataApplication.java        # 应用启动类
│   │   │               ├── api/                         # 接入层
│   │   │               │   ├── controller/              # 控制器
│   │   │               │   ├── handler/                 # 异常处理器
│   │   │               │   ├── interceptor/             # 拦截器
│   │   │               │   └── validator/               # 数据校验
│   │   │               ├── business/                    # 业务层
│   │   │               │   ├── service/                 # 业务服务
│   │   │               │   ├── event/                   # 事件处理
│   │   │               │   ├── async/                   # 异步任务
│   │   │               │   └── rule/                    # 业务规则
│   │   │               ├── data/                        # 数据层
│   │   │               │   ├── repository/              # 数据访问
│   │   │               │   ├── cache/                   # 缓存管理
│   │   │               │   ├── message/                 # 消息队列
│   │   │               │   └── storage/                 # 文件存储
│   │   │               ├── domain/                      # 领域模型
│   │   │               │   ├── entity/                  # 实体类
│   │   │               │   ├── vo/                      # 视图对象
│   │   │               │   └── enums/                   # 枚举类
│   │   │               ├── infrastructure/              # 基础设施层
│   │   │               │   ├── config/                  # 配置管理
│   │   │               │   ├── monitor/                 # 监控告警
│   │   │               │   ├── logging/                 # 日志管理
│   │   │               │   ├── security/                # 安全管理
│   │   │               │   └── utils/                   # 工具类
│   │   │               ├── support/                     # 支持层
│   │   │               │   ├── constant/                # 常量定义
│   │   │               │   ├── dto/                     # 数据传输对象
│   │   │               │   ├── exception/               # 异常定义
│   │   │               │   ├── response/                # 响应封装
│   │   │               │   └── vo/                      # 视图对象
│   │   │               └── jwt/                         # JWT相关
│   │   └── resources/
│   │       ├── static/                                  # 静态资源
│   │       ├── mapper/                                  # MyBatis 映射文件
│   │       ├── application.yml                         # 主配置文件
│   │       ├── application-dev.yml                     # 开发环境配置
│   │       └── application-prod.yml                    # 生产环境配置
│   └── test/                                            # 测试代码
├── pom.xml                                              # Maven 依赖
├── README.md                                            # 项目说明
├── ARCHITECTURE_DESIGN.md                               # 架构设计文档
└── .gitignore                                           # Git 忽略文件

🛠️ 技术栈

🔧 技术选型

系统采用主流的技术栈,确保高性能、可靠性和可维护性。

类别 技术 版本 用途
基础框架 Spring Boot 2.3.12 应用基础框架
数据库 MySQL 8.0+ 关系型数据存储
数据库 MongoDB 4.4+ 非关系型数据存储
缓存 Redis 6.0+ 分布式缓存
消息队列 Kafka 2.8+ 异步消息处理
对象存储 MinIO 2023+ 文件存储服务
ORM 框架 MyBatis-Plus 3.5.1 数据库访问
安全 JWT 0.9.1 认证授权
工具类 Hutool 5.8.38 通用工具类
工具类 Lombok 1.18+ 代码简化
JSON 处理 FastJSON 1.2.83 JSON 序列化/反序列化
连接池 Druid 1.2.18 数据库连接池

🚀 快速开始

🎯 开始使用

按照以下步骤快速启动和运行系统。

环境要求

依赖 版本 安装说明
JDK 1.8+ Oracle JDKOpenJDK
Maven 3.6+ Maven 下载
MySQL 8.0+ MySQL 安装
MongoDB 4.4+ MongoDB 安装
Redis 6.0+ Redis 安装
Kafka 2.8+ Kafka 安装
MinIO 2023+ MinIO 安装

安装与运行

📁 1. 克隆项目

git clone <项目地址>
cd yoyo_data

⚙️ 2. 配置环境

修改 src/main/resources/application.yml 文件,配置数据库连接、Redis、Kafka 等中间件的连接信息。

🔨 3. 编译项目

mvn clean install

🚀 4. 运行项目

mvn spring-boot:run

或使用编译后的 jar 包运行:
java -jar target/yoyo_data-0.0.1-SNAPSHOT.jar

🌐 5. 访问系统

项目启动后,可通过以下地址访问:

⚙️ 配置说明

🔧 配置管理

系统提供了丰富的配置选项,可根据实际环境进行调整。

核心配置项

配置项 说明 默认值
spring.datasource 数据库连接配置 -
spring.redis Redis 连接配置 -
spring.data.mongodb MongoDB 连接配置 -
spring.kafka Kafka 连接配置 -
minio MinIO 连接配置 -
jwt.secret JWT 密钥 mySecretKeyForJwtTokenGenerationAndValidation1234567890
jwt.expiration JWT 过期时间(毫秒) 7200000
server.port 服务器端口 8080
server.servlet.context-path 上下文路径 /api

环境配置

🌍 多环境支持

项目支持多环境配置,通过 spring.profiles.active 切换不同环境的配置。

🧪 开发环境

配置文件:application-dev.yml

适用于本地开发和测试,包含详细的日志和调试信息。

🚀 生产环境

配置文件:application-prod.yml

适用于生产部署,包含优化的性能配置和安全设置。

📋 系统功能

🌟 核心功能

系统提供了丰富的功能模块,满足各种业务需求。

🔐 用户认证与授权

JWT 令牌认证,基于角色的访问控制

技术实现:Spring Security + JWT

💾 数据管理

支持 MySQL 和 MongoDB 的数据操作

技术实现:MyBatis-Plus + Spring Data MongoDB

缓存管理

多级缓存策略,提升系统性能

技术实现:Redis + 本地缓存

📨 消息处理

基于 Kafka 的异步消息处理

技术实现:Spring Kafka

📁 文件存储

集成 MinIO 实现对象存储

技术实现:MinIO Java SDK

🚀 高并发处理

通过各种优化策略支持高并发场景

技术实现:缓存 + 异步 + 连接池优化

🔍 监控告警

系统健康检查和指标监控

技术实现:Spring Boot Actuator

📝 日志管理

标准化的日志记录和管理

技术实现:SLF4J + Logback

API 接口

🌐 RESTful API

系统提供标准化的 RESTful API 接口,支持各种客户端调用。

👤 用户管理

  • POST /api/auth/login - 用户登录
  • POST /api/auth/register - 用户注册
  • GET /api/auth/info - 获取用户信息
  • PUT /api/auth/update - 更新用户信息

📊 数据管理

  • GET /api/data/list - 获取数据列表
  • GET /api/data/detail/{id} - 获取数据详情
  • POST /api/data/create - 创建数据
  • PUT /api/data/update/{id} - 更新数据
  • DELETE /api/data/delete/{id} - 删除数据

📁 文件管理

  • POST /api/file/upload - 上传文件
  • GET /api/file/download/{id} - 下载文件
  • DELETE /api/file/delete/{id} - 删除文件
  • GET /api/file/list - 获取文件列表

⚙️ 系统管理

  • GET /api/system/health - 系统健康检查
  • GET /api/system/metrics - 系统指标
  • GET /api/system/config - 系统配置

⚡ 高并发优化策略

1. 缓存策略

  • 多级缓存:本地缓存 + Redis 分布式缓存
  • 缓存预热:系统启动时加载热点数据
  • 缓存更新:异步更新或延迟双删策略
  • 缓存降级:当缓存不可用时,直接访问数据库
  • 缓存穿透:布隆过滤器防止缓存穿透
  • 缓存雪崩:随机过期时间防止缓存雪崩

2. 数据库优化

  • 连接池优化:使用 Druid 连接池,合理配置连接数
  • 索引优化:为常用查询字段建立索引
  • SQL 优化:避免复杂查询,使用分页查询
  • 读写分离:主库写,从库读,提高并发能力
  • 分库分表:对大表进行分库分表,提高查询效率
  • 批量操作:使用批量插入和更新,减少网络开销

3. 异步处理

  • 消息队列:使用 Kafka 处理异步任务和事件
  • 线程池:合理配置线程池,处理并发请求
  • CompletableFuture:使用异步非阻塞编程模式
  • 定时任务:使用 Spring Task 或 Quartz 处理定时任务

4. 限流与降级

  • 分布式限流:使用 Redis + Lua 脚本实现分布式限流
  • 服务降级:当系统负载过高时,降级非核心功能
  • 熔断机制:使用 Sentinel 或 Hystrix 实现服务熔断
  • 超时控制:为所有外部调用设置合理的超时时间

5. 网络优化

  • HTTP 连接池:使用 HttpClient 或 OkHttp 连接池
  • CDN:使用 CDN 加速静态资源访问
  • GZIP 压缩:启用 HTTP 压缩,减少网络传输量
  • WebSocket:对于实时通信,使用 WebSocket 替代 HTTP 轮询
  • 长连接:使用 TCP 长连接,减少连接建立开销

📊 监控与日志

监控

  • Spring Boot Actuator:提供系统健康检查、指标监控等
  • 自定义监控:针对业务指标的监控
  • 告警机制:当系统指标异常时,触发告警

日志

  • SLF4J + Logback:标准日志框架
  • 日志级别:可通过配置文件调整
  • 日志输出:控制台和文件输出
  • 日志归档:定期归档和清理日志
  • 分布式日志:可集成 ELK 或 Loki 实现分布式日志管理

🔒 安全措施

1. 认证授权

  • JWT 令牌:无状态认证,便于水平扩展
  • 密码加密:使用 bcrypt 进行密码加密
  • 基于角色的访问控制:细粒度的权限管理
  • 令牌刷新:支持令牌自动刷新
  • 令牌黑名单:已注销的令牌加入黑名单

2. 输入验证

  • 参数验证:使用 Spring Validation 进行参数验证
  • 防 SQL 注入:使用 MyBatis-Plus 防止 SQL 注入
  • 防 XSS 攻击:对输入输出进行过滤
  • 防 CSRF 攻击:实现 CSRF 令牌验证

3. 网络安全

  • HTTPS:生产环境使用 HTTPS
  • CORS 配置:合理配置跨域资源共享
  • 请求限流:防止恶意请求和 DoS 攻击
  • 敏感信息保护:敏感信息加密存储和传输

📦 部署建议

单机部署

适用于开发和测试环境:

  1. 安装并配置所有中间件
  2. 编译打包项目
  3. 运行 jar 包

生产部署

建议使用以下部署方式:

  1. 容器化部署

    • 使用 Docker 容器化应用
    • 使用 Docker Compose 管理多容器
  2. 集群部署

    • 多实例部署,配合负载均衡
    • 使用 Kubernetes 进行容器编排
  3. 配置管理

    • 使用 Nacos 或 Consul 管理配置
    • 实现配置的动态更新
  4. 服务发现

    • 实现服务自动发现
    • 支持服务健康检查
  5. 监控告警

    • 配置完善的监控和告警机制
    • 集成 Prometheus + Grafana

🛠️ 开发规范

代码规范

  • 命名规范:使用驼峰命名法
  • 代码风格:遵循 Java 代码规范
  • 注释规范:关键代码必须添加注释
  • 日志规范:合理使用日志级别,避免过度日志
  • 异常处理:统一的异常处理机制

开发流程

  1. 需求分析:明确功能需求和技术要求
  2. 设计:进行系统设计和数据库设计
  3. 编码:按照规范编写代码
  4. 测试:单元测试、集成测试、性能测试
  5. 代码审查:提交代码前进行代码审查
  6. 部署:部署到测试环境进行验证
  7. 上线:灰度发布到生产环境

❓ 常见问题

启动失败

  • 问题:项目启动失败
  • 原因:中间件未启动或配置错误
  • 解决方案
    1. 检查中间件是否正常运行
    2. 检查配置文件是否正确
    3. 检查端口是否被占用
    4. 查看启动日志,定位具体错误

性能问题

  • 问题:系统响应慢
  • 原因:数据库查询慢、缓存未生效、并发处理能力不足
  • 解决方案
    1. 检查数据库索引是否合理
    2. 检查缓存是否有效使用
    3. 检查是否存在慢查询
    4. 检查线程池配置是否合理
    5. 考虑使用异步处理

安全问题

  • 问题:系统存在安全漏洞
  • 原因:输入验证不足、密码加密不当、权限控制不严格
  • 解决方案
    1. 定期更新依赖包,防止安全漏洞
    2. 加强密码策略,使用强加密算法
    3. 完善权限控制,实现最小权限原则
    4. 对输入输出进行严格验证和过滤
    5. 定期进行安全扫描和渗透测试

🤝 贡献指南

欢迎贡献代码和提出建议!

  1. Fork 项目
  2. 创建分支git checkout -b feature/your-feature
  3. 提交修改git commit -m 'Add some feature'
  4. 推送到分支git push origin feature/your-feature
  5. 创建 Pull Request

📞 联系方式

📄 许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。


Yoyo Data - 高性能、可扩展的数据业务系统

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 98.6%
  • Python 1.4%