面试经典情景题:高并发解决方案

面试经典情景题:高并发解决方案面试经典情景题 高并发解决方案情景模拟 在很多个用户同时访问网站的时候 例如 抢购或者双十一的时候 如何避免服务器宕机或者数据库挂掉的问题 请你提供几种解决方案 1 静态资源与后台服务进行分离静态资源主要包括图片 视频 js css 和一些资源文件等 这些文件因为没有状态所以分离比较简单 直接存放到响应的服务器就可以了 一般会使用专门的域名去访问 通过不同的域名可以让浏览器直接访问资源服务器而

面试经典情景题:高并发解决方案

情景模拟:在很多个用户同时访问网站的时候,例如:抢购或者双十一的时候。如何避免服务器宕机或者数据库挂掉的问题,请你提供几种解决方案。

1、静态资源与后台服务进行分离

2、做页面静态化

静态化的意思就是将数据渲染后的动态页面变成一个html静态页面的保存起来,如果以后需要再次访问该页面,则将该请求重定向到静态页面。这样就不需要再向数据库或者缓存中拿去数据然后再进行渲染页面,返回到客户端。大大的提高了响应速度,减轻了服务端的负担。这个原理其实和缓存一样,只是将整个页面进行了缓存。nginx就自带了页面静态化的解决方案。

3、分布式和集群

分布式就是对整个系统进行水平拆分和垂直拆分。垂直拆分就是每一个功能模块都拆分成一个可以独立运行的微服务,从客户端发来的请求会根据所请求的功能转发到不同的微服务,这就避免了单体应用服务每一个请求都会请求同一个应用服务的问题。而且微服务还实现了模块与模块之间的解耦合,这样就避免了后期优化的时候,因为不知道谁调用谁而不敢修改代码的问题。而且如果一个微服务的并发量太大,可以对微服务进行水平扩展,也就是增加提供该服务的应用服务器数量,提高并发量,这就是我们所说的集群。水平拆分就是将每个微服务进行分层,实现微服务内部的解耦合。例如分为web层,service层,mapper层等等。分布式和集群是解决高并发的核心,它是整个系统架构的高并发解决方案。

4、反向代理

反向代理就是我们直接访问的服务器并不提供真正的系统服务,它只是个代理服务器,将发来的请求转发到真正的系统服务器里,一般比较常用的是nginx。它可以做负载均衡,避免集群里的应用服务分配请求不均匀导致的个别应用服务器宕机问题。

5、数据库集群和拆分

6、使用缓存

这个在一定程度上是可以提高用户的并发量的,但是如果访问量大的话,有可能会因为缓存数据过大,造成内存空间不足导致应用服务器挂掉。

7、消息队列流量削峰

前面处理高并发的方案都是通过优化后台服务来是实现的,那我们换个角度,我们对请求进行处理。我们先来模拟一个场景,就是怎么处理抢购的时候的一秒内数十万的高并发。在那么短的时间内,那么高的并发,那很有可能或让代理服务器瘫痪。为了避免这种情况,我们需要使用消息队列来进行流量削峰。原理也很简单,就是我们比如说抢购的商品只有1000件,但是却有10万个人抢购,那我们就用消息队列缓存先到的1000个请求,将后面的那些请求直接响应请求,提示抢购失败,然后慢慢的对缓存中的请求进行处理。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227904.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午8:15
下一篇 2026年3月16日 下午8:15


相关推荐

  • pycharm激活码2022【2021.8最新】

    (pycharm激活码2022)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWNlbnNlSWQi…

    2022年3月26日
    82
  • Prometheus监控DELL服务器硬件

    Prometheus监控DELL服务器硬件前言注意标题说的监控 dell 服务器硬件 指的是监控服务器硬件的状态 磁盘 内存 电源等的状态 不是指监控硬件性能 磁盘的空间 内存等的使用量 而是类似于 zabbix 监控 idrac 的 snmp 获取硬件状态 现在大部分公司是使用 prometheus 监控容器和服务 zabbix 监控硬件 端口 当然还有其他监控架构 这里就不对比各个监控的优劣了 仅仅是做一篇文档 前提条件 lt 1 gt 各个需要监控的服务器开启 idrac 的 snmp 并设置团体名 类似于密码 默认是 public 注意自己设置的

    2026年3月18日
    2
  • 字符串和字符串数组

    字符串和字符串数组文章目录字符串字符串输出字符串常用方法计算字符串的长度字符串拼接字符串拷贝字符串比较字符串数组字符串用双引号引起来的就是字符串 字符串由字符组成字符串使用 s 格式化输出字符串以 0 结尾 没有 0 就不是字符串只要是用双引号括起来的都是字符串字符串的本质就是数组注意 字符串变量和普通的字符数组有一定的区别 C 语言规定 字符串必须以 0 结尾 作为字符串的结束符号 所以字符串变量的元素

    2026年3月20日
    2
  • 竞争性需求分析

    竞争性需求分析

    2021年11月18日
    50
  • 天降公网ip | 你也许已经有公网IP了

    天降公网ip | 你也许已经有公网IP了背景之前因为家里是移动的宽带 不给你分配公网 ip 所以你无法实现类似在逛街的时候远程连接家里的电脑之类的操作 相比于移动 我哥家里的宽带是电信的 他一个电话过去 电信立马给了公网 ip 所以他可以随时随地远程控制他的电脑 这令我很羡慕 内网穿透之旅当然了 在过去一个学期里 随着知识和经验的进步 我学会了内网穿透 简单的理解起来 它干的工作类似于端口转发 只不过我们把本地的服务转发到了一台有公网 ip 的云服务器上 上个学期我购买了一台阿里云轻量级应用服务器 然后利用开源的内网穿透工具 fatedier

    2026年3月26日
    2
  • js验证手机号的正则表达式_js正则表达式验证数字

    js验证手机号的正则表达式_js正则表达式验证数字getCode(){if(this.mobile===”){this.$vux.toast.show({type:’text’,text:’请输入手机号’,time:2000});this.selected=tru…

    2025年12月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号