秒杀项目-- 3、浅谈优化思想

本文详述了秒杀项目中的优化措施,包括缓存优化(html缓存和对象缓存)、服务角度的优化(预加载数据、预减库存、异步下单和接口限流)以及接口安全性保障(接口地址隐藏、验证码和限流)。文章还探讨了垂直扩展和水平扩展的概念,以提升系统并发能力。
摘要由CSDN通过智能技术生成

前两节,只是强迫自己再现Springboot项目搭建的过程,增强记忆,熟悉一下SpringBoot的使用;

后面做的是 实现秒杀的业务逻辑 + 优化。

业务逻辑就是 增删改查了,没什么好说的。

但是优化,相较于以前在学校做的增删改查,能打开一个新的视野,对业务处理也会有一个更深的认识。
并且这些经验思想 可以在任何一个项目 复用。
就像一段好的基础框架代码(见Unity开发中的 缓存池),复制到任何一个项目,都能起到很大的基础构建作用。

下面是实际操作过的 优化动作, 最后有一个 视野更大 但是没实践过(很虚)的思路小结。

做过的优化

1、 缓存
用于读取多,变更少场景。 主要应对并发读。
一般用于前端展示中。

2、服务角度
目的: 减少数据库操作、减少redis操作。
思想:将读取的数据 缓存起来

3、接口安全性保障

  • 秒杀接口地址隐藏
    防止接口暴露,被脚本频繁访问
  • 验证码
    也是阻止脚本顺畅进行,设一道门坎
  • 接口限流
    接口限流比较实用;防止脚本级别才能做出的 频繁访问

1、缓存

(1)html缓存

应用: 一般用于列表展示。
思路: 将整个html页面放入 redis缓存中,加一个过期时间(比如60s),后续再次访问的时候,就直接从redis拿取页面数据,返回到 浏览器。
为什么: 所有用户都会访问 商品列表,所以是频繁访问;且修改只有内部人员在修改商品时才会修改,所以有一个 60s失效时间是可以忍受的,或者再更新的时候更新redis数据。
注意: 一般只缓存列表前 几十页,因为后面的页面很少被访问。

优化提升: (访问数据库得到列表的时间 - 访问redis缓存得到html页面的时间)* 访问量。
缺点: 传输的是 整个 html页面,所以也有重复的数据(静态资源),见下面的优化。

(2)对象缓存(前后端分离)

引导: 在前后端分离的 http请求中, 数据传输可以看作两部分: 静态的html页面 + html页面需要渲染的数据。

  • 静态的html页面: 可以被视为静态资源 被管理的(Springboot有对静态资源处理),这部分可以保存在客户端的浏览器中,作为缓存。
  • 动态的渲染数据:可以通过redis 把它当作对象 缓存起来。

Springboot 配置文件 静态资源管理:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值