04-微服务 面试题

news2024/11/17 15:52:28

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负载均衡策略有哪些 ? 

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509617.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    EXCEL根据某列的数字N,增加N-1行相同的数据

    因为工作需要,需要将表格数据拆分,类似于相同的订单有6笔,数据表中就是一行数据但是订单数为6,但是需要将其拆分成相同6笔的订单数为1的数据行。 需要使用VBA代码,具体做法如下: Dim i As Long, j As Long…

    web3D三维引擎(Direct3D、OpenGL、UE、U3D、threejs)基础扫盲

    Hi,我是贝格前端工场的老司机,本文介绍文web3D的几个引擎,做个基础扫盲,如果还不能解决问题,可以私信我,搞私人订制呦。 三维引擎是指用于创建和渲染三维图形的软件框架。它们通常提供了图形处理、物理模拟…

    Springboot+vue的疫情管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

    演示视频: Springbootvue的疫情管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层…

    蓝桥杯2019年第十届省赛真题-修改数组

    查重类题目,想到用标记数组记录是否出现过 但是最坏情况下可能会从头找到小尾巴,时间复杂度O(n2),数据范围106显然超时 再细看下题目,我们重复进行了寻找是否出现过,干脆把每个元素出现过的次数k记录下来,直…

    基于PHP的数字化档案管理系统

    有需要请加文章底部Q哦 可远程调试 基于PHP的数字化档案管理系统 一 介绍 此数字化档案管理系统基于原生PHP,MVC架构开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 php(mvc)mysqlbootstrapphpstudyvscode 二 功能 …

    C#请假与加班案例

    请假余额表示一年当中可以请几天假。输入请假天数,点击请假按钮则减少假期余额。如果请假天数大于当前假期余额,则提示“假期余额不足”。输入加班天数,点击加班按钮则增加假期余额。 private void button1_Click(object sender, EventArgs e…

    php导出excel文件

    环境 php7.4hyperf3composer require phpoffice/phpspreadsheet代码 class IndexController extends AbstractController { /*** Inject* var Picture*/private $picture;public function index(){$res_data[]["robot" > 哈哈机器人,"order" > TES…

    redis 缓冲区详解(性能优化缓冲区优化)

    目录 前言 客户端输入缓冲区 输出缓冲区 集群缓冲区 全量复制缓冲区问题 增量复制缓冲区问题 前言 在我的《Redis 为啥那么快》这篇文章中,详细总结了Redis 为啥那么快。今天当我要详细阐述Redis 的缓冲区时,意识到应该加上Redis 的缓冲区。我们假…

    如何用BI工具对数据进行预处理?数据分析的这项技巧你必须掌握。

    在当今数字化时代,数据不仅是企业决策的基础,也是创新和发展的关键推动力。在面对庞大而复杂的数据集时,如何进行高效的预处理成为了数据分析领域中至关重要的一步。 在进行数据处理和分析的日常工作中,业务普遍使用Excel和SQL这两…

    异步编程和asyncio

    介绍异步编程的重要性和在Python中的应用,特别是在I/O密集型任务和网络编程场景下。 目录 理解异步编程 异步编程基本概念 任务与Future 异步编程的工作原理 事件循环 协程(Coroutines) 异步与同步代码的结合 深入asyncio模块 事件循…

    day61 数据库约束 jdbc

    回顾 1 SQL语句的分类 2创建表的语法 create table 表名( 列名 数据类型 not null, 列名 数据类型 ); 3 删除表 drop table 表名; 数据完整性分类 1实体完整性 (表中每条记录唯一) 2域完整性 3引用完整性 数据完整性约束 实体完整性约束 主键约束 表…

    使用 mysqldump 迁移 MySQL 表 OceanBase

    使用 mysqldump 迁移 MySQL 表 OceanBase 一、什么是mysqldump二、使用mysqldump导出MySQL数据三、将数据导入到OceanBase四、注意 一、什么是mysqldump mysqldump 是 MySQL 数据库管理系统中的一个工具,用于将数据库中的数据导出为文本文件。它可以将整个数据库、…

    spring boot 访问 static public 目录下的静态资源报404解决办法

    1.前提是你没有修改spring boot 默认拦截路径,跟默认访问资源的目录。 在idea 设置中 把 compiler 下的 Buid project automatically 勾选上

    多场成像,快速提高机器视觉检测能力--51camera

    多阵列CMOS传感器与芯片级涂层二向色滤光片相结合,可在单次扫描中同时捕获明场、暗场和背光图像。 多场成像是一种新的成像技术,它可以在不同的光照条件下同时捕获多幅图像。再加上时间延迟积分(TDI),这种新兴的成像技术可以克服许多限制的传…

    关于VScode中使用yapf,更改settings.json文件中的column_limit没有作用的解决方法。

    目录 一、yapf一行中最大字符限制修改 二、忽略flake8对一行中最大字符限制警告 写在前面,不知道啥情况,按照常见的方式更改settings.json文件不起作用,如这些大佬的文章VSCode配置yapf python格式化 配置一行的长度 、vscode中使用yapf自动格…

    思科网络中如何配置扩展ACL协议

    一、什么是扩展ACL协议?有什么作用及配置方法? (1)扩展ACL(Extended Access Control List)协议是一种网络安全协议,用于在路由器或防火墙上实现对数据包的细粒度访问控制。与标准ACL相比&#…

    【Python】牛客网—软件开发-Python专项练习

    专栏文章索引:Python 1.(单选)下面哪个是Python中不可变的数据结构? A.set B.list C.tuple D.dict 可变数据类型:列表list[ ]、字典dict{ }、集合set{ }(能查询,也可更改)数据发生改…

    对象注入的几种方式

    ⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:JavaEE 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 注入对象 1. 属性注入2. 构造方法注入3. S…

    RabbitMQ详解与常见问题解决方案

    文章目录 什么是 RabbitMQ?RabbitMQ 和 AMQP 是什么关系?RabbitMQ 的核心组件有哪些?RabbitMQ 中有哪几种交换机类型?Direct Exchange(直连交换机)Topic Exchange(主题交换机)Headers Exchange(头部交换机)Fanout Exchange(广播交…

    (黑马出品_07)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    (黑马出品_07)SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术分布式搜索 今日目标1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric聚合语法1.2.5.小…