四阶段常见的面试概念

1.什么是Redis持久化?简述rdb和aof的比较?

        Redis持久化就是将数据保存到磁盘上,在重启服务后可以查询到以前的数据

        RDB持久化文件,速度比较快,而且存储的是一个二进制的文件,传输起来很方便
在指定的时间间隔内,将内存中的数据集的快照写入磁盘。默认保存在/usr/local/bin目录下的dump.rdb文件中

        AOF(Append Only File)AOF以独立日志的方式记录每次写命令(读操作不记录),重启时再重新执行AOF文件中的命令来恢复数据。AOF会先把命令追加在AOF缓冲区,然后根据对应策略写入硬盘(appendfsync),它只许追加文件但不可以改写文件

2.Redis的淘汰机制

淘汰策略                                             描述

volatile-lru                            在内存不足时,Redis会在设置过了生存时间的key中干掉一个最近最少使用的key
allkeys-lru                           在内存不足时,Redis会在全部的key中干掉一个最近最少使用的key
volatile-lfu                             在内存不足时,Redis会在设置过了生存时间的key中干掉一个最近最少频次使用的key
allkeys-lfu                            在内存不足时,Redis会在全部的key中干掉一个最近最少频次使用的key
volatile-random                     在内存不足时,Redis会在设置过了生存时间的key中随机干掉一个
allkeys-random                     在内存不足时,Redis会在全部的key中随机干掉一个
volatil-ttl                               在内存不足时,Redis会在设置过了生存时间的key中干掉一个剩余生存时间最少的key
noeviction                            在内存不足时,直接报错,默认值

3.简要概述什么是Redis的缓存穿透、缓存雪崩、缓存击穿?

        缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透

        缓存雪崩,是指在某个时间段,缓存集中过期失效,导致数据库异常的状况,key对应的数据存在,但在Redis中过期或者是缓存服务直接宕机,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮

        缓存击穿,key对应的数据存在,但在Redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,但是缓存回设期,这个时候大并发的请求可能会瞬间把后端DB压垮。例如,微博热搜问题

4.Redis的哨兵机制的作用是什么?

        监测redis集群,并在主从集群的master、slave的出现故障时自动恢复

5.Rabbitmq如何保证消息不丢失?

        生产者提交给消息服务器时,使用确认机制
        消息服务器对应的队列、交换机等都持久化,保证数据的不丢失
        消费者采用消息确认机制,保证数据的不丢失

6.简要概述RabbitMQ的常见工作模式有哪些?

        Hello World(简单模式), Work queues(工作队列模式),Publish/Subscribe(发布订阅模式),Routing(路由模式),Topics(主题模式),RPC(远程过程调用模式),Publisher Confirms(发布者确认模式), 经常使用的是发布订阅模式,路由模式和主题模式

7.简要概述使用RabbitMQ的场景?

  • 单发送单接收:简单的发送与接收,没有特别的处理。
  • 单发送多接收:一个发送端,多个接收端,如分布式的任务派发。为了保证消息发送的可靠性,不丢失消息,使消息持久化了。同时为了防止接收端在处理消息时down掉,只有在消息处理完成后才发送ack消息。
  • Publish/Subscribe(发布、订阅模式):发送端发送广播消息,多个接收端接收。应用场景挺多的。比如客户下单后,会发送消息告诉客户下单成功并同时通知仓库出货等
  • 路由 Routing (按路线发送接收):发送端按routing key发送消息,不同的接收端按不同的routing key接收消息
  • 主题交换机Topics (按topic发送接收):发送端不只按固定的routing key发送消息,而是按字符串“匹配”发送,接收端同样如此
  • 远程过程调用 PRC
  • 发布者确认:Publisher Confirms是RabbitMQ扩展,可以实现可靠的发布。在通道上启用发布者确认后,代理将异步确认客户端发布的消息,这意味着它们已在服务器端处理,它在消息服务器持久化消息后通知消息生产者发送成功。

8.RabbitMQ怎么实现延迟消息队列?

        将消息队列设置过期时间,并将这个队列与死信队列进行绑定,等待消息过期后进入死信队列,从死信队列中获取数据,从而实现消息的延迟发送

9.Elasticsearch的文档是什么?

         将查询到的对象序列化成 JSON 并存储到 Elasticsearch 中,,指定了唯一 ID,并且还会索引(index)每个文档的内容使之可以被搜索

10.ElasticSearch中的倒排索引是什么

        将文档中的值当做索引,包含该值的文档id作为记录,反过来查询

11.ElasticSearch是如何实现Master选举的?

        如果对某个节点的投票数(n/2+1)达到一定的值,并且该节点自己也选举自己,那这个节点就是master。否则重新选举一直到满足上述条件

12.什么是Spring Cloud?

         Spring Cloud是一系列框架的有序集合,Spring Cloud其实是一套规范,用于构建微服务架构的规范,而不是一个可以拿来即用的框架

13.Spring Cloud如何实现服务的注册和发现?

          Spring Cloud使用erureka server, 然后所有需要访问配置文件的应用都作为一个erureka client注册上去。eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳,在默认情况下erureka server也是一个eureka client ,必须要指定一个 server,将服务注册到注册中心后,可以通过我们注册时候命名的唯一id来访问该服务

14.什么是服务熔断和服务降级?

         服务熔断:当扇出链路的某个微服务不可用或者响应时间太长时,熔断该节点微服务的调用,进行服务的降级,快速返回错误的响应信息。当检测到该节点微服务调⽤响应正常后,恢复调用链路(和服务降级一起使用,重点在"断",切断对下游服务的调用)
         服务降级:把无关紧要的服务关掉,留给目前处于高峰的服务,每个服务都要在关停掉后能给用户返回一个默认值

15.Spring Cloud的主要组件有哪些?并简要概述其作用

 组件                         第一代Spring Cloud                             第二代Spring Cloud

注册中心                         Netflix Eureka                                         阿里巴巴Nacos
客户端负载均衡               Netflix Ribbon                                阿里巴巴Dubbo LB、Spring Cloud Loadbalancer
熔断器                            Netflix Hystrix                                     阿里巴巴Sentinel
网关                          Netflix Zuul,性能一般,未来将                官方Spring Cloud Gateway
                                    退出SpringCloud生态圈    
配置中心                         官方Spring Cloud Config                                     阿里巴巴Nacos、携程Apollo
服务调心                                 Netflix Feign                                                 阿里巴巴Dubbo RPC
消息驱动                         官方Spring Cloud Stream                           /
链路追踪                         官方Spring Cloud Sleuth/Zipkin                  /
分布式事务                              /                                              阿里巴巴seata分布式事务方案

16.什么是Nacos?以及Nacos有什么作用?

         Nacos是阿里巴巴开源的一个针对微服务架构中服务发现、配置管理和服务管理的平台

                作用

  •               服务发现与健康检查。
  •                动态配置管理。
  •                动态DNS服务。

17.微服务之间是如何独立通讯的?

        系统之间各个服务是可以独立部署,是松耦合的。每个服务仅关注于完成一个任务并很好的完成该任务,通过RestTemplate来进行通信

猜你喜欢

转载自blog.csdn.net/weixin_68926017/article/details/131829029