【spring-boot-seckill分布式秒杀系统 v1.0】java秒杀系统源码

news2025/3/12 19:53:49

spring-boot-seckill分布式秒杀系统是一个用SpringBoot开发的从0到1构建的分布式秒杀系统,项目案例基本成型,逐步完善中。
开发环境:
JDK1.8、Maven、Mysql、IntelliJ IDEA、SpringBoot1.5.10、zookeeper3.4.6、kafka_2.11、redis-2.8.4、curator-2.10.0
启动说明:
1、启动前 请配置application.properties中相关redis、zk以及kafka相关地址,建议在Linux下安装使用。
2、数据库脚本位于 src/main/resource/sql 下面,启动前请自行导入。
3、配置完成,运行Application中的main方法,访问 http://localhost:8080/seckill/swagger-ui.html 进行API测试。
4、秒杀商品页:http://localhost:8080/seckill/index.shtml ,部分功能待完成。
5、本测试案例单纯为了学习,某些案例并不适用于生产环境,大家根据所需自行调整。
秒杀架构:
架构层级
1、一般商家在做活动的时候,经常会遇到各种不怀好意的DDOS攻击(利用无辜的吃瓜群众夺取资源),导致真正的我们无法获得服务!所以说高防IP还是很有必要的。
2、搞活动就意味着人多,接入SLB,对多台云服务器进行流量分发,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
3、基于SLB价格以及灵活性考虑后面我们接入Nginx做限流分发,来保障后端服务的正常运行。
4、后端秒杀业务逻辑,基于Redis 或者 Zookeeper 分布式锁,Kafka 或者 Redis 做消息队列,DRDS数据库中间件实现数据的读写分离。
优化思路
1、分流、分流、分流,重要的事情说三遍,再牛逼的机器也抵挡不住高级别的并发。
2、限流、限流、限流,毕竟秒杀商品有限,防刷的前提下没有绝对的公平,根据每个服务的负载能力,设定流量极限。
3、缓存、缓存、缓存、尽量不要让大量请求穿透到DB层,活动开始前商品信息可以推送至分布式缓存。
4、异步、异步、异步,分析并识别出可以异步处理的逻辑,比如日志,缩短系统响应时间。
5、主备、主备、主备,如果有条件做好主备容灾方案也是非常有必要的(参考某年锤子的活动被攻击)。
6、最后,为了支撑更高的并发,追求更好的性能,可以对服务器的部署模型进行优化,部分请求走正常的秒杀流程,部分请求直接返回秒杀失败,缺点是开发部署时需要维护两套逻辑。
分层优化
1、前端优化:活动开始前生成静态商品页面推送缓存和CDN,静态文件(JS/CSS)请求推送至文件服务器和CDN。
2、网络优化:如果是全国用户,最好是BGP多线机房,减少网络延迟。
3、应用服务优化:Nginx最佳配置、Tomcat连接池优化、数据库配置优化、数据库连接池优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式-创建型模式之抽象工厂模式(Abstract Factory)

4.抽象工厂模式(Abstract Factory)4.1. 模式动机在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时…

项目制作-3

今天是好日子呀解决了 文件的问题(未测试) 完成了更多的界面的设计 对基本的模块有了更多的完成度 又学习了easyx图形库的一些的应用 一起来看看吧 void menu() {initgraph(640, 800, 0);IMAGE img;loadimage(&img, "C:\\Users\\唐怡佳\\Desktop\\图1.jpg"…

sql实践-01

CREATE DATABASE 人员管控; SHOW DATABASES; use 人员管控; 创建表 CREATE TABLE 住宿人员 ( 身份证号 CHAR(18) NOT NULL PRIMARY KEY, 姓名 VARCHAR(10) NOT NULL, 性别 CHAR(1) NOT NULL, 出生日期 DATE, 户籍 VARCHAR(30), 文化程度 VARCHAR(10), 婚姻状况 CHAR(…

装上这个插件,你就能一键生成接口文档

当有接口对接需求的时候,开发终于不用再担心 API 文档难写了,也不用再一个个接口文档重新写!安装这个 IDEA 插件,可以一步将文档导入到 Postcat。 这款插件操作简单,容易上手,能够让开发者省去API文档编写的…

TypeError: Cannot handle this data type: (1, 1, 33980), |u1

Image.fromarray报错解决 1. 报错信息2. 解决 相关文章 Image.fromarray()详细用法 1. 报错信息 TypeError: Cannot handle this data type: (1, 1, 33980), |u1 2. 解决 报错原因 图片mode格式问题moasic是灰度图片得到的【mode为L】,numpy【值只有0,和255】且…

shell编程入门 第一章 基本语法

shell编程的语法主要分为五个环节,分别是变量,字符串,运算符,流程控制,函数五大部分 shell编程的基础语法 一 变量1.1 shell变量名1.2 使用shell变量1.3只读变量1.4 删除变量 二 字符串2.1 定义时最好用双引号2.2获取字…

EMC 电路设计基础

EMC 在 JIS 中被定义为“电磁兼容性”,意为“不对其他设备产生电磁干扰,即使受到来自其他设备的电磁干扰,仍能保持原有的性能”,也就是具备相互兼顾兼容的性质。 EMC 大致分为 EMI(电磁干扰)和 EMS&#x…

Chinese-LangChain:基于ChatGLM-6b+langchain实现本地化知识库检索与智能答案生成

Chinese-LangChain Chinese-LangChain:中文langchain项目,基于ChatGLM-6blangchain实现本地化知识库检索与智能答案生成 https://github.com/yanqiangmiffy/Chinese-LangChain 俗称:小必应,Q.Talk,强聊,Qi…

python中的logging模块:从入门到高阶

简单使用 在 Python 中,可以使用内置的 logging 模块来记录应用程序的信息。最简单的用法是使用 basicConfig() 函数配置 logging 模块,然后使用 getLogger() 方法创建一个 Logger 对象,用于记录信息。下面是一个简单的例子: im…

基于html+css的图片展示16

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

No.043<软考>《(高项)备考大全》【第26章】软件工程国家标准

【第26章】软件工程国家标准 1 章节相关1.1 考试相关 2 标准2.1 标准级别及目录 3 软件工程术语4 软件生存周期过程、活动和任务4.1 必背4.2 ★软件生命周期各阶段与软件文档编制工作的关系--熟悉.4.3 各类人员与软件文档的使用关系--熟悉 5 文档控制5.1 SRS需求规格说明书 6 软…

一年一度的PMO大会将于2023年6月在京召开

企业要基业长青就必须持续保持组织活力。企业的内外部环境不会一成不变,顺应变化及时调整变革避免组织出现僵化低效才能在激烈的市场竞争中存活下来。PMO从成立到逐渐发挥越来越强的作用本身即是一种组织变革的过程,从这个意义上来说PMO因组织变革而生&a…

Nginx Rewrite

常用的Nginx正则表达式 ^:匹配输入字符串的起始位置 $ : 匹配输入字符串的结束位置 * : 匹配前面的字符零次或多次 :匹配前面的字符一次或多次 ?: 匹配前面的字符零次或一次 . : 匹配除“\n”之外的任何单个字符 ^$ : 空行 \:将后面…

百度发布Apollo城市智驾,距离AI智能驾驶还有多远?

推荐:将NSDT场景编辑器加入你的3D工具链。 工具集:NSDT简石数字孪生 随着人工智能技术的不断发展,智能驾驶已经成为了汽车行业的一个重要领域。智能驾驶可以减少人为驾驶的错误和疲劳驾驶等不安全因素,提高驾驶安全性&#xff0c…

内蒙农信携手星环科技建设农信大数据平台,激活金融业务创新

背景 内蒙古自治区农村信用社联合社(简称“内蒙农信”)经过多年的信息化建设,目前投产使用的信息化系统近100套,产生了大量的数据。该社于2019年采用MPP架构的分布式数据库,实现了40多套业务系统数据的归集、标准化处理…

1007、1009:与进制问题、输出问题

1007 题目:本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A B * Q R成立 思路:对于数字元素拆分,除法的计算方法用代码实现(唯一一点就是在输出的…

如何一招搞定PCB阻焊过孔问题?

PCB阻焊油墨根据固化方式,阻焊油墨有感光显影型的油墨,有热固化的热固油墨,还有UV光固化的UV油墨。而根据板材分类,又有PCB硬板阻焊油墨,FPC软板阻焊油墨,还有铝基板阻焊油墨,铝基板油墨也可以用…

Elasticsearch:使用 Elastic APM 监控 Android 应用程序(二)

在我之前的文章 “Elasticsearch:使用 Elastic APM 监控 Android 应用程序(一)” 中,我详述了如何使用 Elastic APM 来监控 Android 应用程序。在今天的文章中,我来详述如何部署 Elastic Stack,并使用文章中…

《港联证券》新三板股票交易规则是什么?如何进行交易?

新三板分为根底层、创新层和精选层。新三板股票设置了一些规则,既约束了一些新三板挂牌公司的股权进入生意市场,一起也约束了一些投资者进行投资,保证了新三板市场的安全。那么新三板股票生意规则是什么?怎么进行生意?…

【PMP】项目各阶段分别运用什么工具与技术汇总

做项目管理是一条漫漫长路,所有的本事,都是靠一个个项目,一点点积累而来的,并不存在“迅速上手”的方法论。一名普通项目经理的成长,都要经过一定时间的修炼。 数据收集 头脑风暴 在短时间内获得大量创意&#xff0…