当前位置: 首页 > news >正文

04-微服务 面试题-mk

文章目录

  • 1.Spring Cloud 常见的组件有哪些?
  • 2.服务注册和发现是什么意思?(Spring Cloud 如何实现服务注册发现)
  • 3.你们项目负载均衡如何实现的 ?
  • 4.什么是服务雪崩,怎么解决这个问题?
  • 5.你们服务是怎么监控的?
  • 6.微服务限流(漏桶算法、令牌桶算法)
  • 7.解释一下CAP和BASE
  • 8.你们采用哪种分布式事务解决方案?
    • 8.1.seata的XA模式(银行业务)
    • 8.2.AT模式原理(互联网业务)
    • 8.3.TCC模式原理(银行业务)
    • 8.4.MQ分布式事务
  • 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内的多个服务做轮询(默认)

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

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

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

  • 什么是服务雪崩
  • 熔断降级(通过Hystix 服务熔断降级来解决 )
  • 限流(预防)
    在这里插入图片描述
    服务降级

服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃
在这里插入图片描述
在这里插入图片描述
服务熔断

Hystrix 熔断机制,用于监控微服务调用情况,?默认是关闭的,如果需要开启需要在引导类上添加注解:@EnableCircuitBreaker
如果检测到 10 秒内请求的失败率超过 50%,就触发熔断机制。之后每隔 5 秒重新尝试请求微服务,如果微服务不能响应࿰

相关文章:

  • 斐波那契数列 (Fibonacci Sequence) C++
  • 0.DockerCE起步之Linux相关【完善中】
  • 提示词 (Prompt)
  • 树上搜索 第32次CCF-CSP计算机软件能力认证
  • 激光院董事长龚赤坤到北京研发中心检查指导工作
  • 深入解析 Spring AI ChatClient:构建高效 AI 应用的终极指南
  • 2025年3月 Scratch图形化四级 真题解析 中国电子学会全国青少年软件编程等级考试
  • ida 使用记录
  • 基于javaweb的SpringBoot新闻视频发布推荐评论系统(源码+部署文档)
  • Windows系统Python多版本运行解决TensorFlow安装问题(附详细图文)
  • 【我的创作纪念日】
  • 使用MVC模式开发cocos游戏功能
  • 基于springboot餐饮连锁店管理系统
  • HTML — 浮动
  • 2-刷力扣问题记录
  • .py文件和.ipynb文件的区别:完整教程
  • 【安装配置教程】在linux使用nginx部署vue项目
  • 【玩泰山派】5、点灯,驱动led (使用python库操作)
  • GMSL 使用 GPIO Forward 功能实现 Frame Sync
  • MetaGPT深度解析:重塑AI协作开发的智能体框架实践指南
  • 做网站的工具/专业恶意点击软件
  • wordpress 转盘插件/祁阳seo
  • 缅甸做网站/线下推广渠道有哪些方式
  • 门头沟做网站公司/专业seo网络推广
  • 电商网站设计公司可去亿企邦/百度知道合伙人答题兼职
  • 深圳市罗湖区网站建设/简述seo的应用范围