场景:如何设计一个秒杀系统

来自hollis八股文

设计一个秒杀系统需要考虑以下问题

秒杀系统存在的问题

1. 高并发流量

2. 热点数据

3. 库存正常扣减

4. 重复下单

5. 对普通交易的影响

6. 业务手段

7. 黄牛

高并发流量

将请求链路变短,把一些流量挡在外面

1. 使用CDN服务存储静态资源,降低服务器开销

2. 使用nginx做黑白名单,过滤掉行为不正常的用户

3. 使用本地缓存,redis 替代数据库进行商品库存扣减

热点数据

一般来说秒杀系统会预测到哪个商品是热点数据

1. 将热点数据放入redis中进行预热

2. 解决热key问题

        加入本地缓存,减少缓存请求链路

        做redis集群架构,备份热key

        将热key拆分,比如 淄博001 淄博002,再根据id对key进行映射

库存的正常扣减

为了高并发,将库存放入redis做扣减

1. 利用redis做缓存,抗住并发流量

2. redis发送mq信息给mq client,进行数据库库存扣除

        mq发送会出现,消息丢失问题(少买)

        下订单的时候,进行账单表的统计

        定时去进行对账

重复下单

1. 解决接口幂等性的问题

        一锁二判三更新

2. 

  • 提交表单前,获取token令牌,并将其存储在redis中
  • 提交表单时,一并将token提交并检验和删除,这一步属于原子操作,我们使用lua脚本

3. 订单重复性判断

黄牛

1. 令牌桶或者漏桶 

2. 识别黄牛id、ip 加入nginx黑名单

业务相关

预售就开始进行筛选

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/550933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSH协议的优缺点

SSH(Secure Shell)是一种用于在计算机网络上进行安全远程访问和执行命令的协议。提供加密通信通道,防止敏感信息在传输过程中被窃听或篡改。SSH还支持文件传输和端口转发等功能,使其成为广泛使用的安全远程管理工具。 1. 安全远程…

对桥接模式的理解

目录 一、背景二、桥接模式的demo1、类型A(形状类型)2、类型B(颜色类型)3、需求:类型A要使用类型B(如:红色的方形)4、Spring的方式 一、背景 在《对装饰器模式的理解》中&#xff0…

MySQL 基础使用

文章目录 一、Navicat 工具链接 Mysql二、数据库的使用1.常用数据类型2. 建表 create3. 删表 drop4. insert 插入数据5. select 查询数据6. update 修改数据7. delete 删除记录truncate table 删除数据 三、字段约束字段1. 主键 自增delete和truncate自增长字段的影响 2. 非空…

CS学习(九)—— 分支实现

if-else 18&#xff1a;若y<x&#xff0c;跳转L2 22&#xff1a;否则&#xff0c;跳转L3。 goto 可见&#xff0c;与if-else类似。但是用goto很low。 条件表达式 又是与if类似&#xff0c;那有没有区别&#xff1f; 当然&#xff0c;条件表达式两个式子都会计算&…

html、css、京东移动端静态页面,资源免费分享,可作为参考,提供InsCode在线运行演示

CSDN将我上传的免费资源私自变成VIP专享资源&#xff0c;且作为作者的我不可修改为免费资源&#xff0c;不可删除&#xff0c;寻找客服无果&#xff0c;很愤怒&#xff0c;&#xff08;我发布免费资源就是希望大家能免费一起用、一起学习&#xff09;&#xff0c;接下来继续寻找…

Leetcode 15. 三数之和(暴力->双指针)

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1…

git clone报错:error invalid path ‘dorisdockerthirdpartiesdocker-composexxxx‘

git clone报错&#xff1a;error: invalid path ‘doris/docker/thirdparties/docker-compose/xxxx’ 在周日晚上&#xff0c;我尝试从GitHub上克隆Doris的代码库&#xff0c;以便进行学习。在使用IntelliJ IDEA进行克隆时&#xff0c;我遇到了一个Git错误。具体操作如下&…

UbuntuServer22.04安装docker

通过ubuntuserver安装docker是搭建开发环境最便捷的方式之一。下面介绍一下再ubuntu22.04上如何安装docker。相关内容参考官网链接&#xff1a;Install Docker Engine on Ubuntu 根据官网推荐&#xff0c;利用apt命令的方式安装&#xff0c;首先需要设置docker仓库&#xff0c…

✌粤嵌—2024/4/3—合并K个升序链表

代码实现&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* merge(struct ListNode *l1, struct ListNode *l2) {if (l1 NULL) {return l2;}if (l2 NULL) {return l1;}struct Lis…

杰发科技AC7840——CAN通信简介(4)_过滤器设置

0. 简介 注意&#xff1a;过滤器最高三位用不到&#xff0c;因此最高位随意设置不影响过滤器。 1. 代码分析 注意设置过滤器数量 解释的有点看不懂 详细解释...也看不大懂 Mask的第0位是0&#xff0c;其他位都是1(就是F?)&#xff0c;那就指定了接收值就是这个数&#xff0c;…

深度强化学习(DRL)算法 附录 6 —— NLP 回顾之预训练模型篇

Self-Attention 模型结构 上图架构以 batch_size 为 1&#xff0c;两个时间步的 X 为例子&#xff0c;计算过程如下&#xff1a; 位置编码 根据 self-attention 的模型结构&#xff0c;改变 X 的输入顺序&#xff0c;不影响 attention 的结果&#xff0c;所以还需要引入额外的…

解决Linux根分区空间不足的方法:利用Home分区进行扩容

前言 在进行系统安装时&#xff0c;一个常见的困扰是默认分区设置可能导致home分区拥有过多的空间&#xff0c;而root分区却显得十分紧缺。这种情况下&#xff0c;用户往往会陷入无法继续安装软件或存储文件的困境。本文将向您展示如何通过合理的调整&#xff0c;将home分区中多…

《剑指 Offer》专项突破版 - 面试题 111 : 计算除法(C++ 实现)

题目链接&#xff1a;计算除法 题目&#xff1a; 输入两个数组 equations 和 values&#xff0c;其中&#xff0c;数组 equations 的每个元素包含两个表示变量名的字符串&#xff0c;数组 values 的每个元素是一个浮点数值。如果 equations[i] 的两个变量名分别是 和 &#…

接口测试——postman

一.下载与安装 https://www.getPostman.com/ 界面导航说明 二.get请求 第一个get请求 批量执行接口请求&#xff1a; 1. 右击run collection 2. 会出现runner标签页 携带参数的GET请求 所谓的查询参数&#xff0c;其实就是URL地址中问号&#xff08;?&#xff09;后面的部分…

易基因: MeRIP-seq揭示lncRNA甲基化通过lncRNA-miRNA/蛋白质轴抑制胃癌干细胞凋亡|文献解读

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 癌症一直是生物学研究的热门话题。关于癌症起源&#xff0c;一种主流观点是癌症干细胞&#xff08;Cancer Stem Cell&#xff0c;CSC&#xff09;的无限增殖。CSC是肿瘤内肿瘤细胞的一个…

textview允许长文本下滑

原本是用scroview textview的&#xff0c;结果长文本的时候&#xff0c;textview会把文本内容截断&#xff1b; 后面在网上找到直接使用textview就能解决长文本问题&#xff0c; 关键代码还是这两个 android:scrollbars“vertical” tv_message_message.setMovementMethod(…

5.HC-05蓝牙模块

配置蓝牙模块 注意需要将蓝牙模块接5v,实测接3.3v好像不太好使的样子 首先需要把蓝牙模块通过TTL串口模块接到我们的电脑,然后打开我们的串口助手 注意,我们现在是配置蓝牙模块,所以需要进入AT模式,需要按着蓝牙模块上的黑色小按钮再上电,这时候模块上的LED灯以一秒慢闪一次…

大数据平台搭建2024(三)

三&#xff1a;HBase安装 提前上传hbase安装包至虚拟机 1 上传、解压 tar -zxvf hbase-2.0.0-alpha2-bin.tar.gz -C /hadoop2 修改配置文件 在/hadoop/hbase-2.0.0-alpha2-bin/conf文件夹里 vi /hadoop/hbase-2.0.0-alpha2/conf/hbase-env.sh修改hbase-env.sh文件 export…

错误分析 (Machine Learning研习十九)

错误分析 您将探索数据准备选项&#xff0c;尝试多个模型&#xff0c;筛选出最佳模型&#xff0c;使用 Grid SearchCV微调其超参数&#xff0c;并尽可能实现自动化。在此&#xff0c;我们假设您已经找到了一个有前途的模型&#xff0c;并希望找到改进它的方法。其中一种方法就…

基于java+springboot+vue实现的健身俱乐部系统(文末源码+Lw+ppt)23-49

摘 要 随着社会的发展&#xff0c;健身俱乐部的管理形势越来越严峻。越来越多的用户利用互联网获得信息&#xff0c;健身信息鱼龙混杂&#xff0c;信息真假难以辨别。为了方便用户更好的获得本健身俱乐部管理信息&#xff0c;因此&#xff0c;设计一种安全高效的健身俱乐部网…