This action will force synchronization from 小柒2012/spring-boot-seckill, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
交流群:529135840
运行前一定要看文档说明:https://gitee.com/52itstyle/spring-boot-seckill/wikis
支付服务:https://gitee.com/52itstyle/spring-boot-pay
任务调度:https://gitee.com/52itstyle/spring-boot-quartz
邮件服务:https://gitee.com/52itstyle/spring-boot-mail
搜索服务:https://gitee.com/52itstyle/spring-boot-elasticsearch
私人网盘:https://gitee.com/52itstyle/spring-boot-CloudDisk
JDK1.8、Maven、Mysql、IntelliJ IDEA、SpringBoot1.5.10、zookeeper3.4.6、kafka_2.11、redis-2.8.4、curator-2.10.0
win环境redis:https://gitee.com/52itstyle/spring-boot-seckill/tree/master/src/main/resources/redis
启动前 请配置 application.properties 中相关redis、zk以及kafka相关地址,建议在Linux下安装使用。
数据库脚本位于 src/main/resource/sql 下面,启动前请自行导入。
配置完成,运行Application中的main方法,访问 http://localhost:8080/seckill/swagger-ui.html 进行API测试。
秒杀商品页:http://localhost:8080/seckill/index.shtml ,部分功能待完成。
本测试案例单纯为了学习,某些案例并不适用于生产环境,大家根据所需自行调整。
http://localhost:8080/seckill/swagger-ui.html
由于工作原因,项目正在完善中(仅供参考),随时更新日志,有疑问请留言或者加群
SpringBoot开发案例从0到1构建分布式秒杀系统,项目案例基本成型,逐步完善中。
秒杀场景无非就是多个用户在同时抢购一件或者多件商品,专用词汇就是所谓的高并发。现实中经常被大家喜闻乐见的场景,一群大妈抢购打折鸡蛋的画面一定不会陌生,如此场面让服务员大姐很无奈,赶上不要钱了。
用户规模可大可小,几百或者上千人的活动单体架构足以可以应付,简单的加锁、进程内队列就可以轻松搞定。一旦上升到百万、千万级别的规模就要考虑分布式集群来应对瞬时高并发。
一般商家在做活动的时候,经常会遇到各种不怀好意的DDOS攻击(利用无辜的吃瓜群众夺取资源),导致真正的我们无法获得服务!所以说高防IP还是很有必要的。
搞活动就意味着人多,接入SLB,对多台云服务器进行流量分发,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
基于SLB价格以及灵活性考虑后面我们接入Nginx做限流分发,来保障后端服务的正常运行。
后端秒杀业务逻辑,基于Redis 或者 Zookeeper 分布式锁,Kafka 或者 Redis 做消息队列,DRDS数据库中间件实现数据的读写分离。
分流、分流、分流,重要的事情说三遍,再牛逼的机器也抵挡不住高级别的并发。
限流、限流、限流,毕竟秒杀商品有限,防刷的前提下没有绝对的公平,根据每个服务的负载能力,设定流量极限。
缓存、缓存、缓存、尽量不要让大量请求穿透到DB层,活动开始前商品信息可以推送至分布式缓存。
异步、异步、异步,分析并识别出可以异步处理的逻辑,比如日志,缩短系统响应时间。
主备、主备、主备,如果有条件做好主备容灾方案也是非常有必要的(参考某年锤子的活动被攻击)。
最后,为了支撑更高的并发,追求更好的性能,可以对服务器的部署模型进行优化,部分请求走正常的秒杀流程,部分请求直接返回秒杀失败,缺点是开发部署时需要维护两套逻辑。
整个压测优化过程就是一个不断优化不断改进的过程,事先通过测试不断发现问题,优化系统,避免问题,指定应急方案,才能让系统的稳定性和性能都得到质的提升。
Grafana+Telegraf+Influxdb监控Tomcat集群方案
Grafana+Prometheus系统监控之SpringBoot
阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏
SpringBoot 2.0 + InfluxDB+ Sentinel 实时监控数据存储
SpringBoot 2.0 + Nacos + Sentinel 流控规则集中存储
SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
可能秒杀架构原理大家都懂,网上也有不少实现方式,但大多都是文字的描述,告诉你如何如何,什么加锁、缓存、队列之类。但很少全面有的案例告诉你如何去做,既然是从0到1,希望以下代码案例可以帮助到你。当然最终落实到生产,还有很长的路要走,要根据自己的业务进行编码,实施并部署。
你将会在代码案例中学到以下知识:
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─itstyle
│ │ │ └─seckill
│ │ │ │ Application.java
│ │ │ │
│ │ │ ├─common
│ │ │ │ ├─aop
│ │ │ │ │ LockAspect.java
│ │ │ │ │ Servicelock.java
│ │ │ │ │
│ │ │ │ ├─api
│ │ │ │ │ SwaggerConfig.java
│ │ │ │ │
│ │ │ │ ├─config
│ │ │ │ │ IndexController.java
│ │ │ │ │ SpringUtil.java
│ │ │ │ │
│ │ │ │ ├─dynamicquery
│ │ │ │ │ DynamicQuery.java
│ │ │ │ │ DynamicQueryImpl.java
│ │ │ │ │ NativeQueryResultEntity.java
│ │ │ │ │
│ │ │ │ ├─entity
│ │ │ │ │ Result.java
│ │ │ │ │ Seckill.java
│ │ │ │ │ SuccessKilled.java
│ │ │ │ │
│ │ │ │ ├─enums
│ │ │ │ │ SeckillStatEnum.java
│ │ │ │ │
│ │ │ │ ├─interceptor
│ │ │ │ │ MyAdapter.java
│ │ │ │ │
│ │ │ │ ├─lock
│ │ │ │ │ LockDemo.java
│ │ │ │ │
│ │ │ │ └─redis
│ │ │ │ RedisConfig.java
│ │ │ │ RedisUtil.java
│ │ │ │
│ │ │ ├─distributedlock
│ │ │ │ ├─redis
│ │ │ │ │ RedissLockDemo.java
│ │ │ │ │ RedissLockUtil.java
│ │ │ │ │ RedissonAutoConfiguration.java
│ │ │ │ │ RedissonProperties.java
│ │ │ │ │
│ │ │ │ └─zookeeper
│ │ │ │ ZkLockUtil.java
│ │ │ │
│ │ │ ├─queue
│ │ │ │ ├─disruptor
│ │ │ │ │ DisruptorUtil.java
│ │ │ │ │ SeckillEvent.java
│ │ │ │ │ SeckillEventConsumer.java
│ │ │ │ │ SeckillEventFactory.java
│ │ │ │ │ SeckillEventMain.java
│ │ │ │ │ SeckillEventProducer.java
│ │ │ │ │
│ │ │ │ ├─jvm
│ │ │ │ │ SeckillQueue.java
│ │ │ │ │ TaskRunner.java
│ │ │ │ │
│ │ │ │ ├─kafka
│ │ │ │ │ KafkaConsumer.java
│ │ │ │ │ KafkaSender.java
│ │ │ │ │
│ │ │ │ └─redis
│ │ │ │ RedisConsumer.java
│ │ │ │ RedisSender.java
│ │ │ │ RedisSubListenerConfig.java
│ │ │ │
│ │ │ ├─repository
│ │ │ │ SeckillRepository.java
│ │ │ │
│ │ │ ├─service
│ │ │ │ │ ICreateHtmlService.java
│ │ │ │ │ ISeckillDistributedService.java
│ │ │ │ │ ISeckillService.java
│ │ │ │ │
│ │ │ │ └─impl
│ │ │ │ CreateHtmlServiceImpl.java
│ │ │ │ SeckillDistributedServiceImpl.java
│ │ │ │ SeckillServiceImpl.java
│ │ │ │
│ │ │ └─web
│ │ │ CreateHtmlController.java
│ │ │ SeckillController.java
│ │ │ SeckillDistributedController.java
│ │ │
│ │ ├─resources
│ │ │ │ application.properties
│ │ │ │ logback-spring.xml
│ │ │ │
│ │ │ ├─sql
│ │ │ │ seckill.sql
│ │ │ │
│ │ │ ├─static
│ │ │ │ ├─goods
│ │ │ │ │ ├─images
│ │ │ │ │ │ │
│ │ │ │ │ │ └─shopdetail
│ │ │ │ │ │
│ │ │ │ │ ├─js
│ │ │ │ │ │ common.js
│ │ │ │ │ │ jquery-1.9.1.min.js
│ │ │ │ │ │
│ │ │ │ │ └─style
│ │ │ │ │ shopdetail.css
│ │ │ │ │
│ │ │ │ ├─iview
│ │ │ │ │ │ iview.css
│ │ │ │ │ │ iview.min.js
│ │ │ │ │ │
│ │ │ │ │ └─fonts
│ │ │ │ │ ionicons.eot
│ │ │ │ │ ionicons.svg
│ │ │ │ │ ionicons.ttf
│ │ │ │ │ ionicons.woff
│ │ │ │ │
│ │ │ │ └─template
│ │ │ │ goods.flt
│ │ │ │
│ │ │ └─templates
│ │ │ 1000.html
│ │ │ 1001.html
│ │ │ 1002.html
│ │ │ 1003.html
│ │ │ index.html
│ │ │
一个有温度的微信公众号,期待与你共同进步,分享美文,分享各种Java学习资源
从零学Python:https://gitee.com/52itstyle/Python
在线百度语音播报:https://gitee.com/52itstyle/baidu-speech
演示地址:https://speech.52itstyle.vip
这可能是东半球最好的妹子图小程序,点她、点她、点她!!!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。