mirror of
https://github.com/qiurunze123/miaosha.git
synced 2023-11-19 22:41:03 +08:00
48 lines
2.1 KiB
Markdown
48 lines
2.1 KiB
Markdown
|
### 前言
|
|||
|
大家好,之前在公司自己设计并开发了一套完整的秒杀系统,希望和大家分享一下,希望大家能从中收益,如果有意见和好的想法请加我!
|
|||
|
QQ:3341386488
|
|||
|
邮箱:QiuRunZe_key@163.com
|
|||
|
|
|||
|
我会不断完善,希望大家有好的想法拉一个分支提高,一起合作!
|
|||
|
|
|||
|
|
|||
|
觉得不错对您有帮助,麻烦右上角点下star以示鼓励!长期维护不易 多次想放弃 坚持是一种信仰 专注是一种态度!
|
|||
|
|
|||
|
|
|||
|
## 秒杀设计整体流程
|
|||
|
|
|||
|
![整体流程](http://i2.bvimg.com/601558/886c867d6488dfc2.png)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#### 需注意几点:
|
|||
|
1.如何解决卖超问题
|
|||
|
|
|||
|
① sql加上判断如果防止数据变为负数<br>
|
|||
|
② 数据库加唯一索引防止用户重复购买<br>
|
|||
|
③ redis预减库存减少数据库访问 内存标记减少redis访问 请求先入队列缓冲,异步下单,增强用户体验
|
|||
|
|
|||
|
|
|||
|
2.如何解决分布式session<br>
|
|||
|
① 生成一个随机的uuid一类的写回到cookie中<br>
|
|||
|
② redis 内存写入<br>
|
|||
|
③ 下一个页面拿到uuid 内存取对象
|
|||
|
|
|||
|
3.如何优雅解决接口防刷限流 <br>
|
|||
|
>
|
|||
|
如果有缓存的话 这个功能实现起来就和简单,在一个用户访问接口的时候我们把访问次数写到缓存中,在加上一个有效期。
|
|||
|
通过拦截器. 做一个注解 @AccessLimit 然后封装这个注解,可以有效的设置每次访问多少次,有效时间是否需要登录!
|
|||
|
|
|||
|
4.通用缓存key的封装采用什么设计模式?<br>
|
|||
|
|
|||
|
模板模式的优点<br>
|
|||
|
①具体细节步骤实现定义在子类中,子类定义详细处理算法是不会改变算法整体结构。<br>
|
|||
|
②代码复用的基本技术,在数据库设计中尤为重要。<br>
|
|||
|
③存在一种反向的控制结构,通过一个父类调用其子类的操作,通过子类对父类进行扩展增加新的行为,符合“开闭原则”。<br>
|
|||
|
缺点: 每个不同的实现都需要定义一个子类,会导致类的个数增加,系统更加庞大
|
|||
|
|
|||
|
5.LVS , tomcat(apr) , keepalive 高可用 ???? 未来更新 ??<br>
|
|||
|
6.限流算法等未来更新
|
|||
|
|
|||
|
|
|||
|
|