"
加载中...
🎈BallonWords🎈
🎈让文字如气球般自由漂浮,飞向字节的无限云端🎈
🚀 快速开始
📥 获取项目
HTTPS
git clone https://github.com/Dddddduo/balloonWords.git
⚙️ 环境要求
- JDK 17+
- Maven 3.8+
- MySQL 8.0+
- Redis 6.0+
- RabbitMQ 3.14+
- Elasticsearch 8.15+
🔧 配置中间件
application-prod.yml
spring:
# mysql配置
datasource:
url: jdbc:mysql://localhost:3306/balloon_words
username: your_username
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
# redis配置
redis:
host: localhost
port: 6379
database: 0
# rabbitmq配置
rabbitmq:
host: localhost
port: 5672
username: admin
password: 123456
# 基本队列配置
template:
default-receive-queue: default_queue # 默认接收队列
receive-timeout: 5000 # 接收超时时间(毫秒)
retry:
enabled: true # 发送端重试
max-attempts: 3
initial-interval: 1000
# 监听器设置 死信队列配置 (如果需要延迟队列)
listener:
simple:
acknowledge-mode: manual #消息确认方式
concurrency: 5 # 最小消费者数
max-concurrency: 20 # 最大消费者数
prefetch: 50 # 每个消费者最大未确认消息数
default-requeue-rejected: false # 拒绝后不走重试,直接进死信
retry:
max-attempts: 3
enabled: true
initial-interval: 1000
# elasticsearch配置
elasticsearch:
uris: localhost:9200
username: elastic
password: 123456
▶️ 启动项目
1
进入项目目录
cd balloonWords
2
编译项目
mvn clean package -DskipTests
3
运行项目
java -jar target/ans-0.0.1-SNAPSHOT.jar
Java 17
核心开发语言
Spring Boot 3.0.2
应用框架
MySQL
数据存储
Redis
缓存系统
MyBatis
ORM框架
Knife4j
接口文档
RabbitMQ
消息队列
JUnit5+Mockito
单元测试
Transactional
事务管理
Elasticsearch
搜索引擎
Github Action
CI/CD 持续集成,持续交付
Docker Compose
容器化思想 一键部署
jmeter
压力测试
✅ 后期展望
docker使用cannel实时检测mysql
🌱 开发动态
2024-02-22 ~ 2024-02-24
完成基础的五个接口
使用Junit5+MockMvc集成单元测试
2024-02-10 ~ 2024-02-12
设计数据库表
多表联查实现第一个接口 /get
2024-03-01 ~ 2024-03-05
消息队列使用
RabbitMQ解耦接口 用Spring事件监听器控制上下文同步
2024-03-05 ~ 2024-03-10
使用redis降低数据库压力
分布式锁套redissonClient防穿透防止缓存穿透
2024-03-10 ~ 2024-03-13
使用spring事务控制增添操作的原子性
Transactional注解控制超时管理 事务回滚
2024-03-15 ~ 2024-03-17
Elasticsearch完善搜索引擎
降低搜索压力
2024-03-20 ~ 2024-03-21
Docker Compose一键部署
容器 IDEA集成docker
2024-03-22 ~ 2024-03-25
Github自动化Workflows配置
maven项目跑CI/CD流程,代码覆盖率检查
2024-03-26 ~ 2024-03-27
jmeter
对每个接口进行压力测试,并完成报告
📚 API 接口文档
POST
/sentence/get
随机获取一条句子
请求参数: 无
响应示例:
{ "flag": true, "data": { "content": "你好像在等十九世纪的青洄,可我是北纬六十七度以北的雪", "tagName": ["青春", "故事"] } }
POST
/sentence/get-all-words
获取所有句子
请求参数: 无
响应示例:
{ "flag": true, "data": [ { "id": 1, "content": "句子内容1", "tags": "标签1,标签2" }, { "id": 2, "content": "句子内容2", "tags": "标签2,标签3" } ] }
✨ 项目亮点
🧪 完善的测试覆盖
- 使用 JUnit 5 进行单元测试,确保业务逻辑正确性
- MockMvc 模拟 HTTP 请求,验证接口行为
- Mockito 实现依赖注入模拟,隔离测试环境
- 测试覆盖率 > 80%,保障代码质量
- 使用 JaCoCo 生成测试覆盖率报告,实现可视化监控
📦 模块化设计
- 采用清晰的分层架构,实现关注点分离
- 全局统一的异常处理机制,提升用户体验
- 规范的接口文档,便于协作开发
- 可扩展的标签系统,支持灵活的内容管理
- 采用依赖注入设计模式,降低模块间耦合度
🛠️ 开发规范
- 严格遵循 Angular 提交规范,保持提交历史清晰
- 集成 Checkstyle 代码风格检查,确保代码一致性
- 完善的 CI/CD 流程,实现自动化部署
- 自动化测试流程,降低回归测试成本
- 代码审查机制,保障代码质量
🚀 性能优化
- Redis 缓存机制减轻数据库压力,提升响应速度
- 分布式锁防止缓存穿透,增强系统稳定性
- 基于 Elasticsearch 的高效搜索引擎,优化查询性能
- RabbitMQ 消息队列实现异步处理,提高系统吞吐量
- JMeter 性能测试,确保系统在高负载下稳定运行
🐳 容器化部署
- Docker Compose 实现一键部署,简化运维流程
- 容器化微服务架构,提高系统可扩展性
- IDEA 集成 Docker,优化开发体验
- 环境一致性保障,避免"我这里能跑"问题
- 资源隔离与限制,提高系统安全性
🔒 安全与事务
- Spring 事务管理确保数据一致性
- 事务超时控制与回滚机制,防止资源长时间占用
- API 接口权限控制,保障系统安全
- 请求参数验证,防止恶意输入
- 敏感数据加密存储,保护用户隐私
👥 开发人员
感谢所有为 BallonWords 项目做出贡献的开发者们!正是因为你们的参与,才让这个项目不断成长。
Dduo
项目负责人 / 后端开发
luoqwe123
前端开发 / API文档的开发
yapi0420
测试 / 文档书写
666mch
测试 / 文档书写
🤝 欢迎参与贡献
BallonWords 是一个开源项目,我们非常欢迎更多的开发者参与进来!
如何参与:
- 在 GitHub 上 Fork 本项目
- 创建您的特性分支 (git checkout -b feature/AmazingFeature)
- 提交您的更改 (git commit -m 'Add some AmazingFeature')
- 推送到分支 (git push origin feature/AmazingFeature)
- 创建一个 Pull Request