面试项目经验相关技巧

news2024/9/28 19:27:19

前言

面试问项目经验主要是想了解所做项目用到的技术,以及自己在项目中扮演的角色。

一、秒杀系统

秒杀系统往往不是咱的项目经验,但是面试可能会问,在说自己项目经验的时候也可以往秒杀和高并发上面带。

可能遇到的问题

  1. 高并发

    一般就是比如10w人去抢购100个礼品,供不应求,而且并发量是超高的,可能几秒内就几千几万个并发。

  2. 超卖

    需要保证秒杀售卖的商品数量正好等于或者小于设定的值,而肯定不能超过。比如商家预算可以便宜售卖100个产品,如果卖出了200个就是很严重的事故了。

  3. 恶意请求
    比如黄牛的售票软件频繁发送请求,比人速度快多了。

  4. 链接暴露
    我理解就是泄露了网页源码,或者能被看到接口地址然后直接绕开前端进行请求,或者被抓包了。

  5. 数据库压力
    这应该包括数据库和缓存的压力,是比较容易想到的。

解决问题的方法

1. 系统架构

分布式部署,分布式架构,服务采用单一职责。秒杀相关的服务和代码单独部署,也可以单独使用一个数据库。

单一职责的好处就是就算秒杀没抗住,秒杀库崩了,服务挂了,也不会影响到其他的服务。

2.接口校验

为了防止接口链接暴露之后,黄牛通过程序获取北京时间,在时间到的一瞬间秒杀,这样比人手点快多了。

个人认为可以采用登录认证,动态链接的方式,动态生成口令让后端校验,或者增加接口签名

3.Redis集群

edis集群,主从同步、读写分离,我们还搞点哨兵,开启持久化直接无敌高可用!

4.Nginx

Nginx大家想必都不陌生了吧,这玩意是高性能的web服务器,并发也随便顶几万不是梦,但是我们的Tomcat只能顶几百的并发呀,那简单呀负载均衡嘛,一台服务几百,那就多搞点,在秒杀的时候多租点流量机。

通过Nginx将流量分发给不同的服务。

恶意请求拦截也需要用到它,一般单个用户请求次数太夸张,不像人为的请求在网关那一层就得拦截掉了,不然请求多了他抢不抢得到是一回事,服务器压力上去了,可能占用网络带宽或者把服务器打崩、缓存击穿等等。

5.资源静态化

前端有自己的服务器,不通过后端来获取图片等资源。

6.按钮控制

前端定时请求后端获取最新的北京时间,等时间到了也可以再过几秒再给请求。

7.限流

  • 前端限流:这个很简单,一般秒杀不会让你一直点的,一般都是点击一下或者两下然后几秒之后才可以继续点击,这也是保护服务器的一种手段。
  • 后端限流:秒杀的时候肯定是涉及到后续的订单生成和支付等操作,但是都只是成功的幸运儿才会走到那一步,那一旦100个产品卖光了,return了一个false,前端直接秒杀结束,然后你后端也关闭后续无效请求的介入了。

8.库存预热

我们要开始秒杀前你通过定时任务或者运维同学提前把商品的库存加载到Redis中去,让整个流程都在Redis里面去做,然后等秒杀介绍了,再异步的去修改库存就好了。
但是用了Redis就有一个问题了,我们上面说了我们采用主从,就是我们会去读取库存然后再判断然后有库存才去减库存,正常情况没问题,但是高并发的情况问题就很大了。

Lua脚本

Lua脚本是类似Redis事务,有一定的原子性,不会被其他命令插队,可以完成一些Redis事务性的操作。这点是关键。知道原理了,我们就写一个脚本把判断库存扣减库存的操作都写在一个脚本丢给Redis去做,那到0了后面的都Return False了是吧,一个失败了你修改一个开关,直接挡住所有的请求,然后再做后面的事情嘛。

9.限流&降级&熔断&隔离

熔断是不影响别的系统,隔离是自己不行了也不去调其他系统服务了。限流是顶不住了挡一部分流量,降级就是当系统的容量达到一定程度时,限制或者关闭系统的某些非核心功能,从而把有限的资源保留给更核心的业务。降级可以有个开关去实现。

10.削峰填谷

把请求放消息队列,然后一点点消费去改库存,不过单个商品其实一次修改就够了,我这里说的是某个点多个商品一起秒杀的场景,像极了双十一零点。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云KMS创建应用接入点

1.进入KMS控制台https://kms.console.aliyun.com/cn-beijing/applicationAP/list2.应用管理->创建应用接入点应用接入点可以想象成一个入口。入口打开的时候,运行在你服务器中的代码(KMS客户端)才可以与阿里云的KMS实例通讯。2.1设置入口名…

【软件测试】离开“浪浪山“测试人迎来的春天......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 这几年因为疫情、经…

Activiti7工作环境搭建_创建基础工程自动创建Activiti数据库表---工作流工作笔记004

然后我们开始来搭建activiti的环境 首先给idea安装activiti插件,从插件里搜索 actiBPM注意,这个直接在idea中搜索可能搜索不到,因为太旧了这个工具,新的idea已经不支持,需要手动去actiBpm 官网下载以后手动安装 下载就可以了 下载以后点击齿轮,然后选择从硬盘安装 选择下载好的…

注册公司认缴vs实缴,选择哪一个更好?

前言 上一篇说了在创业的时候先进行选择公司类型,然后在公司注册过程中都需要登记公司的注册资本,会涉及注册资金这一点,而现在有认缴制和实缴制,到底选择哪一个更好呢? 在选择之前,先来和大家分享下认缴制…

PyG-节点分类+链接预测+异常检测示例

引言图神经网络(Graph Neural Networks)是一种针对图结构数据(如社交图、网络安全网络或分子表示)设计的机器学习算法。它在过去几年里发展迅速,被用于许多不同的应用程序。在这篇文章中我们将回顾GNN的基础知识,然后使用Pytorch Geometric解决一些常见的…

idea本地debug调试DATAX插件运行

datax官方github地址:GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。 接触datax是看重他的数据采集功能和可以扩展插件的功能,根据官方说明,DATAX是以python来调用插件的运行json配置,但对于二次开发插件的…

nacos权限区分

背景 nacos的默认是不进行分配权限的,那么这样就带来了一个问题,如果多项目共同使用一个nacos,可以带了一个情况是开发人员误操作,把其他项目的nacos配置文件更改或者删除。那么如何解决这个问题呢?就是把nacos进行分…

网络知识详解之:网络攻击与安全防护

网络知识详解之:网络攻击与安全防护 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解网络知识详解之:HTTP协议基础网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)…

Kotlin 1.8.0 现已发布,有那些新特性?

文章目录**如何安装 Kotlin 1.8.0****如果您遇到任何问题****更多文章和视频**结语Kotlin 1.8.0 版本现已发布,以下是其部分最大亮点: JVM 的新实验性功能:递归复制或删除目录内容提升了 kotlin-reflect 性能新的-Xdebug编译器选项&#xff…

PCB铺铜技巧如何铺铜经验总结

🏡《总目录》 目录1, 什么是铺铜2,铺铜的好处3,如何铺铜4,铺铜的经验原则5,铺铜的注意事项1, 什么是铺铜 铺铜是指在PCB电气层添加整块的铜皮;铺铜包括电源层铺铜,地层铺…

openofdm03:Frequency Offset Correction

载波频率偏移(Carrier Frequency Offset,CFO):发射机和接收机本振频率之差,会造成接收到的I/Q采样值的相位旋转。This symptom of this offset is a phase rotation of incoming I/Q samples (time domain). The CFO c…

基于语义分割实现人脸图像的皱纹检测定位与分割

前言 人脸皱纹主要区分有额纹、川字纹、眼下纹、法令纹、嘴角纹,眼角纹等,在美颜相机,智能医美等于应用领域里,需要对人脸皱纹进行检测、定位、分割,测量等。 传统图像算法的皱纹检测 1.传统算法的皱纹检测可参考《…

仿京东PC网页商品详情的放大镜效果(原理+代码)

实现效果 黑色只不过是转gif出问题而已 准备工作 1. 访问该网址,理解我们要弄的放大镜效果,鼠标经过商品图片,显示一个黄色的放大选区,右边显示该选区的大图。 2. 获取商品图片和商品大图 【摩托罗拉moto X30 Pro】摩托罗拉mot…

protocol-buffers 基础(一)

protocol-buffers 官网 Github 一、概述 协议缓冲区(protocol-buffers)是一种与语言无关、与平台无关的可扩展机制,用于序列化结构化数据。 协议缓冲区提供了一种与语言无关、与平台无关、可扩展的机制,用于以向前兼容和向后兼…

【深度学习笔记】全卷积网络FCN及 ROI Pooling 和 ROI Align 的区别

问题 FCN 是语义分割的开山之作,没理由不了解。最近发现学习最快的方式还是看别人的教学视频,很多时候博客看一大推,没几个能讲地明白的,确实啊,视频都得用四五十分钟的东西,一个博客得写得多详细才能覆盖到方方面面呀,以后还是先借助视频来学习,然后再根据源码进一步…

leetcode 1669. 合并两个链表【python3一次遍历方法详细过程描述】

题目 给你两个链表list1和list2,它们包含的元素分别为n个和m个。请你将list1中下标从a到b的全部节点都删除,并将list2接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请你返回结果链表的头指针。 示例1: 输入&…

网络原理(TCP/IP五层协议)(二)

目录TCP 中的一些主要机制1.确认应答机制(安全机制)2.超时重传机制(安全机制)3.连接管理机制(安全机制)如何建立连接:三次握手如何断开连接:四次挥手TCP 中的一些主要机制 TCP对数据传输提供的管控机制,主要体现在两个方面:安全和…

C++右值引用相关

能够取地址值、有名字的就是左值,不能取地址值、没名字的就是右值。 移动语义 将内存的所有权从一个对象转换到另一个对象,高效的移动来替换效率低下的赋值。 完美转发 定义一个函数模板,该函数模板可以接受任意类型参数,然后将参…

即时通讯开发之TCP/IP中的IP协议、ARP协议

IP 协议是 TCP/IP 协议的核心,所有的 TCP,UDP,IMCP,IGCP 的数据都以 IP 数据格式传输。要注意的是,IP 不是可靠的协议,这是 说,IP 协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP 或 UDP 要做的事情。所以这也就出现了 TCP 是一个可靠的协议,而 UDP 就没有…

前端开发:JS中关于八皇后算法的使用

前言 在前端开发过程中,关于算法的使用也是非常常见的操作,尤其是处理一些复杂的业务场景,还有就是前端获取到后端返回的复杂结构的数据,所以说前端开发中处处都有算法使用的场景。开发者从接触编程开发开始,就与算法脱…