内容简介:一致性 、高可用、高并发情况下的高性能
点击蓝色“ 乔志勇笔记 ”关注我哟
加个“ 星标 ”,第一时间获取推送的文章哦!
一、设计要点
一致性 、高可用、高并发情况下的高性能
二、设计原则
1、数据要尽量少
2、请求数尽量少
3、路径要尽量短
4、依赖要尽量少
5、不要有单点
三、业务上的实践
1、定时上架 "购买按钮"
2、增加答题秒杀
3、减少不必要的装饰功能
4、刷新抢宝 时 刷新指定部分页面
5、采用发送优惠券,抽奖活动,分散流量
四、技术上的实践
(1) 动静分离
1)数据分离:
动态数据:个性化的数据,时间或地域数据
2) 考虑要点 :
1、静态数据的储存
实体机单机部署
统一的cache 层
上cdn
2、动静结合方式
服务端ESI 方案 :freemarker 适用于普通的商品推荐
客户端CSI 方案 : 异步ajax 适用于秒杀推荐
(2)热点数据
1、发现热点数据
静态、动态发现
2、处理热点数据
实时缓存,业务隔离,请求加队列限制
(3) 流量消峰
1、排队
2、答题
3、分层过滤
(4) 一致性的减库存
1)下单减库存 逻辑简单 ,性能更好
2)没有复杂的 SKU 库存和总库存这种联动关系 ,可以用 redis 减库存
3)针对InnoDB锁竞争,可以优化
1、应用层做排队
2、数据库层做排队
(5)高可用的兜底方案(层级递增)
1、降级
2、限流
基于排队策略:
客户端 线程数限流,设置请求超时时间
服务端基于QPS做限流保护
3、拒绝服务
防止系统宕机:
在最前端的 Nginx 上设置过载保护,当机器负载达到某个值时直接拒绝 HTTP 请求并返回 503 错误码,在 Java 层同样也可以设计过载保护
参考:许令波的设计秒杀系统
参考实践代码:https://gitee.com/QiaoZhiYong/spring-boot-seckill
https://github.com/qiaozhiyong/miaosha
近期文章:
如果你喜欢本文
请长按二维码,关注 乔志勇笔记
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 系统设计之系统建设的目的
- 系统设计之路:如何设计一个 URL 短链服务
- 基于电商中台架构-商品系统设计(二):类目设计
- 从Git设计原理到业务系统设计与开发
- 作业收缴系统设计手册(自写开源小系统)
- Git设计原理对业务系统设计与开发的启示
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed Shaw / Example Product Manufacturer / 2011
This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!