# 高并发项目 **Repository Path**: java_wxid/high-concurrency-projects ## Basic Information - **Project Name**: 高并发项目 - **Description**: 大型分布式微服务架构的高并发项目demo,目前以红包雨项目作为demo项目,目标是实现百万级QPS。后续陆续引入秒杀系统、春节抢票等高并发业务场景实现。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 20 - **Forks**: 7 - **Created**: 2023-11-30 - **Last Updated**: 2025-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 高并发项目 [![Page Views Count](https://badges.toozhao.com/badges/01GAXJSF6YFBCWG5CTMZQSFB4R/red.svg)](https://badges.toozhao.com/stats/01GAXJSF6YFBCWG5CTMZQSFB4R "页面访问的次数") [![Author](https://img.shields.io/badge/Author-liaozhiwei-blue)](https://www.liaozhiwei.cn/ "Author:liaozhiwei") [![WeChat](https://img.shields.io/badge/Wechat-java__wxid-blueviolet)](https://www.liaozhiwei.cn/%E5%BE%AE%E4%BF%A1.jpg "WeChat:java_wxid") [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html "Apache协议") [![JDK-1.8](https://img.shields.io/badge/JDK-1.8+-green.svg)](https://www.oracle.com/java/technologies/downloads/ "JDK-1.8") [![MySQL](https://img.shields.io/badge/%E6%95%B0%E6%8D%AE%E5%BA%93-MySQL-critical)](https://www.mysql.com/ "数据库:MySQL") [![Redis](https://img.shields.io/badge/%E7%BC%93%E5%AD%98-Redis-9cf)](https://redis.io/ "缓存:Redis") [![RocketMQ](https://img.shields.io/badge/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6-RocketMQ-ff69b4)](https://rocketmq.apache.org/zh/ "消息中间件:RocketMQ") [![SpringCould](https://img.shields.io/badge/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84-Spring%20Cloud-important)](https://www.springcloud.cc/ "微服务架构:SpringCould") [![Apache ShardingSphere](https://img.shields.io/badge/%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8-Apache%20ShardingSphere-yellow)](https://shardingsphere.apache.org/ "分库分表:Apache ShardingSphere") ![version](https://img.shields.io/badge/v1.0.0-version-purple/ "版本") ## 介绍 我以前公司开发过的一个红包雨系统,原先公司的红包雨系统只有十万用户,参与红包雨活动的定时红包雨抢红包用户也只有2万多,压测时QPS在三千多的样子,也算是一个高并发项目了,但是还不是特别高,所以希望自己弄一个专门做百万级的QPS压测项目,前期根据自己开发过的那个红包雨高并发项目进行调整,移除掉公司的业务逻辑,仅保留通用抢红包流程,作为Demo项目。后期的开发计划,先完成百万级的QPS红包雨项目,然后在做秒杀、春节抢票等有高并发的业务项目。 ### 高并发百万级QPS红包雨实战demo #### 使用技术 项目使用技术服务器参数优化 Spring Boot项目配置优化(配置HTTP协议下的数据压缩、配置静态资源缓存、Tomcat线程池配置) 启动时间优化(延迟初始化Bean、spring-context-indexer功能、11项优化启动方案) 同一IP地址请求限流 网关请求校验防篡改 防止请求重复提交 同一用户请求限流 应用服务限流 池化技术(Redis连接池、MySQL连接池、对象池、线程池【自适应核心线程数、自定义拒绝策略、滑动时间窗口、性能监控、重试纪元】) 弹性伸缩、负载均衡(阿里云CLB、Nginx) 定时任务 rediscluster(高可用6个节点) mysqlcluster(三主六从半同步复制) rocketmqcluster(dledger高可用9个节点) 分布式锁 防止消息重复消费 多消费组多消费者消费 高并发请求合并 redis批处理 mysql批处理 设计模式(模板方法模式、代理模式、 享元模式) 不可逆加密存储 用户请求鉴权(JWT) #### 软件架构 red-package-rain-api服务抢红包 red-package-rain-server服务消费红包 spring-cloud-gateway服务网关过滤请求限流用户 spring-cloud-security-oauth2服务鉴权 user服务处理用户请求 #### 安装教程 1. JDK8环境 2. 需要准备好Redis、MySQL、RocketMQ 3. 部署需要准备好centos7环境、Docker、Docker-Compose #### 使用说明 1. 先启动spring-cloud-security-oauth2服务 2. 然后再启动spring-cloud-gateway服务 3. 剩下的服务启动顺序随意 #### 参与贡献 廖志伟 #### 操作步骤 ##### 1.用户服务 批量创建用户任务(每秒一万用户,写入DB并保存用户名和密码到脚本中): http://localhost:8037/userinfo/startCreateUserTask 关闭创建用户的任务: http://localhost:8037/userinfo/stopCreateUserTask 写入脚本文件(将用户id、登录的token、时间戳、验签写入脚本): http://localhost:8037/userinfo/writeScriptFile ##### 2.红包服务 添加红包活动(后台管理系统配置红包活动): http://localhost:8057/redPackageRainApi/addRedPackageActivity 走网关: http://localhost:8087/redPackageRainApi/addRedPackageActivity 抢红包: http://localhost:8057/redPackageRainApi/snatchRedPackage 走网关: http://localhost:8087/redPackageRainApi/snatchRedPackage 合并请求抢红包: http://localhost:8057/redPackageRainApi/snatchRedPackageMergeRequest 走网关: http://localhost:8087/redPackageRainApi/snatchRedPackageMergeRequest #### 想说的话 目前这个项目还在不断调试中,视频也是录制一段之后,继续调整代码,项目中还有很多技术点没实现的,也不用着急,后续会慢慢添加上去的。 另外大家对这个项目感觉还不错的话,可以留下一个Star让更多人看到这个项目进行学习。