springcloud高频面试题

news/2024/10/31 5:26:22/

springcloud的组件有哪些

注册中心:euraka、nacos、zookeeper
注册中心及配置中心:nacos
远程调用:feign、dubbo
负载均衡:ribbon
服务熔断:hystrix、sentinel
网关:zuul、gateway
在这里插入图片描述
eureka注册中心的作用
在这里插入图片描述

△面试题:服务注册和发现是什么意思?springcloud是如何实现服务注册和发现的?

我们当时项目采用的eureka作为注册中心,这个也是spring cloud体系中的一个核心组件。

服务注册:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、ip、端口等等。

服务发现:消费者向eureka拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择一个发起调用。

服务监控:服务提供者会每隔30秒向eureka发送心跳,报告健康状态,如果eureka服务90秒没接收到心跳,从eureka中剔除

△面试题:nacos和eureka的区别

nacos和eureka的共同点

  • 都支持服务注册和服务拉取
  • 都是注册中心
  • 都支持服务提供者心跳方式做健康方式
    如果是临时实例,那么nacos和eureka的工作流程基本一致

nacos和eureka的不同点

  • nacos支持服务端主动检测提供者状态,临时实例采用心跳模式,非临时实例采用主动检测模式
  • 临时实例心跳不正常会被剔除,非临时实例心跳不正常不会被剔除
  • nacos支持服务列表变更的消息推送模式,服务列表能够及时更新
  • nacos集群默认采用AP模式,当集群中存在非临时实例时,才采用CP模式;eureka采用AP模式
  • nacos还支持配置中心;eureka仅仅是注册中心

nacos默认是临时实例,ephemeral配置默认为true
在这里插入图片描述

CAP理论

CAP即

  • Consistency(一致性)
  • Availability(可用性)
  • Partition tolerance(分区容忍性)
    轻松理解CAP理论

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

ribbon执行流程
在这里插入图片描述

ribbon负载均衡策略有哪些?

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

如何指定负载均衡策略?
通过实现IRule接口,然后再通过配置类或配置文件配置即可,有两种方式
在这里插入图片描述
什么是服务雪崩?怎么解决这个问题?
服务雪崩是指一个服务失败导致整条链路的服务都出现问题的情形。
在这里插入图片描述

服务降级
服务降级是服务自我保护或者保护下游服务的一种方式。用于确保服务不会受请求突增从而影响导致不可用。一般在实际开发中调用feign组件整合,实现服务降级逻辑。

feign示例
在这里插入图片描述
Hystrix熔断机制

Hystrix熔断机制,用于监控微服务调用情况,默认是关闭的。
开启需要在引导类上添加注解:@EnableCircuitBreaker,若默认检测到10秒内请求的失败率超过50%,就触发熔断机制。之后每隔5秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求。
在这里插入图片描述


http://www.ppmy.cn/news/92203.html

相关文章

真无线蓝牙耳机什么品牌比较好?五大高性价比真无线耳机推荐

与有线耳机相比,无线蓝牙耳机重量轻,便于携带。最重要的是避免了耳机线的麻烦,所以很受当代人的欢迎。什么牌子的蓝牙耳机好?哪个好用?本文中整理了五款市场上高性价比的无线蓝牙耳机,为您提供参考。 第一…

django 任务队列

1.安装celery 首先,确保你已经安装了Celery。在你的命令行中运行: pip install celery2.配置celery 在你的Django项目目录下(与settings.py同一级目录)创建一个celery.py文件。然后,添加以下内容: from…

《元宇宙之声》:Meta MCDH

为下一代建造未来就绪的校园。 在本期节目中,我们访问了香港路德会马锦明慈善基金马陈端喜纪念中学(MCDH)的陈婉玲校长,讨论了 MCDH 改革教育的愿景,通过培养年轻的创作者,让他们迈出进入 The Sandbox 的第…

ArcMap:第一届全国大学生GIS技能大赛(滁州学院)详解-下午题

目录 01 题目 02 数据 2.1 主要沟谷文件 2.2 DEM数字高程文件 2.3 气象站点数据 2.4 系统设计相关的DLL等文件 03 思路 3.1 作物生长条件的思路 3.1.1 对于条件1 3.1.2 对于条件2 3.1.3 对于条件3 3.1.4 对于条件4 3.2 水系的提取 3.3 种植面积的计算 04 实操 …

Ecclipse和IDEA如何在Tomcat下启动文件服务器

在Eclipse和IDEA中启动Tomcat下的文件服务器,可以通过以下步骤实现: 在Tomcat的webapps目录下创建一个文件夹,用于存放需要共享的文件。 在Tomcat的conf目录下找到server.xml文件,在该文件中添加以下代码,开启Tomcat的…

nignx虚拟主机头配置方法

目录 一、不同ip地址访问 二、不同端口访问 三、不同域名访问 一、不同ip地址访问 步骤一:配置虚拟主机头文件 cd /etc/nginx/conf.d/ 新建一个default2.conf touch default2.conf 配置default.cof 配置如下: Listen 192.168.59.137:80; access_log …

常见的几种设计模式——单例、工厂、代理、模板

文章目录 前言一、工厂模式1、介绍2、实现 二、单例模式1.介绍2.实现3、懒汉与饿汉 三、代理模式1、介绍2、实现3、AOP的底层实现 四、模板模式1、介绍2、实现 总结 前言 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过…

真无线蓝牙耳机什么牌子好?盘点五款质量好的蓝牙耳机

相信很多人都有过这样的经历,早 晚高峰像沙丁鱼般被挤在公交或地铁上,嘈杂的环境、工作的劳累让你只想听听音乐追追剧,给自己一些放松的时光。可拿出有线耳机却常常被挤掉,更有被扯到耳朵的时候。想换一款蓝牙耳机,但面…