项目介绍
spring-boot-seckill 是一个用 SpringBoot 开发的从0到1构建的分布式秒杀系统,项目案例基本成型,逐步完善中。
开发环境
- JDK: 1.8
- Maven
- MySQL
- IntelliJ IDEA
- SpringBoot: 1.5.10
- Zookeeper: 3.4.6
- Kafka: 2.11
- Redis: 2.8.4
- Curator: 2.10.0
启动说明
- 配置
application.properties
中相关 Redis、Zookeeper 以及 Kafka 地址,建议在 Linux 下安装使用。 - 数据库脚本位于
src/main/resource/sql
目录下,启动前请自行导入。 - 配置完成后,运行
Application
中的main
方法,访问 http://localhost:8080/seckill/swagger-ui.html 进行 API 测试。 - 秒杀商品页: http://localhost:8080/seckill/index.shtml,部分功能待完成。
- 本测试案例单纯为了学习,某些案例不适用于生产环境,大家根据所需自行调整。
秒杀架构
架构层级
- 活动经常遇到 DDOS 攻击,建议使用高防 IP 保护。
- 活动期间人流量大,接入 SLB 进行流量分发,消除单点故障提升系统可用性。
- 接入 Nginx 做限流分发,保障后端服务的正常运行。
- 后端秒杀业务逻辑使用 Redis 或 Zookeeper 分布式锁,消息队列使用 Kafka 或 Redis,DRDS 数据库中间件实现读写分离。
优化思路
- 分流: 分流处理高级别并发请求。
- 限流: 防止秒杀商品被恶意刷,设定流量极限。
- 缓存: 避免大量请求穿透到 DB 层,活动前将商品信息推送至分布式缓存。
- 异步: 处理可以异步执行的逻辑,缩短系统响应时间。
- 主备: 做好主备容灾方案,提高系统可靠性。
- 流程优化: 部分请求走正常秒杀流程,部分请求直接返回秒杀失败。
分层优化
- 前端优化: 活动前生成静态商品页面推送至缓存和 CDN,静态文件 (JS/CSS) 请求推送至文件服务器和 CDN。
- 网络优化: 使用 BGP 多线机房,减少全国用户的网络延迟。
- 应用服务优化: 优化 Nginx 配置、Tomcat 连接池、数据库配置及数据库连接池。
![图片[1]-Spring Boot Seckill分布式秒杀系统源码及安装说明](https://www.xwzyv.net/wp-content/uploads/2024/06/20240609130827307749.webp)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容