首页 > 编程语言 >#yyds干货盘点#Java面试题

#yyds干货盘点#Java面试题

时间:2023-12-24 21:01:58浏览次数:47  
标签:yyds 面试题 缓存 Java 架构设计 负载 限流 增加 节点

线上接口负载剧增,快扛不住了,你的首选方案是什么

遇到这样的问题,我们的第一反应应该是增加缓存。因为,增加缓存是解决系统性能问题最快速、最高效的方案,它能够快速提升系统的线性吞吐量,效果也最为明显。这就相当于是用空间来换取时间。曾经有人说过,缓存是解决性能问题的万金油,哪里存在性能瓶颈,就往哪里加缓存。

但是程序都已经上线了,增加缓存还来得及吗?因为在增加缓存时需要改代码,所以,临时解决方案就是增加节点。随后,将程序紧急部署到新的节点上,在流量入口增加限流和分发。但是增加节点自然会增加成本,所以增加缓存才是最优的解决方案。

缓存的设计思想在架构设计中十分常见。比如我们每天用的操作系统,不管是Windows、Linux,还是Mac OS都有系统缓存、用户缓存。磁盘有磁盘缓存区、CPU有CPU缓存区。再比如,在我们常用的经典框架中,也经常使用到缓存,Spring有IoC缓存,MyBatis有一级缓存、二级缓存。在架构设计中,可以说缓存无处不在。

因此,当并发量过高扛不住的时候,可以优先采用缓存来缓解负载压力。比如将读取频繁的数据写到缓存中,将动态页面静态化。在加上缓存之后,如果负载压力依然过大,则再考虑增加限流策略,比如消息队列;如果在增加限流后还是压力过大,则再考虑增加服务器节点。

标签:yyds,面试题,缓存,Java,架构设计,负载,限流,增加,节点
From: https://blog.51cto.com/u_15426660/8957031

相关文章

  • JavaImprove--Lesson01--枚举类,泛型
    一.枚举认识枚举类枚举是一种特殊的类枚举的格式:修饰符 enmu  枚举类名{  名称1,名称2;  其它成员}//枚举类publicenumA{//枚举类的第一列必须是罗列枚举对象的名称X,Y,Z;privateStringname;publicStringgetName(){retu......
  • java操作redis
     springdataredis对jedis和lettuce进行了封装SpringDataRdis使用方式 ......
  • spring:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/comm
    Java运行时环境中找不到org.apache.commons.logging.LogFactory这个类。  在maven中导入依赖即可 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version><!-......
  • IoTDB JavaAPI
    文章目录使用样例Java使用样例官方已经给出了相关使用Demo,下载地址为:https://github.com/apache/iotdb直接拉取相对应版本的源码使用样例Java使用样例代码位置iotdb/example/session/src/main/java/org/apache/iotdb/SessionExample.javaiotdb/example/session/src/main/java......
  • 华为面试题,连续出了三年!
    写在前面据说,这是一道被华为2021、2022和2023都出过的题目......
  • Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
     001、报错记录合并gvcf使用脚本如下:gatk CombineGVCFs-RGCF_001704415.2_ARS1.2_genomic.fna--variantgvcf.list-Otest.g.vcf.gz 报错如下: 002、解决方法,设置内存上限可以解决上述报错:gatk--java-options"-Xmx480g-Xms480g-XX:+UseSerialGC"CombineGVC......
  • Java登陆第二十九天——HttpServletRequest和HttpServletResponse
    HttpServletRequestTomcat会自动将客户端请求报文封装为HttpServletRequest对象。HttpServletRequest中请求行常用方法方法描述StringgetMethod()获取请求方法StringgetProtocol()获取请求协议及版本号StringgetRequestURI()获取请求的具体资源StringB......
  • Java搭建检索系统
    步骤:数据预处理:首先,需要对要检索的数据进行预处理。这包括数据清洗、分词、去除停用词、词干化等操作,以便将数据转化为适合索引和搜索的形式。索引构建:接下来,需要构建索引以便进行快速的检索操作。使用Lucene、Elasticsearch或Solr等API,可以创建索引并将预处理后的数据加入到索引中......
  • 在Java开发项目中,有几个关键要点需要注意
    在Java开发项目中,有几个关键要点需要注意需求分析和设计:在项目开发之前,进行充分的需求分析,并设计清晰的系统架构和数据库结构。这有助于确保项目的顺利进行,并减少后期的修改和调整工作。编码规范:遵循统一的编码规范是项目开发中的重要方面。编写清晰、可读性强的代码,使用恰当的命名......
  • c++智能指针和java垃圾回收对比
    c++智能指针和java垃圾回收对比我们都知道C++和java语言的一个巨大差异在于垃圾回收方面,这也是C++程序开发者和java程序开发者之间经常讨论的一个话题。在C++语言中,一般栈上的内存随着函数的生命周期自动进行回收,但是堆上内存(也就是自己new/malloc出来的空间),需要自己手动进行del......