![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
秒杀项目
一年而已
这个作者很懒,什么都没留下…
展开
-
关于秒杀的一些问题
画一下项目的架构图https://zhuanlan.zhihu.com/p/59944775项目可改进的地方没有设置降级的方案限流做的不够完善,目前只对用户对于某个商品的访问做了限流,没有对整体的流量做限流,比如不法分子有非常多的账号,同时对一个商品发起请求可能造成我们的服务不可用。没有考虑redis穿透的情况处理方案在这个项目中是对库存和静态数据进行了预热,但是实际中有可能某个商品可能一时间快速爆火,如果没有对这些是商品数据进行预热可能会使服务宕掉,需要快速发现热点数据的发现与隔离,.原创 2020-08-08 21:39:22 · 6298 阅读 · 2 评论 -
啥也不懂选手对于秒杀系统的思考(百度)
满纸复制文,一把辛酸泪面试造火箭,工作拧螺丝一、秒杀系统要解决的问题并发读:并发读的优化理念就是减少用户来服务器读数据并发写:并发写的优化理念就是减少用户来服务器写数据,数据库层面要增加新库存放数据,以便做特殊处理(比如:单独保存要秒杀商品信息,单独弄一个表存秒杀订单)在解决以上两个问题之上,还要增加兜底方案二、秒杀系统设计的目标与原则目标就是建立可承受超高流量并发读写,高性能,高可用系统原则就是保证用户请求数据量尽量少、请求数尽量少、路径尽量短、依赖尽量少、分布式部署保证高可用高可原创 2020-07-13 21:58:59 · 603 阅读 · 1 评论 -
秒杀项目学习第七章
主要内容秒杀接口地址隐藏数学公式验证码接口防刷一、秒杀接口隐藏思路:秒杀开始之前,先去请求接口获取秒杀地址接口改造,带上PathVariable参数添加生成地址的接口秒杀收到请求,先验证PathVariable修改页面就是在真正秒杀之前,加一层获取路径。修改Controller生成path,并写入Redis中,以便秒杀时可以验证路径秒杀时从redis中取出路径进行验证一个小修改为了减少服务器压力,客户端秒杀轮询的时候时间间隔调大点二、数学公式验证码思路:点击原创 2020-05-30 11:06:59 · 356 阅读 · 0 评论 -
秒杀项目学习第六章
主要内容Redis预见库存减少数据库访问内存标记减少Redis访问RabbitMQ队列缓冲,异步下单,增强用户体验RabbitMQ安装与Spring Boot集成访问Nginx水平扩展压测思路:减少数据库访问系统初始化,把商品库存数量加载到Redis中收到请求,Redis预减库存,库存不足,直接返回,否则进入3请求入队,立即返回排队中请求出队,生成订单,减少库存客户端轮询,是否秒杀成功一、集成RabbitMQ安装并启动RabbitMQ安装erlang安装Rabbit原创 2020-05-29 11:28:42 · 260 阅读 · 0 评论 -
秒杀项目学习第五章
主要内容页面缓存+URL缓存+对象缓存页面静态化,前后端分离静态资源优化CDN优化一、 页面缓存+URL缓存+对象缓存页面缓存取缓存手动渲染模板结果输出直接返回html页面以获取商品列表页面为例1.原先controller2.现在controller@RequestMapping(value="/to_list", produces="text/html") @ResponseBody public String list(HttpServletRequest requ原创 2020-05-28 19:21:52 · 367 阅读 · 0 评论 -
秒杀项目学习第四章
主要内容JMeter入门自定义变量模拟多个用户JMeter命令行使用Redis压测工具redis-benchmarkSpring Boot打war包一、JMeter入门JMeter相关链接:官网,用户手册压测商品列表页面主要衡量并发在XXX时的QPS是多少1.打开jmeter.bat2.测试计划中添加线程组设置线程组3.在线程组中添加HTTP请求默认值设置参数3.在线程组中添加HTTP请求设置参数4.在线程组中添加监听器如聚合报告压测过程一个bug的解决原创 2020-05-28 10:14:22 · 197 阅读 · 0 评论 -
秒杀项目学习第三章
主要内容数据库设计商品列表页商品详情页订单详情页一、数据库设计商品表goods商品订单表order_info秒杀商品表miaosha_goods秒杀商品订单表miaosha_orderdomain对象1.Goodspublic class Goods { private Long id; private String goodsName; private String goodsTitle; private String goodsImg; private St原创 2020-05-27 23:02:09 · 283 阅读 · 0 评论 -
秒杀项目学习第二章
主要内容数据库设计明文密码两次MD5处理JSR303参数检验+全局异常处理分布式Session一、数据库设计二、两次MD5两次MD5的原因:HTTP在网络上是明文传输的,为了防止不法分子截取数据包,那么就可能获得我们的登陆密码两次MD5的设计方案用户端:PASS = MD5(明文+固定salt)服务端:PASS = MD5(用户输入+随机salt)导包//用于MD5<dependency> <groupId>commons-codec原创 2020-05-27 17:57:45 · 459 阅读 · 0 评论 -
秒杀项目学习第一章
主要内容Spring Boot环境搭建集成Thymeleaf,Result结果封装集成Mybatis+Druid集成Jedis+Redis安装+通用缓存Key封装一、Spring Boot环境搭建创建项目导包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifa原创 2020-05-26 22:14:21 · 304 阅读 · 0 评论 -
秒杀项目学习序章
技术栈学习内容重点关注如何利用缓存如何使用异步如何编写优雅代码各章节介绍第一章 项目框架搭建Spring Boot环境搭建集成Thymeleaf,Result结果封装集成Mybatis+Druid集成Jedis+Redis安装+通用缓存Key封装第二章 实现登陆功能数据库设计明文密码两次MD5处理JSR303参数检验+全局异常处理分布式Session第三章 实现秒杀功能数据库设计商品列表页商品详情页订单详情页第四章 JMeter压测JMet原创 2020-05-26 11:40:06 · 415 阅读 · 2 评论