Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >秒杀系统数据的分层校验

秒杀系统数据的分层校验

原创
作者头像
漫谈测试
发布于 2024-08-31 03:35:22
发布于 2024-08-31 03:35:22
2010
举报
文章被收录于专栏:漫谈测试漫谈测试

​分层校验的原则

一、动静分离

将静态数据和动态数据分开处理,静态数据(如商品详情页等)尽量缓存在客户端或前端服务器,减少后端服务器的压力。

二、缓存策略

将大量的读数据缓存在Web端或客户端浏览器,减少对数据库的直接访问,提高响应速度。

三、一致性校验

对读数据不做强一致性校验,以减少系统瓶颈。

对写数据行强一致性校验,确保数据的准确性和一致性。

时间分片对写数据进行基于时间的合理分片,过滤掉过期的或无效的请求。

限流保护对写请求进行限流,防止系统过载,确保系统在高并发下的稳定性。

对大流量系统的数据做分层校验也是一项重要的设计原则,分层校验就是用“漏斗”式的设计来处理请求,如下图

它的核心思想是在不同的层次、不断尽可能地过滤掉无效请求,只有“漏斗”最末端的才是有效请求 要达到此效果就必须对数据做分层的校验,以下是分层校验基本原则:

  1. 先做数据的动静分离;
  2. 将90%的数据缓存在客户端浏览器;
  3. 将动态请求的读数据 Cache Web 端;
  4. 对读数据不做强一致性校验;
  5. 对写数据进行基于时间的合理分片
  6. 对写请求做限流保护;
  7. 对写数据进行强一致性校验。

分层校验具体实现

一、前端校验

用户资格检查:检查用户是否具有参与秒杀的资格。

商品状态检查:检查商品是否处于可售状态。

秒杀状态检查:检查秒杀活动是否已经开始或已经结束。

答题验证(如适用):验证用户是否通过了某些答题验证。

二、中间件校验

在应用层或中间件层进行进一步校验,如检查请求是否合法、营销等价物(如优惠券、淘金币等)是否充足等。

三、后端校验

在写数据系统中进行最终校验,如检查库存是否充足、订单信息是否完整等。

使用数据库事务机制保证数据的一致性,如在下单减库存时,通过数据库事务控制库存的减少。

秒杀系统正是按照这个原则设计的,它的系统架构如下图所示

把大量静态、不需要检验的数据放在离用户最近的地方;在前端读系统中检验一些基本信息如用户是否具有秒杀资格 、商品状态是否正常 用户答题是否正确 、秒杀是否已经结束等;在写数据系统中再校验一些信息:是否非法请求、营销等价物(淘金币等)是否充足、写的数据一致性(检查库存)如何……最后在数据库层保证数据最终准确性(如库存不能减为负数)

分层校验的优势

提高系统响应速度:通过缓存和动静分离,减少了对数据库的访问次数,提高了系统的响应速度。

增强系统稳定性:通过限流和分片策略,防止了系统在高并发下的过载和崩溃。

保证数据准确性:通过强一致性校验和数据库事务机制,确保了数据的准确性和一致性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java编程解析—淘宝大秒杀系统设计
最初的秒杀系统的原型是淘宝详情上的定时上架功能,由于有些卖家为了吸引眼球,把价格压得很低。但这给的详情系统带来了很大压力,为了将这种突发流量隔离,才设计了秒杀系统,文章主要介绍大秒系统以及这种典型读数据的热点问题的解决思路和实践经验。
慕容千语
2019/06/06
1.2K0
Java编程解析—淘宝大秒杀系统设计
淘宝大秒系统设计详解
1. 一些数据2. 热点隔离3. 动静分离4. 基于时间分片削峰5. 数据分层校验6. 实时热点发现7. 关键技术优化点7.1 Java处理大并发动态请求优化7.2 同一商品大并发读问题7.3 同一数据大并发更新问题8. 大促热点问题思考
芋道源码
2018/12/13
6380
淘宝大秒系统设计详解
让你负责秒杀系统架构,应该怎么搞?
比如小米秒杀,三星秒杀都是瞬时抢走十几万台手机,天猫最快破亿的一个旗舰店,双十一峰值可达到60w以上的qps。后端的k-v集群峰值可达几千万qps,单机可达到30w qps,这些主要是读流量,写流量则小的多,比如对应时间点的减库存写操作也就几kqps。
春哥大魔王
2019/09/17
4940
让你负责秒杀系统架构,应该怎么搞?
秒杀系统流量削峰这事儿应该怎么做?
如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,就在秒杀开始那一秒是一条很直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点。这样一来,就会导致一个特别高的流量峰值,它对资源的消耗是瞬时的。
java架构师
2019/05/10
1.3K0
秒杀系统流量削峰这事儿应该怎么做?
如何设计一个秒杀系统
秒杀本质是要求一个瞬时高发下的承压系统,这也是其区别于其他业务的核心场景。对日常系统秒杀产生的问题逐一进行拆解分类,秒杀对应到架构设计,其实就是高可用、一致性和高性能的要求。关于秒杀系统的设计思考,本文即基于此 3 层依次推进,简述如下——
终有链响
2024/07/29
2060
如何设计一个秒杀系统
【经验】一个秒杀系统的设计思考
秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。
良月柒
2019/12/09
9790
【经验】一个秒杀系统的设计思考
在线面试:如何设计一个秒杀系统?
秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是本文讨论的话题。
田维常
2022/04/19
1K0
在线面试:如何设计一个秒杀系统?
高并发: 流量削峰 与 服务端优化
如果看过秒杀系统的流量监控图的话,会发现它是一条直线,就在秒杀开始那一秒是一条很直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点。这样一来,就会导致一个特别高的流量峰值,它对资源的消耗是瞬时的
BUG弄潮儿
2021/09/10
1.4K0
高并发: 流量削峰 与 服务端优化
秒杀系统设计
读了极客时间许令波的如何设计秒杀系统后,总结出秒杀系统设计的一些需要注意的点,如何从更多的角度去考量一个架构的设计,保证性能和高可用。
leobhao
2022/06/28
1.3K0
秒杀系统设计
秒杀系统流量削峰这事应该怎么做?
如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,就在秒杀开始那一秒是一条很直很直的线,这是因为秒杀请求在时间上高度集中于某一特定的时间点。
良月柒
2019/04/30
9750
秒杀系统流量削峰这事应该怎么做?
秒杀系统之一致性
秒杀系统中,库存是个关键数据,卖不出去是个问题,超卖更是个问题。秒杀场景下的一致性问题,主要就是库存扣减的准确性问题。
终有链响
2024/07/29
2380
秒杀系统瞬时百万并发流量的六种应对之道
作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 源码获取地址:https://t.zsxq.com/0dhvFs5oR 备注:本文节选自 冰河技术 知识星球《Seckill秒杀系统》专栏,文末有福利! 沉淀,成长,突破,帮助他人,成就自我。 本章难度:★★★☆☆ 本章重点:全面阐述建设秒杀系统挑战的应对之道,知己知彼,方案了然于胸,自然
博文视点Broadview
2023/05/19
5220
秒杀系统瞬时百万并发流量的六种应对之道
如何设计一个秒杀系统-极客课程笔记
感兴趣的朋友可以去购买,课程地址:如何设计一个秒杀系统 (geekbang.org)
OwenZhang
2022/01/05
6330
如何设计一个秒杀系统-极客课程笔记
如何设计一个秒杀系统
秒杀已经成为电商不可缺少的一步分了,所谓 买到就是赚到,可以成功吸引到一大堆用户,那程序员面对这些用户该怎么办呢。我们该如何设计秒杀呢?
憧憬博客
2020/10/09
8210
如何设计属于你自己的秒杀系统?
其实,整个秒杀的业务场景并不复杂,可即查看参与秒杀的商品信息,加上购买和支付的动作,如下图所示。
Rude3Knife的公众号
2022/12/10
1.1K0
如何设计属于你自己的秒杀系统?
如何设计一个秒杀系统?
这篇分享源自之前购买的极客时间课程《如何设计一个秒杀系统》,以及书籍《亿级流量网站架构核心技术》。
BookSea
2024/06/18
3450
如何设计一个秒杀系统?
秒杀系统设计
构建一个高并发、高可用的分布式微服务秒杀系统需要从架构设计、流量控制、数据一致性、缓存策略、数据库优化等多个方面综合考虑。以下是核心设计思路和关键技术点:
jack.yang
2025/04/05
4430
秒杀系统设计
如何设计一个秒杀系统?
于是,秒杀系统一般会引入MQ、Redis、MySQL、Nginx等中间件,需要对每个中间件进行高性能、高并发、高可用的分析。
用户7353950
2022/06/23
4820
秒杀系统架构解析:应对高并发的艺术
对于各大电商平台而言,爆款运营和促销活动的日常化已成为常态,而支撑这些的秒杀系统自然是不可或缺的一环。同时,秒杀活动的巨大流量就像一头洪荒之兽,若控制不当,可能会冲击整个交易体系。因此,秒杀系统在交易体系中便扮演着至关重要的角色。
ThoughtWorks
2024/07/04
9590
秒杀系统架构解析:应对高并发的艺术
互联网那些事儿 | 秒杀库存解决方案
电商系统中秒杀是一种常见的业务场景需求,其中核心设计之一就是如何扣减库存。本篇主要分享一些常见库存扣减技术方案,库存扣减设计选择并非一味追求性能更佳,更多的应该考虑根据实际情况来进行架构取舍。在商品购买的过程中,库存的抵扣过程通常包括以下步骤:
Java研究者
2023/08/14
2.1K0
互联网那些事儿 | 秒杀库存解决方案
相关推荐
Java编程解析—淘宝大秒杀系统设计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档