04-微服务 面试题

目录

1.Spring Cloud 常见的组件有哪些?

2.服务注册和发现是什么意思?(Spring Cloud 如何实现服务注册发现)

3.你们项目负载均衡如何实现的 ? 

4.什么是服务雪崩,怎么解决这个问题?

5.你们服务是怎么监控的?

6.微服务限流(漏桶算法、令牌桶算法)

7.解释一下CAP和BASE

8.你们采用哪种分布式事务解决方案?

9.分布式服务的接口幂等性如何设计?

10.你们项目中使用了什么分布式任务调度

11.springboot 项目改造成springcloud 项目的过程



1.Spring Cloud 常见的组件有哪些?

Spring Cloud 5大组件有哪些?

  • 基础的内容考察
  • 回答原则:简单的问题不能答错(一道面试题就能淘汰一个人)新手和老手都要注意

面试参考回答:

面试官:Spring Cloud 5大组件有哪些?

候选人:早期我们一般认为的Spring Cloud五大组件是 

  • Eureka:注册中心
  • Ribbon:负载均衡
  • Feign:远程调用
  • Hystrix:服务熔断
  • Zuul/Gateway:网关

随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件 

  • 注册中心/配置中心 Nacos
  • 负载均衡 Ribbon
  • 服务调用 Feign
  • 服务保护 sentinel
  • 服务网关 Gateway

2.服务注册和发现是什么意思?(Spring Cloud 如何实现服务注册发现)

  • 微服务中必须要使用的组件,考察我们使用微服务的程度
  • 注册中心的核心作用是:服务注册和发现
  • 常见的注册中心:eureka、nocas、zookeeper

我做过的哪个微服务项目,使用了哪个注册中心

Eureka的作用

服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?

  • 我们当时项目采用的eureka作为注册中心,这个也是spring cloud体系中的一个核心组件
  • 服务注册:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、ip、端口等等
  • 服务发现:消费者向eureka拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择一个发起调用
  • 服务监控:服务提供者会每隔30秒向eureka发送心跳,报告健康状态,如果eureka服务90秒没接收到心跳,从eureka中剔除
     

我看你之前也用过nacos、你能说下nacos与eureka的区别?

  • 简历上有体现
  • 面试官比较熟悉nacos和eureka
     

我看你之前也用过nacos、你能说下nacos与eureka的区别?

  • Nacos与eureka的共同点(注册中心)
    • 都支持服务注册和服务拉取
    • 都支持服务提供者心跳方式做健康检测
  • Nacos与Eureka的区别(注册中心)
    • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
    • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
    • Nacos集群默认采用AP(高可用)方式,当集群中存在非临时实例时,采用CP(强一致)模式;Eureka采用AP方式
  • Nacos还支持了配置中心,eureka则只有注册中心,也是选择使用nacos的一个重要原因
     

3.你们项目负载均衡如何实现的 ? 

  • 负载均衡 Ribbon,发起远程调用feign就会使用Ribbon
  • Ribbon负载均衡策略有哪些 ?
  • 如果想自定义负载均衡策略如何实现 ? 

Ribbon负载均衡流程

  • RoundRobinRule:简单轮询服务列表来选择服务器
  • WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小,被选择概率较低
  • RandomRule:随机选择一个可用的服务器
  • BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器(最小连接数)
  • RetryRule:重试机制的选择逻辑(按照轮询方式进行选择,如果出现宕机,会在指定时间内重试)
  • AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较小的实例
  • ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询(默认,区域就近)

如果想自定义负载均衡策略如何实现 ? 

可以自己创建类实现IRule接口 , 然后再通过配置类或者配置文件配置即可 ,通过定义IRule实现可以修改负载均衡规则,有两种方式:
 

你们项目负载均衡如何实现的 ? 

微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是使用了ribbon


Ribbon负载均衡策略有哪些 ? 

  • RoundRobinRule:简单轮询服务列表来选择服务器
  • WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小
  • RandomRule:随机选择一个可用的服务器
  • ZoneAvoidanceRule:区域敏感策略,以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询(默认)


如果想自定义负载均衡策略如何实现 ? 
提供了两种方式:

  1. 创建类实现IRule接口,可以指定负载均衡策略(全局)
  2. 在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略(局部)

4.什么是服务雪崩,怎么解决这个问题?

  • 什么是服务雪崩?
  • 熔断降级(通过Hystix  服务熔断降级来解决 )
  • 限流(预防)

服务降级

服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃
 

</

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值