前言

java最新面试题(java基础、集合、多线程、jvm、锁、算法、CAS、Redis、数据库、mybatis、spring、springMVC、springBoot、微服务)

一.微服务

1.微服务什么

分布式多个模块,每一个模块都是一个单独的系统

2.你知道哪些RPC框架

RPC(Remote Procedure Call):远程过程调用

Dubbo 国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源
Spring Cloud 国外公司 2014 年对外开源的 RPC 框架

3.springCloud和Dubbo什么区别

定位不同: springCloud服务架构下的一站式解决方案;Dubbo主要用于服务的调用治理
生态环境不同: springCloud依靠spring平台,更完善;Dubbo相对匮乏。
调用方式不同: springCloud是采用Http协议远程调用接口一般是Rest风格比较灵活;Dubbo是采用Dubbo协议接口一般是Java的Service接口格式固定
简单来说: springCloud是品牌机,Dubbo是组装机。

4. SpringCloud由什么组成

Spring Cloud Eureka 服务注册发现
Spring Cloud Feign: 服务接口调用
Spring Cloud Ribbon 客户端负载均衡
Spring Cloud Hystrix 断路器。
Spring Cloud Zuul 服务网关
Spring Cloud Config: 分布式统一配置管理
等等。

二.Spring Cloud Eureka

1.Eureka包含几个组件

Eurake Client(客户端): 负责将这个服务的信息注册到Eureka Server中。
Eureka Server(服务端): 注册中心,里面一个注册表,保存各个服务所在的机器端口号

2.Eureka的工作原理

原理 系统中的其他服务使用Eureka的客户端将其连接到Eureka服务端中,并且保持心跳,这样工作人员可以通过Eureka服务端监控各个微服务是否运行正常。

3.说一下什么是Eureka的自我保护机制

如果Eureka服务端在一定时间内没有接收到某个微服务的心跳(默认90s),Eureka服务端进入自我保护模式,在该模式下Eureka服务端保护服务注册表中的信息,不在删除注册表中的数据,当网络故障恢复后,Eureka服务端节点自动退出自我保护模式

4.什么是CAP原则

CAP原则 又称CAP定理,指的是在一个分布式系统中,强一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
一致性(Consistency): 访问所有的节点,得到的数据结果都是一样的。
可用性(Availability): 保证每个请求不管成功或者失败都有响应
分区容错性(Partiton tolerance): 系统任意信息的丢失失败不会影响系统的继续运作。

5.都是服务注册中心,Eureka比Zookeeper好在哪里?

在分布式系统中分区容错性是必须要保证的,因此只能保证A或C,只能AP和CP。
我们在服务使用可以容忍注册中心返回分钟之前的注册信息,但是不能接受服务直接down掉不可用。
Zookeeper: 保证的是CP,当主机的节点发生网络故障了,会选取新的主节点,响应时间过长
Eureka: 保证的是AP,Eureka的节点都是平等的,不存在主机从机,因此Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像Zookeeper那样是整个注册中心瘫痪。

6.Nacos和Eureka的区别

共同点
①都支持服务的注册拉取
②都支持服务提供者以心跳检测判断是否健康(临时实例)。

不同点
nacos支持注册中心主动询问服务提供者的状态(非临时实例)。
nacos支持注册中心消息变更主动推送
③心跳不正常会被剔除(临时实例)。

三.Spring Cloud Ribbon

1.Ribbon的作用

主要功能是提供客户端软件负载均衡算法默认轮询算法

2.Ribbon的原理

Ribbon会从注册中心获取到服务的信息,然后通过轮询算法,从中选择一台机器

3.Ribbon和nginx区别

nginx 反向代理实现负载均衡,相当于从nginx服务器进行请求转发
Ribbon: 客户端负载均衡,全程都是客户端操作

四.Spring Cloud Feign

1.Feign的作用

Feign集成了Ribbon,Feign 是一个声明web服务客户端,这使得编写web服务客户端更容易,远程调用更加简单

2.SpringCloud有几种调用接口方式

Feign
RestTemplate

3.Ribbon和Feign调用服务的区别

Ribbon: 需要我们自己构建http请求然后通过RestTemplate去发给其他服务,比较繁琐。
Feign:需要自己构建Http请求,直接接口调用就行。

五.Spring Cloud Hystrix

1.说一说什么是服务雪崩

服务雪崩多个服务相互调用时,A调B,B调C,C调D等等更多调用,那么如果中间调用需要很长时间然后再去调用A,那么占用资源就越来越多,导致系统崩溃

2.Hystrix断路器是什么

防止服务雪崩的一个工具具有服务降级、服务熔断(@HystrixCommand(fallbackMethod = “hystrixById”) //失败了调用的方法)、服务隔离、监控等防止雪崩的技术

3.什么是服务降级、服务熔断、服务隔离

服务降级 当出现请求超时资源不足时(线程或者信号量),会进行服务降级,就是去返回fallback方法结果
服务熔断:失败率(网络故障或者超时造成)达到阈值自动触发降级,是一种特殊的降级。
服务隔离隔离的服务开启一个独立线程,这样在高并发情况下,也不会影响该服务。一般使用线程实现(还有信号量方式实现)。

4.服务降级和服务熔断的区别

区别: 降级每个请求都会发送过去,而熔断不一定,达到失败率,请求就不会再去发送了。请求出错时熔断返回的是fallback数据,而熔断则是一段时间不会去访问服务提供者。
比如
①降级:A调B,发送10个请求,即使每个请求都超时,也会去请求B。
②熔断:A调B,发送10个请求,失败设置为50%,如果5个请求失败,此时失败率到了50%,那么后面的5个请求就不会走到B。

六.Spring Cloud Zuul 和 Spring Cloud Gateway

1.什么是Zuul微服务网关

接收所有的请求,并且将不同的请求转发至不同的微服务模块

2.Zuul应用场景

过滤器
权限认证
③降级限流
安全

3.Gateway

功能强大丰富,性能好,维护性好,实现异步可以替代Zuul网关

七.Spring Cloud Config

1.什么是Spring Cloud Config

集中管理配置文件,不需要每个服务编写配置文件,服务会向配置中心拉取配置
实时刷新(需要spring cloud bus)。

八.Spring Cloud Alibaba Nacos

1.Nacos可以做什么?

注册中心和配置中心。

2.Eureka保证是AP,那么Nacos保证的是什么?默认是什么?

Nacos可以是AP也可以是CP。默认是AP

原文地址:https://blog.csdn.net/twotwo22222/article/details/129291109

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27598.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注